class TogoStanza::Stanza::ExpressionMap

Public Instance Methods

resolve(context, key, params) click to toggle source
# 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) click to toggle source
# 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