Class: Metacrunch::Mab2::Document
- Inherits:
-
Object
- Object
- Metacrunch::Mab2::Document
- Defined in:
- lib/metacrunch/mab2/document.rb,
lib/metacrunch/mab2/document/subfield.rb,
lib/metacrunch/mab2/document/datafield.rb,
lib/metacrunch/mab2/document/controlfield.rb,
lib/metacrunch/mab2/document/subfield_set.rb,
lib/metacrunch/mab2/document/datafield_set.rb
Defined Under Namespace
Classes: Controlfield, Datafield
Class Method Summary collapse
Instance Method Summary collapse
-
#add_controlfield(controlfield) ⇒ Object
Adds a new control field.
-
#add_datafield(datafield) ⇒ Object
Adds a new data field.
-
#controlfield(tag) ⇒ Controlfield?
Returns the control field matching the given tag.
-
#datafields(tag, ind1: nil, ind2: nil) ⇒ Metacrunch::Mab2::Document::Datafield::Set
Returns the data fields matching the given tag and ind1/ind2.
Class Method Details
.from_aleph_mab_xml(xml) ⇒ Metacrunch::Mab2::Document
18 19 20 |
# File 'lib/metacrunch/mab2/document.rb', line 18 def self.from_aleph_mab_xml(xml) AlephMabXmlDocumentFactory.new(xml).to_document end |
Instance Method Details
#add_controlfield(controlfield) ⇒ Object
Adds a new control field.
51 52 53 |
# File 'lib/metacrunch/mab2/document.rb', line 51 def add_controlfield(controlfield) controlfields_struct[controlfield.tag] = controlfield end |
#add_datafield(datafield) ⇒ Object
Adds a new data field.
97 98 99 100 101 102 |
# File 'lib/metacrunch/mab2/document.rb', line 97 def add_datafield(datafield) datafield_set = datafields(datafield.tag) datafield_set << datafield datafields_struct[datafield.tag] = datafield_set end |
#controlfield(tag) ⇒ Controlfield?
Returns the control field matching the given tag.
42 43 44 |
# File 'lib/metacrunch/mab2/document.rb', line 42 def controlfield(tag) controlfields_struct[tag] end |
#datafields(tag, ind1: nil, ind2: nil) ⇒ Metacrunch::Mab2::Document::Datafield::Set
Returns the data fields matching the given tag and ind1/ind2.
77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/metacrunch/mab2/document.rb', line 77 def datafields(tag, ind1: nil, ind2: nil) set = datafields_struct[tag] || Datafield::Set.new return set if set.empty? if ind1 || ind2 filtered_datafields = set.select do |_datafield| (!ind1 || _datafield.ind1 == ind1) && (!ind2 || _datafield.ind2 == ind2) end Datafield::Set.new(filtered_datafields) else set end end |