Class: Obo::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/obo.rb

Constant Summary collapse

STANZA_START =
/^\[(.*?)\]/
TAG_VALUE =
/^(.*?):([^!]*)/

Instance Method Summary collapse

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

#stanzasObject



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