Module: Pacer::FunctionResolver
- Defined in:
- lib/pacer/function_resolver.rb
Class Method Summary collapse
- .clear_cache ⇒ Object
- .filter_map ⇒ Object
- .function(args) ⇒ Object
- .lookup_path ⇒ Object
- .side_effect_map ⇒ Object
- .symbolize_module_name(name) ⇒ Object
- .transform_map ⇒ Object
- .visitor_map ⇒ Object
Class Method Details
.clear_cache ⇒ Object
4 5 6 |
# File 'lib/pacer/function_resolver.rb', line 4 def clear_cache @lookup_path = nil end |
.filter_map ⇒ Object
27 28 29 |
# File 'lib/pacer/function_resolver.rb', line 27 def filter_map Hash[Pacer::Filter.constants.map { |name| [symbolize_module_name(name), Pacer::Filter.const_get(name)] }] end |
.function(args) ⇒ Object
8 9 10 11 12 13 14 15 16 |
# File 'lib/pacer/function_resolver.rb', line 8 def function(args) lookup_path.each do |key, map, extension| if value = args[key] function = map.fetch(value, value.is_a?(Module) && value) return [function, extension] if function end end [] end |
.lookup_path ⇒ Object
18 19 20 21 22 23 24 25 |
# File 'lib/pacer/function_resolver.rb', line 18 def lookup_path @lookup_path ||= [ [:filter, filter_map, nil], [:transform, transform_map, nil], [:side_effect, side_effect_map, Pacer::Core::SideEffect], [:visitor, visitor_map] ] end |
.side_effect_map ⇒ Object
31 32 33 |
# File 'lib/pacer/function_resolver.rb', line 31 def side_effect_map Hash[Pacer::SideEffect.constants.map { |name| [symbolize_module_name(name), Pacer::SideEffect.const_get(name)] }] end |
.symbolize_module_name(name) ⇒ Object
43 44 45 |
# File 'lib/pacer/function_resolver.rb', line 43 def symbolize_module_name(name) name.to_s.sub(/(Filter|SideEffect|Transform)$/, '').gsub(/([a-z])([A-Z])/, "\\1_\\2").downcase.to_sym end |