URLS: - http://raa.ruby-lang.org/project/arrayfields/ - http://www.codeforpeople.com/lib/ruby/arrayfields/ - http://rubyforge.org/projects/arrayfields/ SYNOPSIS: allow keyword access to arrays: require ''arrayfields'' fields = ''name'', ''age'' row = [ ''bob'', 30 ] row.fields = fields row[ ''name'' ] #=> ''bob'' row.indices ''name'', ''age'' #=> [ ''bob'', 30 ] assigning to un-named fields appends: stack = [] stack.fields = %w(zero one) stack[''zero''] = ''zero'' stack[''one''] = ''one'' stack #=> [ ''zero'', ''one'' ] useful for database work: relation = pgconn.query sql relation.size #=> 65536 # yikes! do we really want to re-construct a hash for for each tuple when # we already have Arrays? fields = %w(ssn name position) table.each{|tuple| tuple.fields = fields} tuples[34578][''ssn''] #=> 574865032 LIST OF OVERRIDDEN METHODS: - Array#[] - Array#[] - Array#at - Array#delete_at - Array#fill - Array#values_at - Array#indices - Array#indexes - Array#slice - Array#slice! LIST OF NEW Array METHODS: - Array#fields - Array#each_with_field DOCS/USAGE/SAMPLE: - lib/arrayfields.rb - test/arrayfields.rb AUTHOR: ara.t.howard@noaa.gov HISTORY: 3.6.0: - made string/symbol keys interchangeable list = [0, 1, 2] list.fields = %w( a b c ) p list[''a''] #=> 0 p list[:a] #=> 0 3.5.0: - added more hash-like methods - update - replace - invert 3.4.0: - added FieldedArray[] ctor - added methods to make Arrays with fields set behave more closely to Hashes - each_pair - each_key - each_value - fetch - has_key? - member? - key? - has_value? - value? - keys? - store - values 3.3.0: - added gemspec file - thnx Assaph Mehr - added FieldedArray proxy class which minimizes modifications to class Array and allow ArrayFields to work (potientially) other arraylike object. thnks Sean O''Dell - added ArrayFields#to_hash method - this seems like an obvious one to add! - remedied bug where using append feature of assigning with unknow field appedended but did not append to acutal fields - added samples - created rubyforge accnt @ http://rubyforge.org/projects/arrayfields/ 3.2.0: - precedence fix in many methods - thnx. nobu - test for #slice! were not being run - corrected - added test for appeding via "a[''new_field''] = 42" 3.1.0: - added FieldSet class to reduce ram - thnx. Kirk Haines for profiliing memory and prompting this change - interface changed every so slightly so a.fields = ''a'', ''b'', ''c'' is not allowed. use a.fields = %w(a b c) or a.fields = [''a'', ''b'', ''c''] 3.0.0: - added unit tests -a -- to foster inner awareness, introspection, and reasoning is more efficient than meditation and prayer. - h.h. the 14th dali lama