Class: Rgot::ExampleParser

Inherits:
Ripper
  • Object
show all
Defined in:
lib/rgot/example_parser.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(code) ⇒ ExampleParser

Returns a new instance of ExampleParser.



11
12
13
14
15
16
17
# File 'lib/rgot/example_parser.rb', line 11

def initialize(code)
  super
  @examples = []
  @in_def = false
  @has_output = false
  @output = "".dup
end

Instance Attribute Details

#examplesObject

Returns the value of attribute examples.



9
10
11
# File 'lib/rgot/example_parser.rb', line 9

def examples
  @examples
end

Instance Method Details

#on_comment(a) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/rgot/example_parser.rb', line 26

def on_comment(a)
  if @in_def
    if @has_output
      @output << a.sub(/\A#\s*/, '')
    else
      if /#\s*Output:\s*(.*?\n)/ =~ a
        text = $1
        if 0 < text.length || text[0] != "\n"
          @output << text
        end
        @has_output = true
      end
    end
  end
end

#on_def(method, args, body) ⇒ Object



19
20
21
22
23
24
# File 'lib/rgot/example_parser.rb', line 19

def on_def(method, args, body)
  @examples << ExampleOutput.new(method.to_sym, @output.dup)
  @output.clear
  @has_output = false
  @in_def = false
end

#on_kw(a) ⇒ Object



42
43
44
45
46
47
48
49
# File 'lib/rgot/example_parser.rb', line 42

def on_kw(a)
  case a
  when "def"
    @in_def = true
  when "end"
    @in_def = false
  end
end