Class: Sibilant::Compiler

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

Instance Method Summary collapse

Instance Method Details

#package_jsonObject



23
24
25
# File 'lib/sibilant.rb', line 23

def package_json
  JSON.parse package_json_file.read
end

#package_json_fileObject



19
20
21
# File 'lib/sibilant.rb', line 19

def package_json_file
  File.open File.join(sibilant_js_root, 'package.json')
end

#sibilant_cliObject



31
32
33
# File 'lib/sibilant.rb', line 31

def sibilant_cli
  File.join sibilant_js_root, 'bin', 'sibilant'
end

#sibilant_js_rootObject



15
16
17
# File 'lib/sibilant.rb', line 15

def sibilant_js_root
  File.join File.dirname(__FILE__), '..', 'js', 'sibilant'
end

#translate(sibilant_code) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/sibilant.rb', line 35

def translate(sibilant_code)
  Open3.popen3 sibilant_cli, '-i' do |i,o,e,t|
    i.puts sibilant_code
    i.close_write

    if t.value.success?
      o.read.strip
    else
      raise Sibilant::CompilationError.new(e.read.strip)
    end
  end
end

#versionObject



27
28
29
# File 'lib/sibilant.rb', line 27

def version
  package_json[:version]
end