Sha256: db68891e624f1a4708dce2a177158191b38ef6858ea6930a37b66f0dda0f19ce

Contents?: true

Size: 1.59 KB

Versions: 10

Compression:

Stored size: 1.59 KB

Contents

require 'tilt'

module Frank

  # Scss template implementation. See:
  # http://haml.hamptoncatlin.com/
  #
  # Sass templates do not support object scopes, locals, or yield.
  class SassTemplate < Tilt::SassTemplate
    def prepare
      @engine = ::Sass::Engine.new(data, sass_options.merge(Frank.sass_options || {}).merge(:syntax => :sass))
    end
  end
  Tilt.register 'sass', SassTemplate

  # Scss template implementation. See:
  # http://haml.hamptoncatlin.com/
  #
  # Sass templates do not support object scopes, locals, or yield.
  class ScssTemplate < Tilt::SassTemplate
    def prepare
      @engine = ::Sass::Engine.new(data, sass_options.merge(Frank.sass_options || {}).merge(:syntax => :scss))
    end
  end
  Tilt.register 'scss', ScssTemplate

  # Radius Template
  # http://github.com/jlong/radius/
  class RadiusTemplate < Tilt::Template
    def initialize_engine
      return if defined? ::Radius
      require_template_library 'radius'
    end

    def prepare
      @context = Class.new(Radius::Context).new
    end

    def evaluate(scope, locals, &block)
      @context.define_tag("yield") do
        block.call
      end
      (class << @context; self; end).class_eval do
        define_method :tag_missing do |tag, attr, &block|
          if locals.key?(tag.to_sym)
            locals[tag.to_sym]
          else
            scope.__send__(tag)  # any way to support attr as args?
          end
        end
      end
      # TODO: how to config tag prefix?
      parser = Radius::Parser.new(@context, :tag_prefix => 'r')
      parser.parse(data)
    end
  end
  Tilt.register 'radius', RadiusTemplate
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
frank-1.0.7 lib/frank/tilt_setup.rb
frank-1.0.6 lib/frank/tilt_setup.rb
frank-1.0.5 lib/frank/tilt_setup.rb
frank-1.0.4 lib/frank/tilt_setup.rb
frank-1.0.3 lib/frank/tilt_setup.rb
frank-1.0.2 lib/frank/tilt_setup.rb
frank-1.0.1 lib/frank/tilt_setup.rb
frank-1.0.0 lib/frank/tilt_setup.rb
frank-0.4.1 lib/frank/tilt_setup.rb
frank-0.4.0 lib/frank/tilt_setup.rb