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