Sha256: 755b29a89d1cb9f38a519a92d2bb0873221202e67d2cdbcf4918a7e37217826a

Contents?: true

Size: 946 Bytes

Versions: 7

Compression:

Stored size: 946 Bytes

Contents

require 'temple'
require 'tilt'
require 'faml/filter_compilers/base'
require 'faml/text_compiler'

module Faml
  module FilterCompilers
    class TiltBase < Base
      include Temple::Utils

      def self.render_with_tilt(name, source)
        ::Tilt["t.#{name}"].new { source }.render
      end

      protected

      def compile_with_tilt(temple, name, texts)
        source = texts.join("\n")
        if TextCompiler.contains_interpolation?(source)
          text_temple = [:multi]
          compile_texts(text_temple, texts)
          sym = unique_name
          temple << [:capture, sym, text_temple]
          temple << [:dynamic, "::Faml::FilterCompilers::TiltBase.render_with_tilt(#{name.inspect}, #{sym})"]
        else
          compiled = self.class.render_with_tilt(name, source)
          temple << [:static, compiled]
          temple.concat([[:newline]] * (texts.size - 1))
        end
        temple
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
faml-0.2.6 lib/faml/filter_compilers/tilt_base.rb
faml-0.2.5 lib/faml/filter_compilers/tilt_base.rb
faml-0.2.4 lib/faml/filter_compilers/tilt_base.rb
faml-0.2.3 lib/faml/filter_compilers/tilt_base.rb
faml-0.2.2 lib/faml/filter_compilers/tilt_base.rb
faml-0.2.1 lib/faml/filter_compilers/tilt_base.rb
faml-0.2.0 lib/faml/filter_compilers/tilt_base.rb