Arrayfields-3.6.0

URLS:

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:

[email protected]

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 M.
- 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 H. 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