class MARC::FieldMap
The FieldMap
is an Array of DataFields and Controlfields. It also contains a Hash representation of the fields for faster lookups (under certain conditions)
Attributes
Public Class Methods
Public Instance Methods
Source
# File lib/marc/record.rb, line 35 def each_by_tag(tags) reindex unless @clean indices = [] # Get all the indices associated with the tags Array(tags).each do |t| indices.concat @tags[t] if @tags[t] end # Remove any nils indices.compact! return [] if indices.empty? # Sort it, so we get the fields back in the order they appear in the record indices.sort! indices.each do |tag| yield self[tag] end end
Returns an array of fields, in the order they appear, according to their tag. The tags argument can be a string (e.g. ‘245’), an array ([‘100’,‘700’,‘800’]) or a range ((‘600’..‘699’)).
Source
# File lib/marc/record.rb, line 58 def freeze reindex unless @clean super end
Freeze for immutability, first reindexing if needed. A frozen FieldMap
is safe for concurrent access, and also can more easily avoid accidental reindexing on even read-only use.
Calls superclass method
Source
# File lib/marc/record.rb, line 16 def reindex @tags = {} each_with_index do |field, i| @tags[field.tag] ||= [] @tags[field.tag] << i end @clean = true end
Rebuild the HashWithChecksumAttribute with the current values of the fields Array
Source
# File lib/marc/record.rb, line 26 def tag_list reindex unless @clean @tags.keys end
Returns an array of all of the tags that appear in the record (not in the order they appear, however).