Module: DataSpec::Helpers

Defined in:
lib/data_spec/helpers.rb

Class Method Summary collapse

Class Method Details

.at_path(data, path) ⇒ Object



71
72
73
74
75
76
77
78
# File 'lib/data_spec/helpers.rb', line 71

def self.at_path data, path
  return data if path.nil? || path.empty?
  path.split('/').each do |key| 
    key = key.to_i if data.is_a? Array
    data = data[key] || data[key.to_sym]
  end  
  data
end

.evaluate(string) ⇒ Object



48
49
50
# File 'lib/data_spec/helpers.rb', line 48

def self.evaluate string
  eval(string)
end

.parse(yaml) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/data_spec/helpers.rb', line 54

def self.parse yaml
  # `code` is more readable, but not parsable, for our purposes we're converting it to $
  unrendered = YAML.load(yaml.gsub("`", "$"))

  if unrendered.is_a?(Array) || unrendered.is_a?(Hash)
    rendered = unrendered.tree_walk_with_self do |(k, v), h|
      if v =~ /^\$(.+)\$$/     
        h[k] = self.evaluate($1)        
      end
    end
  elsif unrendered.is_a?(String) && unrendered =~ /^\$(.+)\$$/
    rendered = self.evaluate($1)
  else
    rendered = unrendered
  end
  rendered
end

.remember(varname, data) ⇒ Object



51
52
53
# File 'lib/data_spec/helpers.rb', line 51

def self.remember varname, data
  instance_variable_set(varname, data)
end