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
-
.convert(path, **opts) ⇒ Object
Convert files under a path, writing .rb files.
-
.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).
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 |