Class: ListTool::Lister
- Inherits:
-
Object
show all
- Defined in:
- lib/list_tool/lister.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize ⇒ Lister
Returns a new instance of Lister.
4
5
6
|
# File 'lib/list_tool/lister.rb', line 4
def initialize
@data = Data.new
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/list_tool/lister.rb', line 57
def method_missing(name, *args, &block)
if name =~ /_list$/
object = @data
elsif name =~ /_item$/
object = if args[-1].is_a?(Hash) && args[-1].has_key?(:list)
return nil if @data.lists[ args[-1][:list] ].nil?
index = args.pop()[:list]
@data.lists[index]
else
raise NoDefaultListError, "default list not set" if @data.default_list.nil?
@data.default_list
end
else
super
end
result = object.send(name, *args, &block)
return nil if result.nil?
self
rescue NoMethodError => e
raise NoMethodError, "undefined method '#{name.to_s}' for #{self.inspect}"
end
|
Class Method Details
.from_hash(hash) ⇒ Object
12
13
14
15
16
|
# File 'lib/list_tool/lister.rb', line 12
def self.from_hash(hash)
lister = Lister.new
lister.instance_variable_set(:@data, Data.new(hash))
lister
end
|
.from_json(json) ⇒ Object
18
19
20
21
|
# File 'lib/list_tool/lister.rb', line 18
def self.from_json(json)
data = JsonParser.parse(json)
from_hash(data)
end
|
Instance Method Details
#inspect ⇒ Object
8
9
10
|
# File 'lib/list_tool/lister.rb', line 8
def inspect
"#<#{self.class}:0x#{self.__id__.to_s(16)}>"
end
|
#list(index = nil) ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/list_tool/lister.rb', line 41
def list(index=nil)
list = if index
return nil if @data.lists[index].nil?
@data.lists[index]
else
raise NoDefaultListError, "default list not set" if @data.default_list.nil?
@data.default_list
end
out = {name: list.name, items: []}
list.items.each do |item|
out[:items] << item.text
end
out
end
|
#lists ⇒ Object
33
34
35
36
37
38
39
|
# File 'lib/list_tool/lister.rb', line 33
def lists
out = {}
@data.each do |list|
out[list.name] = list.items.count
end
out
end
|
#save(filename) ⇒ Object
29
30
31
|
# File 'lib/list_tool/lister.rb', line 29
def save(filename)
FileManager.save(filename, @data)
end
|