Top Level Namespace

Defined Under Namespace

Modules: Siatra

Instance Method Summary collapse

Instance Method Details

#Siatra(code) ⇒ Object



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

def Siatra(code)
  s = StringScanner.new(code)
  memo = []
  is = {shebanged: false}
  until s.eos?
    case
    when !is[:shebanged] && s.scan(/^#!.*\n/)
      memo << s[0]
      is[:shebanged] = true
    when s.scan(/\r?\n/m)
      memo << ';'
    when s.scan(/./)
      memo << s[0]
    else
      raise 'must not happen'
    end
  end
  memo.join
end