Sha256: 4ad9b59ea508836c3acdbb99c5af1d130d867827f2c9d93ccda246c40f49c627

Contents?: true

Size: 1.11 KB

Versions: 6

Compression:

Stored size: 1.11 KB

Contents

require "active_support/all"
require "action_view/helpers"
require "action_view/context"
require "action_view/buffers"

module Rbexy
  class Runtime
    include ActionView::Context
    include ActionView::Helpers::TagHelper
    include ViewContextHelper

    DefaultTagBuilder = ActionView::Helpers::TagHelper::TagBuilder

    def self.create_tag_builder(context, provider = nil)
      provider = provider ||
        provider_from_context(context) ||
        Rbexy.configuration.component_provider

      if provider
        ComponentTagBuilder.new(context, provider)
      else
        ActionView::Helpers::TagHelper::TagBuilder.new(context)
      end
    end

    def self.provider_from_context(context)
      if context.respond_to?(:rbexy_component_provider)
        context.rbexy_component_provider
      end
    end

    def initialize(component_provider = nil)
      @rbexy_tag = self.class.create_tag_builder(self, component_provider)
    end

    def evaluate(code)
      instance_eval(code)
    rescue => e
      e.set_backtrace(e.backtrace.map { |l| l.gsub("(eval)", "(rbx template string)") })
      raise e
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rbexy-0.3.1 lib/rbexy/runtime.rb
rbexy-0.3.0 lib/rbexy/runtime.rb
rbexy-0.2.3 lib/rbexy/runtime.rb
rbexy-0.2.2 lib/rbexy/runtime.rb
rbexy-0.2.1 lib/rbexy/runtime.rb
rbexy-0.2.0 lib/rbexy/runtime.rb