Class: TogoStanza::Stanza::ExpressionMap
- Inherits:
-
HashWithIndifferentAccess
- Object
- HashWithIndifferentAccess
- TogoStanza::Stanza::ExpressionMap
- Defined in:
- lib/togostanza/stanza/expression_map.rb
Defined Under Namespace
Modules: Macro
Instance Method Summary collapse
Instance Method Details
#resolve(context, key, params) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/togostanza/stanza/expression_map.rb', line 22 def resolve(context, key, params) val = self[key] return val unless val.respond_to?(:call) args = val.parameters.reject {|type, _| type == :block }.map {|_, key| params[key] } context.instance_exec(*args, &val) end |
#resolve_all_in_parallel(context, params) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/togostanza/stanza/expression_map.rb', line 36 def resolve_all_in_parallel(context, params) Parallel.map(self, in_threads: 16) {|k, v| [k, resolve(context, k, params)] }.each_with_object({}) {|(k, v), memo| memo[k] = v } end |