lib/pdk/template/template_dir.rb in pdk-2.3.0 vs lib/pdk/template/template_dir.rb in pdk-2.4.0

- old
+ new

@@ -1,67 +1,67 @@ -require 'pdk' -require 'forwardable' - -module PDK - module Template - # A helper class representing an already fetched template on disk, with an appropriate renderer instance. - # @see PDK::Template.with - class TemplateDir - # Creates an instance of TemplateDir object - # @see TemplateDir.new - def self.instance(uri, path, context, renderer = nil) - new(uri, path, context, renderer) - end - - extend Forwardable - - # Helper methods for rendering - def_delegators :@renderer, :render, :render_single_item, :has_single_item? - - # @return [PDK::Util::TemplateURI] The URI which points to the source location of the Template - attr_accessor :uri - - # @return [String] The path to where the template exists on disk - attr_accessor :path - - # @return [Hash{String => String}] A hash of information about the template - attr_accessor :metadata - - # @param template_uri [PDK::Util::TemplateUri] A URI which points to the source location of the Template - # @param path [String] The path to where the template exists on disk - # @param context [PDK::Context] The context in which the redering will occur in - # @param renderer [PDK::Template::Renderer::AbstractRenderer] The an instance of a rendering class. If nil, a renderer will be created that's appropriate for the template and context - def initialize(uri, path, context, renderer = nil) - @uri = uri - @path = path - @metadata = {} - - @renderer = renderer.nil? ? Renderer.instance(uri, path, context) : renderer - raise _('Could not find a compatible template renderer for %{path}') % { path: path } if @renderer.nil? - end - - # Later additions may include Control Repo rendering, for example - # - # def render_control_repo(name, options = {}) - # render(CONTROL_REPO_TEMPLATE_TYPE, name, options.merge(include_first_time: false)) { |*args| yield(*args) } - # end - # - # def render_new_control_repo(name, repo_metadata = {}, options = {}) - # render(CONTROL_REPO_TEMPLATE_TYPE, name, options.merge(include_first_time: true, control_repo_metadata: repo_metadata)) { |*args| yield(*args) } - # end - #:nocov: These are just helper methods and are tested elsewhere. - - # Render an existing module - # @see PDK::Template::Renderer::AbstractRenderer.render - def render_module(module_name, options = {}) - @renderer.render(MODULE_TEMPLATE_TYPE, module_name, options.merge(include_first_time: false)) { |*args| yield(*args) } - end - - # Render a new module - # @see PDK::Template::Renderer::AbstractRenderer.render - def render_new_module(module_name, module_metadata = {}, options = {}) - @renderer.render(MODULE_TEMPLATE_TYPE, module_name, options.merge(include_first_time: true, module_metadata: module_metadata)) { |*args| yield(*args) } - end - #:nocov: - end - end -end +require 'pdk' +require 'forwardable' + +module PDK + module Template + # A helper class representing an already fetched template on disk, with an appropriate renderer instance. + # @see PDK::Template.with + class TemplateDir + # Creates an instance of TemplateDir object + # @see TemplateDir.new + def self.instance(uri, path, context, renderer = nil) + new(uri, path, context, renderer) + end + + extend Forwardable + + # Helper methods for rendering + def_delegators :@renderer, :render, :render_single_item, :has_single_item? + + # @return [PDK::Util::TemplateURI] The URI which points to the source location of the Template + attr_accessor :uri + + # @return [String] The path to where the template exists on disk + attr_accessor :path + + # @return [Hash{String => String}] A hash of information about the template + attr_accessor :metadata + + # @param template_uri [PDK::Util::TemplateUri] A URI which points to the source location of the Template + # @param path [String] The path to where the template exists on disk + # @param context [PDK::Context] The context in which the redering will occur in + # @param renderer [PDK::Template::Renderer::AbstractRenderer] The an instance of a rendering class. If nil, a renderer will be created that's appropriate for the template and context + def initialize(uri, path, context, renderer = nil) + @uri = uri + @path = path + @metadata = {} + + @renderer = renderer.nil? ? Renderer.instance(uri, path, context) : renderer + raise _('Could not find a compatible template renderer for %{path}') % { path: path } if @renderer.nil? + end + + # Later additions may include Control Repo rendering, for example + # + # def render_control_repo(name, options = {}) + # render(CONTROL_REPO_TEMPLATE_TYPE, name, options.merge(include_first_time: false)) { |*args| yield(*args) } + # end + # + # def render_new_control_repo(name, repo_metadata = {}, options = {}) + # render(CONTROL_REPO_TEMPLATE_TYPE, name, options.merge(include_first_time: true, control_repo_metadata: repo_metadata)) { |*args| yield(*args) } + # end + #:nocov: These are just helper methods and are tested elsewhere. + + # Render an existing module + # @see PDK::Template::Renderer::AbstractRenderer.render + def render_module(module_name, options = {}) + @renderer.render(MODULE_TEMPLATE_TYPE, module_name, options.merge(include_first_time: false)) { |*args| yield(*args) } + end + + # Render a new module + # @see PDK::Template::Renderer::AbstractRenderer.render + def render_new_module(module_name, module_metadata = {}, options = {}) + @renderer.render(MODULE_TEMPLATE_TYPE, module_name, options.merge(include_first_time: true, module_metadata: module_metadata)) { |*args| yield(*args) } + end + #:nocov: + end + end +end