class Doctest::Core::Base
Constants
- CODE_REGEXP
- RESULT_REGEXP
Public Class Methods
analyze(str)
click to toggle source
# File lib/doctest/core/base.rb, line 5 def self.analyze(str) self.new(str).analyze end
new(source)
click to toggle source
# 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
Public Instance Methods
analyze()
click to toggle source
# 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
Private Instance Methods
add_doctest(code_lines, result, line_index)
click to toggle source
# File lib/doctest/core/base.rb, line 42 def add_doctest(code_lines, result, line_index) @doctests << Doctest.new(code_lines.join(';'), result, @filename, line_index + 1) end
handle_code(code)
click to toggle source
# File lib/doctest/core/base.rb, line 46 def handle_code(code) case @state when :no_match @current_code = [code] @state = :match when :match @current_code << code end end
handle_no_doctest()
click to toggle source
# File lib/doctest/core/base.rb, line 64 def handle_no_doctest reset end
handle_result(result, line_index)
click to toggle source
# File lib/doctest/core/base.rb, line 56 def handle_result(result, line_index) case @state when :match add_doctest(@current_code, result, line_index) reset end end
reset()
click to toggle source
# File lib/doctest/core/base.rb, line 68 def reset @state = :no_match @current end