Class: ListTool::ListerData

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/list_tool/lister_data.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash = {}) ⇒ ListerData

Returns a new instance of ListerData.

Raises:

  • (ArgumentError)


8
9
10
11
12
13
14
15
16
17
18
# File 'lib/list_tool/lister_data.rb', line 8

def initialize(hash = {})
  raise ArgumentError, 'argument is not a hash' unless hash.respond_to?(:to_hash)

  hash['lists'] ||= []
  raise ArgumentError, 'incorrect data given' unless hash['lists'].respond_to?(:to_ary)

  @lists = []
  hash['lists'].each { |list_data| add_list(list_data) }

  set_default_list(hash['default']) if hash['default']
end

Instance Attribute Details

#default_listObject (readonly)

Returns the value of attribute default_list.



6
7
8
# File 'lib/list_tool/lister_data.rb', line 6

def default_list
  @default_list
end

#listsObject (readonly)

Returns the value of attribute lists.



6
7
8
# File 'lib/list_tool/lister_data.rb', line 6

def lists
  @lists
end

Instance Method Details

#add_list(data) ⇒ Object



28
29
30
31
32
# File 'lib/list_tool/lister_data.rb', line 28

def add_list(data)
  list = List.new(data)
  @lists << list
  list
end

#clear_list(index) ⇒ Object



40
41
42
43
# File 'lib/list_tool/lister_data.rb', line 40

def clear_list(index)
  return nil if @lists[index] == nil
  @lists[index].clear!
end

#delete_list(index) ⇒ Object



34
35
36
37
38
# File 'lib/list_tool/lister_data.rb', line 34

def delete_list(index)
  list = @lists.delete_at(index)
  @default_list = nil if @default_list == list
  list
end

#eachObject



24
25
26
# File 'lib/list_tool/lister_data.rb', line 24

def each
  @lists.each { |list| yield(list) }
end

#inspectObject



20
21
22
# File 'lib/list_tool/lister_data.rb', line 20

def inspect
  "#<#{self.class}:0x#{self.__id__.to_s(16)}, lists: [#{lists.map(&:name).join(', ')}], default_list: #{default_list.name}>"
end

#move_list(index, direction) ⇒ Object



55
56
57
58
59
60
61
62
63
64
# File 'lib/list_tool/lister_data.rb', line 55

def move_list(index, direction)
  case direction
  when :up
    return unless (1...@lists.length).include?(index)
    @lists[index], @lists[index-1] = @lists[index-1], @lists[index]
  when :down
    return unless (0...(@lists.length-1)).include?(index)
    @lists[index], @lists[index+1] = @lists[index+1], @lists[index]
  end
end

#rename_list(index, name) ⇒ Object



45
46
47
48
# File 'lib/list_tool/lister_data.rb', line 45

def rename_list(index, name)
  return nil if @lists[index] == nil
  @lists[index].rename(name)
end

#set_default_list(index) ⇒ Object



50
51
52
53
# File 'lib/list_tool/lister_data.rb', line 50

def set_default_list(index)
  return nil if @lists[index] == nil
  @default_list = @lists[index]
end

#to_jsonObject



66
67
68
69
70
# File 'lib/list_tool/lister_data.rb', line 66

def to_json
  hash = {lists: @lists}
  hash.merge!(default: @lists.index(@default_list)) if @default_list
  hash.to_json
end