Sha256: 2e6b92dbb7309e1236dbb825c243f752333fcbcec852c9630e31d05620370d27
Contents?: true
Size: 1.34 KB
Versions: 1
Compression:
Stored size: 1.34 KB
Contents
module NistBib class XMLParser < RelatonBib::XMLParser class << self def from_xml(xml) doc = Nokogiri::XML xml nistitem = doc.at("/bibitem") || doc.at("/bibdata") NistBibliographicItem.new(item_data(nistitem)) end private def item_data(nistitem) data = super data.delete :series data[:nistseries] = fetch_nistseries(nistitem) data[:keyword] = fetch_keyword(nistitem) data[:commentperiod] = fetch_commentperiod(nistitem) data end def fetch_status(item) status = item.at "./status" return unless status DocumentStatus.new( stage: status.at("stage")&.text, substage: status.at("substage")&.text, iteration: status.at("iteraton")&.text, ) end def fetch_commentperiod(item) cp = item.at "./commentperiod" return unless cp CommentPeriod.new cp.at("from").text, cp.at("to")&.text, cp.at("extended")&.text end def fetch_keyword(item) item.xpath("./keyword").map do |kw| Keyword.new kw.children.first.to_xml end end def fetch_nistseries(item) series = item.at "./series" return unless series NistSeries.new series.at("./abbreviation").text.upcase.gsub("-", " ") end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
nistbib-0.1.5 | lib/nistbib/xml_parser.rb |