Class: Kdeploy::TemplateManager

Inherits:
Object
  • Object
show all
Defined in:
lib/kdeploy/template.rb

Overview

Template manager for handling multiple templates

Instance Attribute Summary collapse

Instance Method Summary collapse

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_variablesObject

Returns the value of attribute global_variables.



93
94
95
# File 'lib/kdeploy/template.rb', line 93

def global_variables
  @global_variables
end

#template_dirObject (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_templatesArray<String>

List available templates

Returns:

  • (Array<String>)

    Template names



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

Parameters:

  • template_name (String)

    Template name (without .erb extension)

  • variables (Hash) (defaults to: {})

    Template variables

Returns:



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

Parameters:

  • template_name (String)

    Template name

  • variables (Hash) (defaults to: {})

    Additional variables

Returns:

  • (String)

    Rendered content



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

Parameters:

  • template_name (String)

    Template name

  • output_path (String)

    Output file path

  • variables (Hash) (defaults to: {})

    Additional variables

Returns:

  • (String)

    Output file path



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