Sha256: 3947b7e694e58b8646a031d88c9bbaf601a362644b6db122e6ec2a547128dd58
Contents?: true
Size: 916 Bytes
Versions: 9
Compression:
Stored size: 916 Bytes
Contents
require 'yaml' class Hash def method_missing(m, *args, &block) if m.to_s =~ /(.*)=$/ # was assignment self[$1] = args[0] else fetch(m.to_s, nil) end end def recursive_merge(h) self.merge!(h) {|key, _old, _new| if _old.class == Hash then _old.recursive_merge(_new) else _new end } end end class Toolchain attr_reader :toolchain def initialize(toolchain_file) @toolchain = YAML::load(File.open(toolchain_file)) if @toolchain.base @based_on = @toolchain.base else @based_on = "base" end basechain = YAML::load(File.open(File.join(File.dirname(__FILE__),"#{@based_on}.json"))) @toolchain = basechain.recursive_merge(@toolchain) end def method_missing(m, *args, &block) if @toolchain[m.to_s] self.class.send(:define_method, m) { @toolchain[m.to_s] } @toolchain[m.to_s] else return super end end end
Version data entries
9 entries across 9 versions & 1 rubygems