Sha256: c6ce95474e0e51dfed26d6f59efc56bc9f050bf1d4b827f249a4bf36665aa938

Contents?: true

Size: 1.7 KB

Versions: 2

Compression:

Stored size: 1.7 KB

Contents

# @Opulent
module Opulent
  # @OpulentTemplate
  class Template < ::Tilt::Template
    # Allow accessing engine definitions
    attr_reader :def

    # Set default mime type
    self.default_mime_type = 'text/html'

    # Do whatever preparation is necessary to setup the underlying template
    # engine. Called immediately after template data is loaded. Instance
    # variables set in this method are available when #evaluate is called.
    #
    # Subclasses must provide an implementation of this method.
    #
    def prepare
      # Set up the rendering engine
      @engine = ::Opulent.new eval_file.to_sym, @options

      # Set reusable template definitions
      @def = @engine.def
    end

    # Execute the compiled template and return the result string. Template
    # evaluation is guaranteed to be performed in the scope object with the
    # locals specified and with support for yielding to the block.
    #
    # This method is only used by source generating templates. Subclasses that
    # override render() may not support all features.
    #
    def evaluate(scope, locals, &block)
      fail ArgumentError, 'Invalid scope: must not be frozen.' if scope.frozen?
      super
    end

    # A string containing the (Ruby) source code for the template. The
    # default Template#evaluate implementation requires either this
    # method or the #precompiled method be overridden. When defined,
    # the base Template guarantees correct file/line handling, locals
    # support, custom scopes, proper encoding, and support for template
    # compilation.
    #
    def precompiled_template(_locals = {})
      @engine.template
    end
  end

  # Register Opulent to Tilt
  ::Tilt.register Template, 'opulent', 'op'
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
opulent-1.7.2 lib/opulent/template.rb
opulent-1.7.1 lib/opulent/template.rb