URLS: - http://raa.ruby-lang.org/project/arrayfields/ - http://www.codeforpeople.com/lib/ruby/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.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