Class: Doctest::Core::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/doctest/core/base.rb

Constant Summary collapse

CODE_REGEXP =
/^\s*#\s*>>\s*(?<code>.*)/
RESULT_REGEXP =
/#\s*=>\s*(?<result>.*)$/

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source) ⇒ Base

Returns a new instance of Base.



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/doctest/core/base.rb', line 12

def initialize(source)
  if File.exists?(source)
    @filename = source
    @str = File.read(source)
  else
    @filename = nil
    @str = source
  end
  @state   = :no_match
  @current = nil
  @doctests = []
end

Class Method Details

.analyze(str) ⇒ Object



5
6
7
# File 'lib/doctest/core/base.rb', line 5

def self.analyze(str)
  self.new(str).analyze
end

Instance Method Details

#analyzeObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/doctest/core/base.rb', line 25

def analyze
  @str.lines.each.with_index do |line, index|
    case line
    when CODE_REGEXP
      handle_code(Regexp.last_match['code'])
    when RESULT_REGEXP
      handle_result(Regexp.last_match['result'], index)
    else
      handle_no_doctest
    end
  end

  @doctests
end