class Puree::XMLExtractor::JournalArticle

Journal article XML extractor.

Public Class Methods

new(xml) click to toggle source
# File lib/puree/xml_extractor/journal_article.rb, line 11
def initialize(xml)
  super
  setup_model :journal_article
end

Public Instance Methods

issue() click to toggle source

@return [Integer, nil]

# File lib/puree/xml_extractor/journal_article.rb, line 17
def issue
  xpath_result = xpath_query_for_single_value('/journalNumber')
  xpath_result ? xpath_result.to_i : nil
end
journal() click to toggle source

@return [Puree::Model::JournalHeader, nil]

# File lib/puree/xml_extractor/journal_article.rb, line 23
def journal
  xpath_result = xpath_query '/journalAssociation'
  if !xpath_result.empty?
    header = Puree::Model::JournalHeader.new
    header.title = xpath_result.xpath('title').text.strip
    journal = xpath_result.xpath('journal')
    xpath_result_type = journal.xpath('type/term/text')
    header.type = xpath_result_type.first.text.strip unless xpath_result_type.empty?
    header.uuid = journal.attr('uuid').text.strip
    header
  end
end
volume() click to toggle source

@return [Integer, nil]

# File lib/puree/xml_extractor/journal_article.rb, line 37
def volume
  xpath_result = xpath_query_for_single_value('/volume')
  xpath_result ? xpath_result.to_i : nil
end

Private Instance Methods

combine_metadata() click to toggle source
# File lib/puree/xml_extractor/journal_article.rb, line 49
def combine_metadata
  super
  @model.issue = issue
  @model.journal = journal
  @model.pages = pages
  @model.page_range = page_range
  @model.peer_reviewed = peer_reviewed
  @model.volume = volume
  @model
end
xpath_root() click to toggle source
# File lib/puree/xml_extractor/journal_article.rb, line 45
def xpath_root
  '/contributionToJournal'
end