Module: Render::React::Compiler
- Defined in:
- lib/render/react/compiler.rb
Class Method Summary collapse
- .bootstrap ⇒ Object
- .create_context ⇒ Object
- .evaljs(code) ⇒ Object
- .load_components ⇒ Object
- .lookup ⇒ Object
- .render(component_class, **props) ⇒ Object
Class Method Details
.bootstrap ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/render/react/compiler.rb', line 35 def bootstrap if @durability if @durability <= 1 @cxt.dispose @cxt = nil create_context load_components else @durability -= 1 end else create_context load_components end end |
.create_context ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/render/react/compiler.rb', line 8 def create_context @cxt = Config.new_context @durability = Config::CONTEXT_DURABILITY js_lib_files = Dir.glob( File.join( Config.gem_js_path, 'compiler', '**', '*.js' ) ) js_lib_files.each { |file| @cxt.load(file) } end |
.evaljs(code) ⇒ Object
61 62 63 |
# File 'lib/render/react/compiler.rb', line 61 def evaljs(code) @cxt.eval(code) end |
.load_components ⇒ Object
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/render/react/compiler.rb', line 24 def load_components Config.paths.each do |path| files = Dir.glob(File.join(path, '**', '*.js')) files.each do |filename| name, code = Transpiler.babelify(filename) @cxt.eval(code) lookup[name.to_sym] = true end end end |
.lookup ⇒ Object
4 5 6 |
# File 'lib/render/react/compiler.rb', line 4 def lookup @lookup ||= {} end |
.render(component_class, **props) ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/render/react/compiler.rb', line 51 def render(component_class, **props) unless lookup[component_class.to_sym] raise "#{component_class} component not found." end @cxt.eval <<-EOS var component = React.createElement(#{component_class}, #{JSON.dump(props)}); ReactDOMServer.renderToString(component); EOS end |