class Blackbriar::Node

Attributes

key[R]
value[R]
value_provider[R]

Public Class Methods

new(hash, value_provider) click to toggle source
# File lib/blackbriar/node.rb, line 3
def initialize(hash, value_provider)
  @key, @value = hash.to_a.first
  @value_provider = value_provider
end

Public Instance Methods

resolve() click to toggle source
# File lib/blackbriar/node.rb, line 10
def resolve
  if value.is_a? String
    {key => resolve_string(value)}
  elsif value.is_a? Numeric
    {key => value}
  elsif value.is_a? Time
    {key => value}
  elsif value.is_a? Hash
    {key => resolve_hash(value)}
  elsif value.is_a? Array
    {key => resolve_array(value)}
  end
end
resolve_array(array) click to toggle source
# File lib/blackbriar/node.rb, line 46
def resolve_array(array)
  array.map {|item| resolve_array_item(item)}
end
resolve_array_item(item) click to toggle source
# File lib/blackbriar/node.rb, line 24
def resolve_array_item(item)
  if item.is_a? String
    resolve_string(item)
  elsif value.is_a? Numeric
    {key => value}
  elsif value.is_a? Time
    {key => value}
  elsif item.is_a? Hash
    resolve_hash item
  elsif item.is_a? Array
    resolve_array(item)
  end
end
resolve_hash(hash) click to toggle source
# File lib/blackbriar/node.rb, line 42
def resolve_hash(hash)
  hash.to_a.map {|item| self.class.new([item].to_h, value_provider).resolve}.reduce(&:merge)
end
resolve_string(string) click to toggle source
# File lib/blackbriar/node.rb, line 38
def resolve_string(string)
  value_provider.resolve(string)
end