Sha256: 2e9ed1b5ff2b7cc6577749dc767785e4127a27072d02fe9301cc8d3ea293c51b

Contents?: true

Size: 704 Bytes

Versions: 4

Compression:

Stored size: 704 Bytes

Contents

module Munge
  module Transformers
    class Tilt
      def initialize(scope)
        @pristine_scope = scope
        @registry = []
      end

      def name
        :tilt
      end

      def call(item, content = nil, renderer = nil)
        scope = @pristine_scope.dup
        scope.instance_variable_set :@renderer, @renderer
        dirty_scope = extend_with_helpers(scope)
        dirty_scope.render_with_layout(item, content_engines: renderer, content_override: content)
      end

      def register(helper)
        @registry.push(helper)
      end

      private

      def extend_with_helpers(scope)
        @registry
          .inject(scope) { |a, e| a.extend(e) }
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
munge-0.8.0 lib/munge/transformers/tilt.rb
munge-0.7.1 lib/munge/transformers/tilt.rb
munge-0.7.0 lib/munge/transformers/tilt.rb
munge-0.6.0 lib/munge/transformers/tilt.rb