Class: EDN::Reader

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/edn/reader.rb

Instance Method Summary collapse

Constructor Details

#initialize(text) ⇒ Reader

Returns a new instance of Reader.



5
6
7
8
9
10
# File 'lib/edn/reader.rb', line 5

def initialize(text)
  @parser = Parser.new
  @transform = Transform.new
  @original_text = text
  @text = text
end

Instance Method Details

#eachObject



16
17
18
19
20
21
22
23
# File 'lib/edn/reader.rb', line 16

def each
  reset!
  return enum_for(:select) unless block_given?

  until eof?
    yield read
  end
end

#eof?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/edn/reader.rb', line 12

def eof?
  @text.nil? || @text.empty?
end

#readObject



29
30
31
32
33
34
# File 'lib/edn/reader.rb', line 29

def read
  raise "EDN::Reader is out of string!" if eof?
  element, rest = @parser.parse_prefix(@text)
  @text = rest
  @transform.apply(element)
end

#reset!Object



25
26
27
# File 'lib/edn/reader.rb', line 25

def reset!
  @text = @original_text
end