marc is a ruby library for reading and writing MAchine Readable Cataloging (MARC). More information about MARC can be found at http://www.loc.gov/marc.
require 'marc' # reading records from a batch file reader = MARC::Reader.new('marc.dat', :external_encoding => "MARC-8") for record in reader # print out field 245 subfield a puts record['245']['a'] end # creating a record record = MARC::Record.new() record.append(MARC::DataField.new('100', '0', ' ', ['a', 'John Doe'])) # writing a record writer = MARC::Writer.new('marc.dat') writer.write(record) writer.close() # writing a record as XML writer = MARC::XMLWriter.new('marc.xml') writer.write(record) writer.close() # encoding a record MARC::Writer.encode(record) # or record.to_marc
#from_hash implementations that deal in ruby
hash's that are compatible with the
serialization format. You are responsible for serializing the hash to/from JSON yourself.
gem install marc
Or if you're using bundler, add to your Gemfile
Character Encodings in 'binary' ISO-2709 MARC
The Marc binary (ISO 2709) Reader (MARC::Reader) has some features for helping you deal with character encodings in ruby 1.9. It is always recommended to supply an explicit :external_encoding option to MARC::Reader; either any valid ruby encoding, or the string "MARC-8". MARC-8 input will by default be transcoded to a UTF-8 internal representation.
MARC::Reader does not currently have any facilities for guessing encoding from MARC21 leader byte 9, that is ignored.
Consult the MARC::Reader class docs for a more complete discussion and range of options.
The MARC binary Writer (MARC::Writer) does not have any encoding-related features -- it's up to you the developer to make sure you create MARC::Records with consistent and expected char encodings, although MARC::Writer will write out a legal ISO 2709 either way, it just might have corrupted encodings.
Source code at: https://github.com/ruby-marc/ruby-marc/
Find generated API docs at: http://rubydoc.info/gems/marc/frames
Run automated tests in source with
Developers, release new version of gem to rubygems with
(bundler-supplied task). Note that one nice thing this will do is automatically
tag the version in git, very important for later figuring out what's going on.