50 lines
1.2 KiB
Crystal
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
|