Sha256: 892d89ef850ccdfb71096ad5dfba808fb73532944af6e2489d843b88f84048ec

Contents?: true

Size: 1.36 KB

Versions: 15

Compression:

Stored size: 1.36 KB

Contents

module Vedeu

  # Generic class to loading a template and parsing it via ERb.
  #
  # @api private
  class Template

    include Vedeu::ViewHelpers

    # @param (see Vedeu::Template#new)
    # @return [void]
    def self.parse(object, path, options = {})
      new(object, path, options).parse
    end

    # Returns a new instance of Vedeu::Template.
    #
    # @param object [Class]
    # @param path [String]
    # @param options [Hash]
    # @option options name [String] The name of an interface.
    # @return [Template]
    def initialize(object, path, options = {})
      @object  = object
      @path    = path.to_s
      @options = options
    end

    # @return [void]
    def parse
      ERB.new(load, nil, '-').result(binding)
    end

    protected

    # @!attribute [r] object
    # @return [Class]
    attr_reader :object

    # @!attribute [r] options
    # @return [Hash]
    attr_reader :options

    private

    # @return [String]
    def load
      File.read(path)
    end

    # @raise [MissingRequired] when the path is empty.
    # @raise [MissingRequired] when the path does not exist.
    # @return [String]
    def path
      fail MissingRequired, 'No path to template specified.' if @path.empty?

      unless File.exist?(@path)
        fail MissingRequired, "Template file cannot be found. (#{@path})"
      end

      @path
    end

  end # Template

end # Vedeu

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
vedeu-0.4.50 lib/vedeu/support/template.rb
vedeu-0.4.49 lib/vedeu/support/template.rb
vedeu-0.4.48 lib/vedeu/support/template.rb
vedeu-0.4.47 lib/vedeu/support/template.rb
vedeu-0.4.46 lib/vedeu/support/template.rb
vedeu-0.4.45 lib/vedeu/support/template.rb
vedeu-0.4.44 lib/vedeu/support/template.rb
vedeu-0.4.43 lib/vedeu/support/template.rb
vedeu-0.4.42 lib/vedeu/support/template.rb
vedeu-0.4.41 lib/vedeu/support/template.rb
vedeu-0.4.40 lib/vedeu/support/template.rb
vedeu-0.4.39 lib/vedeu/support/template.rb
vedeu-0.4.38 lib/vedeu/support/template.rb
vedeu-0.4.37 lib/vedeu/support/template.rb
vedeu-0.4.36 lib/vedeu/support/template.rb