Class: Legion::CLI::LexTemplates::TemplateOverlay
- Inherits:
-
Object
- Object
- Legion::CLI::LexTemplates::TemplateOverlay
- Defined in:
- lib/legion/cli/lex_templates.rb
Overview
Renders and writes template-specific overlay files into the target extension directory.
Constant Summary collapse
- PLACEHOLDER =
'%name%'
Instance Method Summary collapse
- #apply(out = nil) ⇒ Object
-
#initialize(template_name, target_dir, vars) ⇒ TemplateOverlay
constructor
vars: { gem_name:, lex_name:, lex_class:, name_class: }.
Constructor Details
#initialize(template_name, target_dir, vars) ⇒ TemplateOverlay
vars: { gem_name:, lex_name:, lex_class:, name_class: }
94 95 96 97 98 |
# File 'lib/legion/cli/lex_templates.rb', line 94 def initialize(template_name, target_dir, vars) @template_name = template_name @target_dir = target_dir @vars = vars end |
Instance Method Details
#apply(out = nil) ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/legion/cli/lex_templates.rb', line 100 def apply(out = nil) src = LexTemplates.template_dir(@template_name) return unless src && Dir.exist?(src) each_template_file(src) do |abs_src, rel_path| dest_rel = rel_path.gsub(PLACEHOLDER, @vars[:lex_name]) dest_rel = dest_rel.sub(/\.erb$/, '') dest_abs = File.join(@target_dir, dest_rel) FileUtils.mkdir_p(File.dirname(dest_abs)) rendered = render_erb(File.read(abs_src)) File.write(dest_abs, rendered) out&.success(" [#{@template_name}] #{dest_rel}") end end |