Module: RubyUIConverter

Defined in:
lib/ruby_ui_converter.rb,
lib/ruby_ui_converter/cli.rb,
lib/ruby_ui_converter/lexer.rb,
lib/ruby_ui_converter/nodes.rb,
lib/ruby_ui_converter/doctor.rb,
lib/ruby_ui_converter/naming.rb,
lib/ruby_ui_converter/parser.rb,
lib/ruby_ui_converter/version.rb,
lib/ruby_ui_converter/template.rb,
lib/ruby_ui_converter/converter.rb,
lib/ruby_ui_converter/file_walker.rb,
lib/ruby_ui_converter/transformer.rb,
lib/ruby_ui_converter/code_builder.rb,
lib/ruby_ui_converter/form_builder.rb,
lib/ruby_ui_converter/component_map.rb,
lib/ruby_ui_converter/configuration.rb,
lib/ruby_ui_converter/rails_helpers.rb,
lib/ruby_ui_converter/html_tokenizer.rb,
lib/ruby_ui_converter/locals_detector.rb

Defined Under Namespace

Modules: FormBuilder, Naming, Nodes, RailsHelpers Classes: CLI, CodeBuilder, ComponentMap, Configuration, Converter, Doctor, Error, FileWalker, HtmlTokenizer, Lexer, LocalsDetector, Parser, Template, Transformer

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.convert(path, **opts) ⇒ Object

Convert files under a path, writing .rb files. Returns Converter::Result[].

RubyUIConverter.convert("app/views/users")


50
51
52
53
# File 'lib/ruby_ui_converter.rb', line 50

def self.convert(path, **opts)
  config = Configuration.new(**opts)
  Converter.new(path, config: config).run
end

.convert_string(source, class_name: "Component", base_namespace: "", base_class: "Phlex::HTML", **opts) ⇒ Object

Convert a single .erb string into Ruby/Phlex source (no file IO).

RubyUIConverter.convert_string("<h1><%= @title %></h1>")


30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/ruby_ui_converter.rb', line 30

def self.convert_string(source, class_name: "Component", base_namespace: "",
                        base_class: "Phlex::HTML", **opts)
  config = Configuration.new(base_namespace: base_namespace, base_class: base_class, **opts)
  document = Parser.new(source).parse
  builder = CodeBuilder.new(indent: config.indent)
  builder.line("class #{class_name} < #{config.base_class}")
  builder.indent
  builder.line("def #{config.template_method}")
  builder.indent
  Transformer.new(config: config).emit(document, builder)
  builder.dedent
  builder.line("end")
  builder.dedent
  builder.line("end")
  builder.to_s
end