Class: Array
Overview
has added a class generator when the fields are known apriori.
Direct Known Subclasses
Attributes::List, Main::Parameter::List, Main::Parameter::Table, Main::Usage, Mode::List, PseudoHash
Instance Attribute Summary
Attributes included from Fieldable
Class Method Summary collapse
Methods included from Fieldable
Class Method Details
.fields(*fields, &block) ⇒ Object
359 360 361 362 |
# File 'lib/main/arrayfields.rb', line 359 def fields *fields, &block (( array = new(&block) )).fields = fields.map{|x| Enumerable === x ? x.to_a : x}.flatten array end |
.struct(*fields) ⇒ Object
325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 |
# File 'lib/main/arrayfields.rb', line 325 def struct *fields fields = fields.flatten Class.new(self) do include ArrayFields const_set :FIELDS, ArrayFields::FieldSet.new(fields) fields.each do |field| field = field.to_s if field =~ %r/^[a-zA-Z_][a-zA-Z0-9_]*$/ begin module_eval <<-code def #{ field } *a a.size == 0 ? self['#{ field }'] : (self.#{ field } = a.shift) end def #{ field }= value self['#{ field }'] = value end code rescue SyntaxError :by_ignoring_it end end end def initialize *a, &b super ensure @fieldset = self.class.const_get :FIELDS end def self.[] *elements array = new array.replace elements array end end end |