Class: Accord::AdapterLookup

Inherits:
BaseLookup show all
Defined in:
lib/accord/adapter_registry.rb

Instance Attribute Summary

Attributes inherited from BaseLookup

#extendors, #hash, #order

Instance Method Summary collapse

Methods inherited from BaseLookup

#[], #[]=, #delete, #initialize, #partial

Constructor Details

This class inherits a constructor from Accord::BaseLookup

Instance Method Details

#all(required, provided) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/accord/adapter_registry.rb', line 14

def all(required, provided)
  extendor = extendors.get(provided)
  return {} unless extendor
  hashes = hash.select_expansions(required + [provided]) do |key|
    next key.ancestors.reverse if required.include?(key)
    extendor.current.reverse
  end
  hashes.inject({}) { |result, h| result.merge(h) }
end

#first(required, provided, name = '') ⇒ Object



6
7
8
9
10
11
12
# File 'lib/accord/adapter_registry.rb', line 6

def first(required, provided, name='')
  extendor = extendors.get(provided)
  return unless extendor
  return unless result = hash.detect_expansion(required) { |s| s.ancestors }
  available = extendor.compact_map { |i| result[i] }
  (available.detect { |h| h[name] } || {})[name]
end