Class: Jigsaw::JsxCompiler

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

Class Method Summary collapse

Class Method Details

.babel_sourceObject



17
18
19
# File 'lib/jigsaw/jsx_compiler.rb', line 17

def self.babel_source
  @babel_source ||= File.read(Engine.root.join("vendor/javascript/babel.min.js"))
end

.compile(source) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
# File 'lib/jigsaw/jsx_compiler.rb', line 5

def self.compile(source)
  context = MiniRacer::Context.new
  context.eval(babel_source)
  context.eval(<<~JS)
    Babel.transform(#{source.to_json}, {
      presets: [['react', { runtime: 'automatic' }]]
    }).code
  JS
ensure
  context&.dispose
end