Class: Pubid::Nist::Parser
- Inherits:
-
Core::Parser
- Object
- Core::Parser
- Pubid::Nist::Parser
- Defined in:
- lib/pubid/nist/parser.rb
Instance Attribute Summary collapse
-
#parsed ⇒ Object
Returns the value of attribute parsed.
Instance Method Summary collapse
Instance Attribute Details
#parsed ⇒ Object
Returns the value of attribute parsed.
3 4 5 |
# File 'lib/pubid/nist/parser.rb', line 3 def parsed @parsed end |
Instance Method Details
#find_parser(publisher, series) ⇒ Object
37 38 39 |
# File 'lib/pubid/nist/parser.rb', line 37 def find_parser(publisher, series) PARSERS_CLASSES[series] || PARSERS_CLASSES["#{publisher} #{series}"] || Pubid::Nist::Parsers::Default end |
#parse(code) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/pubid/nist/parser.rb', line 14 def parse(code) parsed = super(code) series = if parsed[:series] parsed[:series].to_s else SERIES["mr"].key(parsed[:series_mr].to_s) end publisher = parsed[:publisher] parser = find_parser(publisher, series) begin parsed = parser.new.parse(parsed[:remaining].to_s) rescue Parslet::ParseFailed # for PubID 1.0 identifier series specific parser might fail, # so parse using Default parser which is comply with PubID 1.0 parsed = Parsers::Default.new.parse(parsed[:remaining].to_s) end if publisher parsed.is_a?(Array) ? parsed << { series: series, publisher: publisher } : parsed.merge({ series: series, publisher: publisher }) else parsed.is_a?(Array) ? parsed << { series: series } : parsed.merge({ series: series }) end end |