module SheepAst::LetRecord

Let include module

Public Instance Methods

record(pair, datastore, store_id, k_or_v, value = nil, **options) click to toggle source
# File lib/sheep_ast/action/let_record.rb, line 47
def record(pair, datastore, store_id, k_or_v, value = nil, **options)
  if value.nil?
    T.unsafe(self).record_v(pair, datastore, store_id, k_or_v, **options)
  else
    T.unsafe(self).record_kv(pair, datastore, store_id, T.cast(k_or_v, Symbol), value, **options)
  end
  return T.unsafe(self).ret(**options)
end
record_kv(pair, datastore, store_id, key_id, value_id, **options)
Alias for: record_kv_by_id
record_kv_by_id(pair, datastore, store_id, key_id, value_id, **options) click to toggle source
# File lib/sheep_ast/action/let_record.rb, line 69
def record_kv_by_id(pair, datastore, store_id, key_id, value_id, **options)
  value = nil
  if value_id.is_a? Enumerable
    value = []
    value_id.each { |elem| value << pair[elem] }
  else
    value = pair[value_id]
  end
  # value = data_shaping(value, options)

  ns = T.unsafe(self).w_or_wo_ns(pair, **options)
  key = pair[key_id].to_s

  namespace_sep = T.unsafe(self).namespace_separator(**options)

  key = "#{ns}#{namespace_sep}#{key}" if options[:namespace_key]
  value = "#{ns}#{namespace_sep}#{value}" if options[:namespace_value]

  ldebug? and ldebug "store => '#{store_id}', key_id => '#{key_id}', value_id => '#{value_id}', "\
    "pair_data => '#{pair}', key_id => '#{key_id}', value_id => '#{value_id}', "\
    "key => '#{key}', value => '#{value}'"

  datastore.assign(store_id, value, key)
end
Also aliased as: record_kv
record_v(pair, datastore, store_id, value_id, **options) click to toggle source
# File lib/sheep_ast/action/let_record.rb, line 108
def record_v(pair, datastore, store_id, value_id, **options)
  ns = T.unsafe(self).w_or_wo_ns(pair, **options)
  value = nil
  if value_id.is_a? Enumerable
    value = []
    value_id.each { |elem| value << pair[elem] }
  else
    value = pair[value_id]
  end

  namespace_sep = T.unsafe(self).namespace_separator(**options)
  value = "#{ns}#{namespace_sep}#{value}" if options[:namespace_value]
  ldebug? and ldebug "store => '#{store_id}', value_id => '#{value_id}', "\
    "pair_data => '#{pair}', value_id => '#{value_id}', "\
    "value => '#{value}'"
  datastore.assign(store_id, value)
end