Sha256: 3921e45e3ef30694407ed486692719d56b817300a8ba5153a90b2958923fe882

Contents?: true

Size: 704 Bytes

Versions: 10

Compression:

Stored size: 704 Bytes

Contents

require 'neo/rails/exposure/errors'

module Neo
  module Rails
    module Exposure
      # Stores the concrete exposures per request
      class Exposures
        extend Forwardable

        def_delegator :@store, :[]
        def_delegator :@store, :key?, :exposed?

        def initialize(names)
          @names = names
          @store = Hash.new
        end

        def []=(key, value)
          raise UndeclaredVariableError unless @names.include?(key)
          @store[key] = value
        end

        def method_missing(method_name, *args)
          if exposed?(method_name)
            @store[method_name]
          else
            super
          end
        end

      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
neo-rails-0.4.1 lib/neo/rails/exposure/exposures.rb
neo-rails-0.4.0 lib/neo/rails/exposure/exposures.rb
neo-rails-0.3.2 lib/neo/rails/exposure/exposures.rb
neo-rails-0.3.1 lib/neo/rails/exposure/exposures.rb
neo-rails-0.3 lib/neo/rails/exposure/exposures.rb
neo-rails-0.2.3.1 lib/neo/rails/exposure/exposures.rb
neo-rails-0.2.3 lib/neo/rails/exposure/exposures.rb
neo-rails-0.2.2 lib/neo/rails/exposure/exposures.rb
neo-rails-0.2.1 lib/neo/rails/exposure/exposures.rb
neo-rails-0.2.0 lib/neo/rails/exposure/exposures.rb