Class: Metacrunch::Mab2::Document

Inherits:
Object
  • Object
show all
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

Class Method Details

.from_aleph_mab_xml(xml) ⇒ Metacrunch::Mab2::Document

Parameters:

  • xml (String)

    repesenting a MAB document in Aleph MAB XML format

Returns:



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.

Parameters:



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.

Parameters:



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.

Parameters:

  • tag (String)

    of the control field

Returns:

  • (Controlfield, nil)

    control field with the given tag. Is nil if the control field doesn’t exists.



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.

Parameters:

  • tag (String)

    of the data field

  • ind1 (String, nil) (defaults to: nil)

    filter for ind1. Can be nil to match any.

  • ind2 (String, nil) (defaults to: nil)

    filter for ind2. Can be nil to match any.

Returns:



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