Class: CoffeeTable::Key
- Inherits:
-
Object
show all
- Includes:
- Utility
- Defined in:
- lib/coffee_table/key.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Utility
#method_missing, #underscore
Constructor Details
#initialize(params = {}, *objects) ⇒ Key
Returns a new instance of Key.
14
15
16
17
18
19
20
|
# File 'lib/coffee_table/key.rb', line 14
def initialize(params = {}, *objects)
@block_key = params[:block_key] || ""
@flags = params[:flags] || {}
@options = params[:options] || {}
@name = "#{params[:name]}"
@elements = objects.flatten.map{|o| key_for_object(o)}
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
in the class CoffeeTable::Utility
Class Method Details
.parse(string) ⇒ Object
7
8
9
10
11
12
|
# File 'lib/coffee_table/key.rb', line 7
def self.parse(string)
elements = string.split("|", -1).map{|e| decode_element(e) }
key = Key.new(name: elements[0], block_key: elements[1], flags: Hash[elements.last.split("&").map{|kv| [kv.split("=")[0].to_sym, kv.split("=")[1]]}])
key.elements = elements[2..-2]
key
end
|
Instance Method Details
#<=>(o) ⇒ Object
57
58
59
|
# File 'lib/coffee_table/key.rb', line 57
def <=>(o)
self.to_s <=> o.to_s
end
|
#add_flag(flags) ⇒ Object
42
43
44
|
# File 'lib/coffee_table/key.rb', line 42
def add_flag(flags)
@flags.merge!(flags)
end
|
#code_hash ⇒ Object
34
35
36
|
# File 'lib/coffee_table/key.rb', line 34
def code_hash
@block_key
end
|
#elements ⇒ Object
49
50
51
|
# File 'lib/coffee_table/key.rb', line 49
def elements
@elements
end
|
#elements=(elements) ⇒ Object
53
54
55
|
# File 'lib/coffee_table/key.rb', line 53
def elements=(elements)
@elements = Array(elements)
end
|
#flags ⇒ Object
38
39
40
|
# File 'lib/coffee_table/key.rb', line 38
def flags
@flags
end
|
#has_element?(element) ⇒ Boolean
22
23
24
|
# File 'lib/coffee_table/key.rb', line 22
def has_element?(element)
matches?(element.to_s)
end
|
#has_element_type?(element) ⇒ Boolean
26
27
28
|
# File 'lib/coffee_table/key.rb', line 26
def has_element_type?(element)
matches?(element.to_s + "[", :match => :start)
end
|
#name ⇒ Object
30
31
32
|
# File 'lib/coffee_table/key.rb', line 30
def name
@name
end
|
#remove_flag(key) ⇒ Object
45
46
47
|
# File 'lib/coffee_table/key.rb', line 45
def remove_flag(key)
@flags.delete key
end
|
#to_s ⇒ Object
61
62
63
|
# File 'lib/coffee_table/key.rb', line 61
def to_s
[encode_element(@name), encode_element(@block_key), @elements.map{|e| encode_element(e) }, encode_element(@flags.map{|k,v| "#{k}=#{v}"}.join("&"))].flatten.join("|")
end
|