Sha256: eb94c8197e7b8da3308b20673bc470298ac37c7c5842a89fb6c3e5470bc4bf2c
Contents?: true
Size: 1.52 KB
Versions: 1
Compression:
Stored size: 1.52 KB
Contents
require 'nano/kernel/set_from' module Kernel # Assign via setter methods using a hash (or assoc array). # # object.set_with( :a => 1, :b => 2 ) # object.set_with( :a, 1, :b, 2 ) # object.set_with( [:a, 1], [:b, 2] ) # object.set_with( *[[:a, 1], [:b, 2]] ) # # These are all the same as doing: # # object.a = 1 # object.b = 2 # # The array forms gaurentees order of operation. # def set_with(*args) harg = args.last.is_a?(Hash) ? args.pop : {} unless args.empty? # if not assoc array, eg. [ [], [], ... ] # preserves order of opertation unless args[0].is_a?(Array) i = 0; a = [] while i < args.size a << [ args[i], args[i+1] ] i += 2 end args = a end end args.each do |k,v| self.send( "#{k}=", v ) #if respond_to?("#{k}=") end harg.each do |k,v| self.send( "#{k}=", v ) #if respond_to?("#{k}=") end end end # _____ _ # |_ _|__ ___| |_ # | |/ _ \/ __| __| # | | __/\__ \ |_ # |_|\___||___/\__| # =begin test require 'test/unit' class TCKernel < Test::Unit::TestCase Customer = Struct.new( "Customer", :name, :address, :zip ) def test_set_with bob = Customer.new() sethash = { :name => "Bob Sawyer", :address => "123 Maple, Anytown NC", :zip => 12345 } bob.set_with(sethash) assert_equal("Bob Sawyer", bob.name) assert_equal("123 Maple, Anytown NC", bob.address) assert_equal(12345, bob.zip) end end =end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
facets-0.9.0 | lib/nano/kernel/set_with.rb |