Sha256: c7ac16c9bcc70e50ddeb7b0b8b087672e2544d7c8025f8f22d5871956b4b0426

Contents?: true

Size: 1.07 KB

Versions: 6

Compression:

Stored size: 1.07 KB

Contents

require 'erb'
require 'colorize'

require_relative 'config'

module RedmineCLI
  #
  # Renders templates
  #
  module TemplateRenderer
    @template_directory = File.expand_path("../../assets/templates/#{Config.locale}", __FILE__)

    #
    # finds template and renders it
    #
    # @param template [String, Symbol] name of template. Use 'dir1/dir2/name' means assets/templates/dir1/dir2/name.erb
    #
    def self.render(template, variables = {})
      path = File.expand_path(template.to_s, @template_directory) + '.erb'
      fail "Template not found: #{path}" unless File.exist? path

      ErbEnvironment.new(File.read(path), variables).render
    end

    #
    # Class for renderer. Don't use it outside
    #
    class ErbEnvironment
      include Helpers::Output

      def initialize(template, vars = {})
        @template = template
        @vars = vars
      end

      def method_missing(m, *args)
        return @vars[m] if args.empty? && @vars[m]

        super
      end

      def render
        ERB.new(@template, nil, '%<>').result(binding)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
redmine_cli-0.5.1 lib/redmine_cli/template_renderer.rb
redmine_cli-0.5.0 lib/redmine_cli/template_renderer.rb
redmine_cli-0.4.1 lib/redmine_cli/template_renderer.rb
redmine_cli-0.4.0 lib/redmine_cli/template_renderer.rb
redmine_cli-0.3.1 lib/redmine_cli/template_renderer.rb
redmine_cli-0.3.0 lib/redmine_cli/template_renderer.rb