class Wedge::Plugins::Factory

Public Class Methods

new() click to toggle source
# File lib/wedge/plugins/factory.rb, line 6
def initialize
  class_store[:stubs] ||= IndifferentHash.new
end

Public Instance Methods

[](name, data = {}) click to toggle source
# File lib/wedge/plugins/factory.rb, line 14
def [] name, data = {}
  data = IndifferentHash.new(data)
  store_data = IndifferentHash.new class_store[:stubs][name].deep_dup
  HashObject.new store_data.merge data
end
stub(data, name, keys = false) click to toggle source
# File lib/wedge/plugins/factory.rb, line 10
def stub data, name, keys = false
  class_store[:stubs][name] = parse data, keys
end

Private Instance Methods

parse(data, keys = false) click to toggle source
# File lib/wedge/plugins/factory.rb, line 22
def parse data, keys = false
  data        = data.deep_dup
  parsed_data = data.to_h if data.respond_to? :to_h
  parsed_data = JSON.parse data.to_json

  keys.each do |k, v|
    d = data.kind_of?(Hash) ? data[k] : data.send(k)
    parsed_data[k] = parse d, v
  end if keys

  parsed_data
end