Class: CoffeeTable::Key

Inherits:
Object
  • 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_hashObject



34
35
36
# File 'lib/coffee_table/key.rb', line 34

def code_hash
  @block_key
end

#elementsObject



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

#flagsObject



38
39
40
# File 'lib/coffee_table/key.rb', line 38

def flags
  @flags
end

#has_element?(element) ⇒ Boolean

Returns:



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

Returns:



26
27
28
# File 'lib/coffee_table/key.rb', line 26

def has_element_type?(element)
  matches?(element.to_s + "[", :match => :start)
end

#nameObject



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_sObject



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