[ANN] record library / gem v1.2 - named tuples / records with typed structs / schemas

Gerald Bauer <[email protected]>
Newsgroups gmane.comp.lang.ruby.general
Message-ID <CAAxEZd-59GRPA=gBz+CZMZEqai7oOW29fBmG-7Z3-TN_3eZQ+g@mail.gmail.com>
Hello,

  I've updated the (new) record library / gem [1] that lets you define
named tuples / records with typed structs / schemas. How?



Step 1: Define a (typed) struct for your records / named tuples. Example:

require 'record'

Beer = Record.define do
  field :brewery        ## note: default type is :string
  field :city
  field :name
  field :abv, Float     ## allows type specified as class (or use :float)
end

# or in "classic" style:

class Beer < Record::Base
  field :brewery
  field :city
  field :name
  field :abv, Float
end


And now use the new class to create new (typed) records. Example:


beer = Beer.new( 'Andechser Klosterbrauerei',
                 'Andechs',
                 'Doppelbock Dunkel',
                 '7%' )

# -or-

values = ['Andechser Klosterbrauerei', 'Andechs', 'Doppelbock Dunkel', '7%']
beer = Beer.new( values )

# -or-

beer = Beer.new( brewery: 'Andechser Klosterbrauerei',
                 city:    'Andechs',
                 name:    'Doppelbock Dunkel',
                 abv:     '7%' )

# -or-

hash = { brewery: 'Andechser Klosterbrauerei',
         city:    'Andechs',
         name:    'Doppelbock Dunkel',
         abv:     '7%' }
beer = Beer.new( hash )


# -or-

beer = Beer.new
beer.update( brewery: 'Andechser Klosterbrauerei',
             city:    'Andechs',
             name:    'Doppelbock Dunkel' )
beer.update( abv: 7.0 )

# -or-

beer = Beer.new
beer.parse( ['Andechser Klosterbrauerei', 'Andechs', 'Doppelbock
Dunkel', '7%'] )

# -or-

beer = Beer.new
beer.parse( 'Andechser Klosterbrauerei,Andechs,Doppelbock Dunkel,7%' )

# -or-

beer = Beer.new
beer.brewery = 'Andechser Klosterbrauerei'
beer.name    = 'Doppelbock Dunkel'
beer.abv     = 7.0



And so on. That's it.


Why? What for?
The (new) record library is "extracted" for easy (re)use from the
csvrecord library / gem [2] :-).



Cheers. Prost. Happy coding and data wrangling with ruby.

[1] https://github.com/rubycoco/record
[2] https://github.com/csvreader/csvrecord

Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-talk>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.