Sha256: 62cb858f172df8dad348791c3da9a00a385932fc19c7034786aef5821d167059
Contents?: true
Size: 1.25 KB
Versions: 2
Compression:
Stored size: 1.25 KB
Contents
require 'English' require 'epub/parser' require 'epub/parser/cfi' require 'nokogiri' def usage <<EOS USAGE: ruby #{$PROGRAM_NAME} ELEMENT EPUB EOS end def main(argv) elem_name = argv.shift epub_path = argv.shift if elem_name.nil? or epub_path.nil? abort usage end spine_step = EPUB::CFI::Step.new(6) epub = EPUB::Parser.parse(epub_path) epub.package.spine.each_itemref.with_index do |itemref, i| itemref_step = { :step => (i + 1) * 2, :id => itemref.id } assertion = itemref.id ? EPUB::CFI::IDAssertion.new(itemref.id) : nil itemref_step = EPUB::CFI::Step.new((i + 1) * 2, assertion) path_to_itemref = EPUB::CFI::Path.new([spine_step, itemref_step]) itemref.item.content_document.nokogiri.search(elem_name).each do |elem| path = find_path(elem) location = EPUB::CFI::Location.new([path_to_itemref, path]) puts puts location puts elem end end end def find_path(elem) steps = [] until elem.parent.document? index = elem.parent.element_children.index(elem) assertion = elem["id"] ? EPUB::CFI::IDAssertion.new(elem["id"]) : nil steps.unshift EPUB::CFI::Step.new((index + 1) * 2, assertion) elem = elem.parent end EPUB::CFI::Path.new(steps) end main ARGV
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
epub-parser-0.2.7 | examples/find-elements-and-cfis.rb |
epub-parser-0.2.6 | examples/find-elements-and-cfis.rb |