Sha256: ea6f1f900d23985b3d7e8a25e8b405ee2ffb4b6fe26a60e02dff98672a6e99c2
Contents?: true
Size: 895 Bytes
Versions: 2
Compression:
Stored size: 895 Bytes
Contents
class Array def to_object(subject = nil) subject = Object.new if subject.nil? self.each { |item| add_reader_for(subject, item, nil) } subject end def to_objects(&blk) records = blk.call return [] if records.empty? records.map { |record| create_object_for_this_record(record) } end private def create_object_for_this_record(record) result = Object.new self.each_with_index do |property_name, index| value = get_the_value(record, index) add_reader_for(result, property_name, value) end result end def get_the_value(value, index) return value unless value.kind_of?(Array) value[index] end def add_reader_for(result, property_name, this_value) result.instance_variable_set("@#{property_name}", this_value) result.instance_eval(" class << self attr_accessor :#{property_name} end") end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
subtle-0.3.8 | lib/subtle/array_to_objects.rb |
subtle-0.3.6 | lib/subtle/array_to_objects.rb |