Class: Packcr::Generator

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rule, ascii, location, lang = :c) ⇒ Generator

Returns a new instance of Generator.



5
6
7
8
9
10
11
12
# File 'lib/packcr/generator.rb', line 5

def initialize(rule, ascii, location, lang = :c)
  @rule = rule
  @label = 0
  @ascii = !!ascii
  @location = !!location
  @lang = lang
  @level = 0
end

Instance Attribute Details

#asciiObject (readonly)

Returns the value of attribute ascii.



3
4
5
# File 'lib/packcr/generator.rb', line 3

def ascii
  @ascii
end

#langObject (readonly)

Returns the value of attribute lang.



3
4
5
# File 'lib/packcr/generator.rb', line 3

def lang
  @lang
end

#levelObject (readonly)

Returns the value of attribute level.



3
4
5
# File 'lib/packcr/generator.rb', line 3

def level
  @level
end

#locationObject (readonly)

Returns the value of attribute location.



3
4
5
# File 'lib/packcr/generator.rb', line 3

def location
  @location
end

#ruleObject (readonly)

Returns the value of attribute rule.



3
4
5
# File 'lib/packcr/generator.rb', line 3

def rule
  @rule
end

Instance Method Details

#generate_code(node, onescape, indent, bare, reverse: false, oncut: nil) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/packcr/generator.rb', line 18

def generate_code(node, onescape, indent, bare, reverse: false, oncut: nil)
  stream = @stream
  @stream = +""
  @level += 1
  begin
    if reverse
      node.generate_reverse_code(self, onescape, indent, bare, oncut: oncut)
    else
      node.generate_code(self, onescape, indent, bare, oncut: oncut)
    end
    @stream
  ensure
    @level -= 1
    @stream = stream
  end
end

#next_labelObject



14
15
16
# File 'lib/packcr/generator.rb', line 14

def next_label
  @label += 1
end

#write(str) ⇒ Object



35
36
37
# File 'lib/packcr/generator.rb', line 35

def write(str)
  @stream << str
end