Sha256: d3fe614925739388604b3cc532c5dc17408538cc068004d632af8a3cb31f9a79

Contents?: true

Size: 902 Bytes

Versions: 6

Compression:

Stored size: 902 Bytes

Contents

require "erb"

module MVCLI
  class ERB
    def initialize
      @compiler = ::ERB::Compiler.new("<>")
      @compiler.pre_cmd = [""]
      @compiler.put_cmd = "@_erbout <<"
      @compiler.insert_cmd = "@_erbout <<"
      @compiler.post_cmd = ["nil"]
    end

    def compile(string, filename = '(erb)')
      code, enc = @compiler.compile string
      Template.new code, enc, filename
    end

    class Template
      def initialize(code, enc, filename)
        @code, @enc, @filename = code, enc, filename
      end

      def call(context, output)
        binding = context.instance_eval do
          @_erbout = output
          Kernel.binding
        end
        eval @code, binding, @filename, 1
      ensure
        context.remove_instance_variable(:@_erbout)
      end

      def to_proc
        proc do |context, output|
          call context, output
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
mvcli-0.0.7 lib/mvcli/erb.rb
mvcli-0.0.6 lib/mvcli/erb.rb
mvcli-0.0.5 lib/mvcli/erb.rb
mvcli-0.0.4 lib/mvcli/erb.rb
mvcli-0.0.3 lib/mvcli/erb.rb
mvcli-0.0.2 lib/mvcli/erb.rb