Sha256: dca7004fb0ed6c43880520716c3496d89439857b37c6f6a2c0a4f0809f13bccc

Contents?: true

Size: 668 Bytes

Versions: 1

Compression:

Stored size: 668 Bytes

Contents

# enables variable access as a method call to render helper
# = render :_menu, foo: 123, bar: nil
# render.foo # 123
# render.bar ||= 456
# render.bar # 456
module Lux
  class InlineRenderProxy
    def initialize context, &block
      @context = context
      @block   = block
    end

    def method_missing name, value=nil
      name = name.to_s

      if name.sub!('=', '')
        @context.instance_variable_set("@_#{name}", value)
      end

      @context.instance_variable_get("@_#{name}")
    end
  end

  def [] name
    @context.instance_variable_get("@_#{name}")
  end

  def []= name, value
    @context.instance_variable_set("@_#{name}", value)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lux-fw-0.6.2 ./lib/lux/template/inline_render_proxy.rb