Sha256: a8437a183515674cee96e0ba16be0c9790c31a28de352e741811c2d7e12c836f

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

require_relative "parameter_bag"

module Kanal
  module Core
    module Helpers
      # Parameter bag but it checks registrator for existence of parameters
      # and if they are has needed by registrator allowances, types etc, whatever
      # registrator rules are stored for property
      class ParameterBagWithRegistrator < ParameterBag
        def initialize(registrator)
          super()
          @registrator = registrator
        end

        def get(name)
          validate_parameter_registration name

          super name
        end

        def set(name, value)
          validate_parameter_registration name

          readonly = @registrator.get_parameter_registration_if_exists(name).readonly?

          if readonly
            value_exists = !get(name).nil?

            if value_exists
              raise "Parameter #{name} is marked readonly! You tried to set it's value, but
              it already has value."
            end
          end

          super name, value
        end

        def validate_parameter_registration(name)
          unless @registrator.parameter_registered? name
            raise "Parameter #{name} was not registered! Did you forget to register that parameter?"
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kanal-0.3.0 lib/kanal/core/helpers/parameter_bag_with_registrator.rb