autoboard/src/autoboard/template.cr
2023-01-12 00:17:10 +01:00

50 lines
1.2 KiB
Crystal

require "./list"
require "yaml"
module AutoBoard
class Template
property name : String
property lists : Array(List)
def initialize(@name : String)
end
def load_from_yaml(filepath : String)
data = YAML.load_file(filepath)
@name = data["name"]
@lists = data["lists"].map { |list| List.new(list["name"], list["label"]) }
end
def save_to_yaml(filepath : String)
data = { "name" => @name, "lists" => @lists.map { |list| { "name" => list.name, "label" => list.label } } }
File.write(filepath, data.to_yaml)
end
def add_list(list : List)
@lists << list
end
def remove_list(list_name : String)
@lists.delete_if { |list| list.name == list_name }
end
def inspect
puts "Template name: #{@name}"
puts "Lists:"
@lists.each do |list|
puts "- #{list.name} (Label: #{list.label})"
end
end
def self.create_template(template_name : String)
template = Template.new(template_name)
template.save_to_yaml("~/.config/autoboard/templates/#{template_name}.yml")
end
def self.destroy_template(template_name : String)
File.delete("~/.config/autoboard/templates/#{template_name}.yml")
end
end
end