Module: TequilaPreprocessor

Defined in:
lib/preprocessor.rb

Constant Summary collapse

EOB =
"end\n".freeze
EOC =
"end\n".freeze
JAZZ =
".jazz".freeze

Class Method Summary collapse

Class Method Details

.run(source, offset = -1)) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/preprocessor.rb', line 6

def TequilaPreprocessor.run(source, offset = -1)
  source = replace(source)
  prev = offset
  text = ""
  code = nil
  lines = source.split("\n")
  for line in lines do
    unless (line.strip =~ /\/\//) == 0
      spaces, rest = spaces(line)
      raise "#{spaces} spaces in line <#{line}>" if (spaces & 1 != 0)
      tabs = spaces >> 1
      if code
        if tabs <= code
          code = nil
          text += EOC
        else
          text += "#{line}\n"
          next
        end
      end
      case rest
      when /^:code/
        code = tabs
      when /^(\+|\-|\<|source|join|merge)/
        diff = prev - tabs
        diff += 1 if diff >= 0
        diff.times { text += EOB }
        prev = tabs
      end
      text += "#{line}\n"
    end
  end
  text += EOC if code
  (prev - offset).times { text += EOB }
  text
end