Sha256: 9c2a5977bcc4b9de23a95623effc25558dc8716cf7fcc1971c2cb7355b05d736

Contents?: true

Size: 1.57 KB

Versions: 45

Compression:

Stored size: 1.57 KB

Contents

module Vedeu

  module Templating

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

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

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

      # @return [Vedeu::Views::Stream]
      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 [Vedeu::Error::MissingRequired] When the path is empty
      #   or does not exist.
      # @return [String]
      def path
        fail Vedeu::Error::MissingRequired,
             'No path to template specified.'.freeze if @path.empty?

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

        @path
      end

    end # Template

  end # Templating

end # Vedeu

Version data entries

45 entries across 45 versions & 1 rubygems

Version Path
vedeu-0.6.71 lib/vedeu/templating/template.rb
vedeu-0.6.70 lib/vedeu/templating/template.rb
vedeu-0.6.69 lib/vedeu/templating/template.rb
vedeu-0.6.68 lib/vedeu/templating/template.rb
vedeu-0.6.67 lib/vedeu/templating/template.rb
vedeu-0.6.66 lib/vedeu/templating/template.rb
vedeu-0.6.65 lib/vedeu/templating/template.rb
vedeu-0.6.64 lib/vedeu/templating/template.rb
vedeu-0.6.63 lib/vedeu/templating/template.rb
vedeu-0.6.62 lib/vedeu/templating/template.rb
vedeu-0.6.61 lib/vedeu/templating/template.rb
vedeu-0.6.60 lib/vedeu/templating/template.rb
vedeu-0.6.59 lib/vedeu/templating/template.rb
vedeu-0.6.58 lib/vedeu/templating/template.rb
vedeu-0.6.57 lib/vedeu/templating/template.rb
vedeu-0.6.56 lib/vedeu/templating/template.rb
vedeu-0.6.54 lib/vedeu/templating/template.rb
vedeu-0.6.53 lib/vedeu/templating/template.rb
vedeu-0.6.52 lib/vedeu/templating/template.rb
vedeu-0.6.51 lib/vedeu/templating/template.rb