Module: JsxRosetta
- Defined in:
- lib/jsx_rosetta.rb,
lib/jsx_rosetta/ir.rb,
lib/jsx_rosetta/ast.rb,
lib/jsx_rosetta/cli.rb,
lib/jsx_rosetta/parser.rb,
lib/jsx_rosetta/routes.rb,
lib/jsx_rosetta/backend.rb,
lib/jsx_rosetta/version.rb,
lib/jsx_rosetta/ast/node.rb,
lib/jsx_rosetta/ir/types.rb,
lib/jsx_rosetta/ast/types.rb,
lib/jsx_rosetta/ast/visitor.rb,
lib/jsx_rosetta/ir/lowering.rb,
lib/jsx_rosetta/node_bridge.rb,
lib/jsx_rosetta/parse_error.rb,
lib/jsx_rosetta/backend/base.rb,
lib/jsx_rosetta/ast/inflector.rb,
lib/jsx_rosetta/backend/rails_view.rb,
lib/jsx_rosetta/backend/routes_script.rb,
lib/jsx_rosetta/backend/view_component.rb,
lib/jsx_rosetta/backend/view_component/expression_translator.rb
Defined Under Namespace
Modules: AST, Backend, IR, Routes
Classes: CLI, Error, NodeBridge, ParseError, Parser
Constant Summary
collapse
- VERSION =
"0.3.0"
Class Method Summary
collapse
-
.backend_for(name, helpers: nil, layout: :sidecar) ⇒ Object
-
.lower(source, typescript: false, source_filename: nil) ⇒ Object
-
.parse(source, typescript: false, source_filename: nil) ⇒ Object
-
.translate(source, backend: :view_component, helpers: nil, layout: :sidecar, typescript: false, source_filename: nil) ⇒ Object
Class Method Details
.backend_for(name, helpers: nil, layout: :sidecar) ⇒ Object
25
26
27
28
29
30
31
32
|
# File 'lib/jsx_rosetta.rb', line 25
def self.backend_for(name, helpers: nil, layout: :sidecar)
case name
when :view_component then Backend::ViewComponent.new(helpers: helpers, layout: layout)
when :rails_view then Backend::RailsView.new(helpers: helpers, layout: layout)
else
raise Error, "unknown backend: #{name.inspect}"
end
end
|
.lower(source, typescript: false, source_filename: nil) ⇒ Object
12
13
14
15
|
# File 'lib/jsx_rosetta.rb', line 12
def self.lower(source, typescript: false, source_filename: nil)
ast = parse(source, typescript: typescript, source_filename: source_filename)
IR.lower(ast, source: source)
end
|
.parse(source, typescript: false, source_filename: nil) ⇒ Object
8
9
10
|
# File 'lib/jsx_rosetta.rb', line 8
def self.parse(source, typescript: false, source_filename: nil)
Parser.new.parse(source, typescript: typescript, source_filename: source_filename)
end
|
.translate(source, backend: :view_component, helpers: nil, layout: :sidecar, typescript: false, source_filename: nil) ⇒ Object
17
18
19
20
21
22
23
|
# File 'lib/jsx_rosetta.rb', line 17
def self.translate(source, backend: :view_component, helpers: nil, layout: :sidecar,
typescript: false, source_filename: nil)
ast = parse(source, typescript: typescript, source_filename: source_filename)
components = IR.lower_all(ast, source: source)
backend_instance = backend_for(backend, helpers: helpers, layout: layout)
components.flat_map { |component| backend_instance.emit(component) }
end
|