Class: Obo::Parser
- Inherits:
-
Object
- Object
- Obo::Parser
- Defined in:
- lib/obo.rb
Constant Summary collapse
- STANZA_START =
/^\[(.*?)\]/
- TAG_VALUE =
/^(.*?):([^!]*)/
Instance Method Summary collapse
- #elements(io = @io) ⇒ Object
-
#initialize(filename) ⇒ Parser
constructor
A new instance of Parser.
- #rewind(io = @io) ⇒ Object
- #stanzas ⇒ Object
Constructor Details
#initialize(filename) ⇒ Parser
Returns a new instance of Parser.
72 73 74 75 |
# File 'lib/obo.rb', line 72 def initialize(filename) @header = nil @io = File.open(filename) end |
Instance Method Details
#elements(io = @io) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/obo.rb', line 77 def elements(io = @io) Enumerator.new do |yielder| header = Header.new previous_line_position = io.pos line = lines.next until line.is_a? Stanza header.add(*line) previous_line_position = io.pos line = lines.next end yielder << header io.pos = previous_line_position stanzas.each{|stanza| yielder << stanza} end end |
#rewind(io = @io) ⇒ Object
111 112 113 |
# File 'lib/obo.rb', line 111 def rewind(io = @io) io.pos = 0 end |
#stanzas ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/obo.rb', line 94 def stanzas Enumerator.new do |yielder| stanza = lines.first{|line| line.is_a? Stanza} lines.each do |line| case line when Array stanza.add(*line) when Stanza yielder << stanza stanza = line end end end end |