Class: Cubicle::DataLevel
- Inherits:
-
OrderedHash
- Object
- OrderedHash
- Cubicle::DataLevel
show all
- Defined in:
- lib/cubicle/data_level.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(name = "Unknown Level", initial_data = {}) ⇒ DataLevel
Returns a new instance of DataLevel.
4
5
6
7
|
# File 'lib/cubicle/data_level.rb', line 4
def initialize(name = "Unknown Level", initial_data = {})
@name = name
merge!(initial_data.stringify_keys)
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &block) ⇒ Object
52
53
54
55
56
|
# File 'lib/cubicle/data_level.rb', line 52
def method_missing(sym,*args,&block)
return self[sym.to_s[0..-2]] = args[0] if sym.to_s =~ /.*=$/
return self[sym] if self.keys.include?(sym.to_s)
missing_member_default
end
|
Instance Attribute Details
#missing_member_default ⇒ Object
Returns the value of attribute missing_member_default.
10
11
12
|
# File 'lib/cubicle/data_level.rb', line 10
def missing_member_default
@missing_member_default
end
|
#name ⇒ Object
Returns the value of attribute name.
9
10
11
|
# File 'lib/cubicle/data_level.rb', line 9
def name
@name
end
|
Instance Method Details
#[](key) ⇒ Object
14
15
16
17
18
|
# File 'lib/cubicle/data_level.rb', line 14
def [](key)
key = key.to_s
self[key] = [] unless self.keys.include?(key)
super(key)
end
|
#[]=(key, val) ⇒ Object
20
21
22
|
# File 'lib/cubicle/data_level.rb', line 20
def []=(key,val)
super(key.to_s,val)
end
|
#flatten(member_name = nil, opts = {}, &block) ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/cubicle/data_level.rb', line 28
def flatten(member_name = nil, opts={}, &block)
default_val = opts[:default] || @missing_member_default || 0
self.inject([]) do |output, (key, data)|
data.inject(output) do |flattened, value|
value.missing_member_default = default_val if value.respond_to?(:missing_member_default)
if block_given?
flat_val = block.arity == 1 ? (yield value) : (value.instance_eval(&block))
end
flat_val ||= value[member_name] if member_name && value.include?(member_name)
flat_val ||= default_val
flattened << flat_val
end
end
end
|
#include?(key) ⇒ Boolean
24
25
26
|
# File 'lib/cubicle/data_level.rb', line 24
def include?(key)
super(key.to_s)
end
|
#leaf_level? ⇒ Boolean
47
48
49
50
|
# File 'lib/cubicle/data_level.rb', line 47
def leaf_level?
return self.length < 1 ||
!self[self.keys[0]].is_a?(Cubicle::DataLevel)
end
|