Class: Fib::ElementPackage
- Inherits:
-
Object
- Object
- Fib::ElementPackage
- Defined in:
- lib/fib/element_package.rb
Instance Attribute Summary collapse
-
#actions ⇒ Object
readonly
Returns the value of attribute actions.
-
#keys ⇒ Object
readonly
Returns the value of attribute keys.
-
#mutex ⇒ Object
readonly
Returns the value of attribute mutex.
-
#origin_elements ⇒ Object
readonly
Returns the value of attribute origin_elements.
-
#urls ⇒ Object
readonly
Returns the value of attribute urls.
Class Method Summary collapse
Instance Method Summary collapse
- #+(package) ⇒ Object
- #build ⇒ Object
- #find_action(controller, action) ⇒ Object
- #find_key(k) ⇒ Object
- #find_url(url) ⇒ Object
- #finish_build ⇒ Object
-
#initialize(elements = []) ⇒ ElementPackage
constructor
A new instance of ElementPackage.
- #lazy_build ⇒ Object
- #mset(*elements) ⇒ Object (also: #append)
- #rebuild ⇒ Object
- #set(element) ⇒ Object (also: #<<)
Constructor Details
#initialize(elements = []) ⇒ ElementPackage
Returns a new instance of ElementPackage.
12 13 14 15 16 17 18 19 20 |
# File 'lib/fib/element_package.rb', line 12 def initialize elements=[] @keys = {} @actions = {} @urls = Fib::Trie.new('.', nil) @origin_elements = elements.group_by{ |e| e.type } rebuild end |
Instance Attribute Details
#actions ⇒ Object (readonly)
Returns the value of attribute actions.
10 11 12 |
# File 'lib/fib/element_package.rb', line 10 def actions @actions end |
#keys ⇒ Object (readonly)
Returns the value of attribute keys.
10 11 12 |
# File 'lib/fib/element_package.rb', line 10 def keys @keys end |
#mutex ⇒ Object (readonly)
Returns the value of attribute mutex.
10 11 12 |
# File 'lib/fib/element_package.rb', line 10 def mutex @mutex end |
#origin_elements ⇒ Object (readonly)
Returns the value of attribute origin_elements.
10 11 12 |
# File 'lib/fib/element_package.rb', line 10 def origin_elements @origin_elements end |
#urls ⇒ Object (readonly)
Returns the value of attribute urls.
10 11 12 |
# File 'lib/fib/element_package.rb', line 10 def urls @urls end |
Class Method Details
.merge(*packages) ⇒ Object
118 119 120 |
# File 'lib/fib/element_package.rb', line 118 def merge *packages new (packages.reduce([]) { |a, e| a + e.origin_elements.values.flatten }).uniq end |
Instance Method Details
#+(package) ⇒ Object
42 43 44 |
# File 'lib/fib/element_package.rb', line 42 def + package self.class.new (origin_elements.values.flatten + package.origin_elements.values.flatten).uniq end |
#build ⇒ Object
61 62 63 64 65 |
# File 'lib/fib/element_package.rb', line 61 def build build_keys build_actions build_urls end |
#find_action(controller, action) ⇒ Object
51 52 53 54 |
# File 'lib/fib/element_package.rb', line 51 def find_action controller, action lazy_build actions&.dig(controller.to_s, action.to_s) end |
#find_key(k) ⇒ Object
46 47 48 49 |
# File 'lib/fib/element_package.rb', line 46 def find_key k lazy_build keys[k.to_sym] end |
#find_url(url) ⇒ Object
56 57 58 59 |
# File 'lib/fib/element_package.rb', line 56 def find_url url lazy_build urls&.dig(*url.gsub(/^\/|\/$/, "").split(/\//)) end |
#finish_build ⇒ Object
74 75 76 |
# File 'lib/fib/element_package.rb', line 74 def finish_build @mutex = false end |
#lazy_build ⇒ Object
67 68 69 70 71 72 |
# File 'lib/fib/element_package.rb', line 67 def lazy_build return if !mutex build finish_build end |
#mset(*elements) ⇒ Object Also known as: append
33 34 35 36 37 38 |
# File 'lib/fib/element_package.rb', line 33 def mset *elements elements.flatten.each do |e| next unless e.is_a?(Fib::Element) set e end end |
#rebuild ⇒ Object
78 79 80 |
# File 'lib/fib/element_package.rb', line 78 def rebuild @mutex = true end |
#set(element) ⇒ Object Also known as: <<
22 23 24 25 26 27 28 29 |
# File 'lib/fib/element_package.rb', line 22 def set element raise ParameterIsNotValid, "param must be Element" unless element.is_a?(Fib::Element) origin_elements[element.type] ||= [] origin_elements[element.type] |= [element] rebuild end |