Sha256: 909b88ac1f7fd029ae41fbd2c54ab765a660a9623f0d637f1e0b560b2814e531

Contents?: true

Size: 1.64 KB

Versions: 129

Compression:

Stored size: 1.64 KB

Contents

require 'tilt/template'
require 'erb'

module Tilt
  # ERB template implementation. See:
  # http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html
  class ERBTemplate < Template
    @@default_output_variable = '_erbout'

    SUPPORTS_KVARGS = ::ERB.instance_method(:initialize).parameters.assoc(:key) rescue false

    def self.default_output_variable
      @@default_output_variable
    end

    def self.default_output_variable=(name)
      warn "#{self}.default_output_variable= has been replaced with the :outvar-option"
      @@default_output_variable = name
    end

    def prepare
      @outvar = options[:outvar] || self.class.default_output_variable
      options[:trim] = '<>' if !(options[:trim] == false) && (options[:trim].nil? || options[:trim] == true)
      @engine = if SUPPORTS_KVARGS
        ::ERB.new(data, trim_mode: options[:trim], eoutvar: @outvar)
      else
        ::ERB.new(data, options[:safe], options[:trim], @outvar)
      end
    end

    def precompiled_template(locals)
      source = @engine.src
      source
    end

    def precompiled_preamble(locals)
      <<-RUBY
        begin
          __original_outvar = #{@outvar} if defined?(#{@outvar})
          #{super}
      RUBY
    end

    def precompiled_postamble(locals)
      <<-RUBY
          #{super}
        ensure
          #{@outvar} = __original_outvar
        end
      RUBY
    end

    # ERB generates a line to specify the character coding of the generated
    # source in 1.9. Account for this in the line offset.
    if RUBY_VERSION >= '1.9.0'
      def precompiled(locals)
        source, offset = super
        [source, offset + 1]
      end
    end
  end
end

Version data entries

129 entries across 93 versions & 12 rubygems

Version Path
brakeman-4.10.1 bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/erb.rb
brakeman-5.0.0.pre1 bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/erb.rb
brakeman-4.10.0 bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/erb.rb
brakeman-4.9.1 bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/erb.rb
logstash-filter-csharp-0.2.1 vendor/bundle/jruby/2.5.0/gems/tilt-2.0.10/lib/tilt/erb.rb
logstash-filter-csharp-0.2.0 vendor/bundle/jruby/2.5.0/gems/tilt-2.0.10/lib/tilt/erb.rb
brakeman-4.9.0 bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/erb.rb
logstash-output-scalyr-0.1.5 vendor/bundle/jruby/2.5.0/gems/tilt-2.0.9/lib/tilt/erb.rb
logstash-output-scalyr-0.1.5 vendor/bundle/jruby/2.5.0/gems/tilt-2.0.10/lib/tilt/erb.rb
logstash-output-scalyr-0.1.4 vendor/bundle/jruby/2.5.0/gems/tilt-2.0.9/lib/tilt/erb.rb
logstash-output-scalyr-0.1.4 vendor/bundle/jruby/2.5.0/gems/tilt-2.0.10/lib/tilt/erb.rb
logstash-output-scalyr-0.1.3 vendor/bundle/jruby/2.5.0/gems/tilt-2.0.9/lib/tilt/erb.rb
logstash-output-scalyr-0.1.3 vendor/bundle/jruby/2.5.0/gems/tilt-2.0.10/lib/tilt/erb.rb
files.com-1.0.55 docs/vendor/bundle/ruby/2.5.0/gems/tilt-2.0.9/lib/tilt/erb.rb
logstash-output-scalyr-0.1.2 vendor/bundle/jruby/2.5.0/gems/tilt-2.0.9/lib/tilt/erb.rb
logstash-output-scalyr-0.1.2 vendor/bundle/jruby/2.5.0/gems/tilt-2.0.10/lib/tilt/erb.rb
brakeman-4.8.2 bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/erb.rb
brakeman-4.8.1 bundle/ruby/2.4.0/gems/tilt-2.0.10/lib/tilt/erb.rb
brakeman-4.8.0 bundle/ruby/2.7.0/gems/tilt-2.0.10/lib/tilt/erb.rb
zuora_connect_ui-0.10.0 vendor/ruby/2.6.0/gems/brakeman-4.7.2/bundle/ruby/2.6.0/gems/tilt-2.0.10/lib/tilt/erb.rb