Module: Mabmapper::MabXml::QueryHelper

Included in:
Document, Query
Defined in:
lib/mabmapper/mab_xml/query_helper.rb

Instance Method Summary collapse

Instance Method Details

#field(name_or_enum, options = {}) ⇒ Object



5
6
7
8
9
10
11
# File 'lib/mabmapper/mab_xml/query_helper.rb', line 5

def field(name_or_enum, options={})
  if name_or_enum.is_a?(String)
    query.add_field(name_or_enum, options)
  elsif name_or_enum.is_a?(Enumerable)
    name_or_enum.inject(query) { |q, name| q.add_field(name, options) }
  end
end

#getObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/mabmapper/mab_xml/query_helper.rb', line 21

def get
  results = ResultSet.new

  query.xml.xpath(fields_xpath).each do |field_xml|
    name   = field_xml.attribute('tag').to_s
    field  = Field.new(name)

    field_xml.xpath(subfields_xpath).each do |subfield_xml|
      name  = subfield_xml.attribute('code').to_s
      value = subfield_xml.text.presence

      subfield = Subfield.new(name, value)
      field.add_subfield(subfield)
    end

    results.add_field(field)
  end

  results
end

#subfield(name_or_enum) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/mabmapper/mab_xml/query_helper.rb', line 13

def subfield(name_or_enum)
  if name_or_enum.is_a?(String)
    query.add_subfield(name_or_enum)
  elsif name_or_enum.is_a?(Enumerable)
    name_or_enum.inject(query) { |q, name| q.add_subfield(name) }
  end
end