class NewspaperWorks::Ingest::NDNP::IssueIngest

Attributes

dmdids[RW]
doc[RW]
path[RW]

Public Class Methods

new(path) click to toggle source
# File lib/newspaper_works/ingest/ndnp/issue_ingest.rb, line 10
def initialize(path)
  @path = path
  @doc = nil
  @metadata = nil
  # Enumeration based on list of DMDID loaded by load_doc
  @dmdids = nil
  load_doc
  # cache dmdid -> PageIngest
  @page_cache = {}
end

Public Instance Methods

each() { |page_by_dmdid(dmdid)| ... } click to toggle source
# File lib/newspaper_works/ingest/ndnp/issue_ingest.rb, line 50
def each
  @dmdids.each do |dmdid|
    yield page_by_dmdid(dmdid)
  end
end
identifier() click to toggle source
# File lib/newspaper_works/ingest/ndnp/issue_ingest.rb, line 29
def identifier
  metadata.lccn
end
inspect() click to toggle source
# File lib/newspaper_works/ingest/ndnp/issue_ingest.rb, line 21
def inspect
  format(
    "<#{self.class}:0x000000000%<oid>x\n" \
      "\tpath: '#{path}',\n",
    oid: object_id << 1
  )
end
metadata() click to toggle source
# File lib/newspaper_works/ingest/ndnp/issue_ingest.rb, line 60
def metadata
  return @metadata unless @metadata.nil?
  @metadata = NewspaperWorks::Ingest::NDNP::IssueMetadata.new(
    path,
    self
  )
end
page_by_dmdid(dmdid) click to toggle source
# File lib/newspaper_works/ingest/ndnp/issue_ingest.rb, line 33
def page_by_dmdid(dmdid)
  return @page_cache[dmdid] if @page_cache.key?(dmdid)
  p = NewspaperWorks::Ingest::NDNP::PageIngest.new(@path, dmdid, self)
  @page_cache[dmdid] = p
  p
end
page_by_sequence_number(n) click to toggle source
# File lib/newspaper_works/ingest/ndnp/issue_ingest.rb, line 40
def page_by_sequence_number(n)
  page_by_dmdid(
    doc.xpath(
      "//mods:extent//mods:start[text()='#{n}']",
      mets: 'http://www.loc.gov/METS/',
      mods: 'http://www.loc.gov/mods/v3'
    ).first.ancestors('dmdSec').first['ID']
  )
end
size() click to toggle source
# File lib/newspaper_works/ingest/ndnp/issue_ingest.rb, line 56
def size
  @dmdids.size
end

Private Instance Methods

load_doc() click to toggle source
# File lib/newspaper_works/ingest/ndnp/issue_ingest.rb, line 70
def load_doc
  @doc = Nokogiri::XML(File.open(path)) if @doc.nil?
  page_divs = doc.xpath(
    "//mets:structMap//mets:div[@TYPE='np:page']",
    mets: 'http://www.loc.gov/METS/'
  )
  @dmdids = page_divs.map { |div| div.attr('DMDID') }
end