Class: Kdeploy::TemplateManager
- Inherits:
-
Object
- Object
- Kdeploy::TemplateManager
- Defined in:
- lib/kdeploy/template.rb
Overview
Template manager for handling multiple templates
Instance Attribute Summary collapse
-
#global_variables ⇒ Object
Returns the value of attribute global_variables.
-
#template_dir ⇒ Object
readonly
Returns the value of attribute template_dir.
Instance Method Summary collapse
-
#initialize(template_dir = 'templates', global_variables = {}) ⇒ TemplateManager
constructor
A new instance of TemplateManager.
-
#list_templates ⇒ Array<String>
List available templates.
-
#load_template(template_name, variables = {}) ⇒ Template
Load template by name.
-
#render(template_name, variables = {}) ⇒ String
Render template by name.
-
#render_to_file(template_name, output_path, variables = {}) ⇒ String
Render template to file.
Constructor Details
#initialize(template_dir = 'templates', global_variables = {}) ⇒ TemplateManager
Returns a new instance of TemplateManager.
95 96 97 98 99 |
# File 'lib/kdeploy/template.rb', line 95 def initialize(template_dir = 'templates', global_variables = {}) @template_dir = template_dir @global_variables = global_variables @templates = {} end |
Instance Attribute Details
#global_variables ⇒ Object
Returns the value of attribute global_variables.
93 94 95 |
# File 'lib/kdeploy/template.rb', line 93 def global_variables @global_variables end |
#template_dir ⇒ Object (readonly)
Returns the value of attribute template_dir.
93 94 95 |
# File 'lib/kdeploy/template.rb', line 93 def template_dir @template_dir end |
Instance Method Details
#list_templates ⇒ Array<String>
List available templates
133 134 135 136 137 138 139 |
# File 'lib/kdeploy/template.rb', line 133 def list_templates return [] unless Dir.exist?(@template_dir) Dir.glob("#{@template_dir}/**/*.erb").map do |path| File.basename(path, '.erb') end end |
#load_template(template_name, variables = {}) ⇒ Template
Load template by name
105 106 107 108 109 110 |
# File 'lib/kdeploy/template.rb', line 105 def load_template(template_name, variables = {}) template_path = resolve_template_path(template_name) all_variables = @global_variables.merge(variables) @templates[template_name] = Template.new(template_path, all_variables) end |
#render(template_name, variables = {}) ⇒ String
Render template by name
116 117 118 119 |
# File 'lib/kdeploy/template.rb', line 116 def render(template_name, variables = {}) template = @templates[template_name] || load_template(template_name, variables) template.render(variables) end |
#render_to_file(template_name, output_path, variables = {}) ⇒ String
Render template to file
126 127 128 129 |
# File 'lib/kdeploy/template.rb', line 126 def render_to_file(template_name, output_path, variables = {}) template = @templates[template_name] || load_template(template_name, variables) template.render_to_file(output_path, variables) end |