Sha256: 22d876dfefc6c255f8addb5c921ccdf96bfa56d233a925d2582e33648ada8e57

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

module CanTango
  module Registry
    module Permit
      def registry_for type
        raise ArgumentError, "Not an available permit type, was: #{type} - available: #{available_types}" unless available_type? type
        inst_var_name = "@#{type}"
        instance_variable_set(inst_var_name, CanTango::Registry::Hash.new) if !instance_variable_get(inst_var_name)
        instance_variable_get(inst_var_name)
      end

      def registered_for type, name = nil
        name ? registry_for(type)[name.to_s] : registry_for(type)
      end

      def all
        (available_types - [:special]).map{|type| registry_for(type) }
      end

      def show_all
        (available_types - [:special]).map{|type| "#{type} -> #{show_hash_reg(registry_for(type))}"  }.join("\n")
      end
      
      protected

      def show_hash_reg reg
        reg.registered.map {|key, value| "#{key} (#{value})" }.join(',')
      end

      def available_type? type
        available_types.include? type
      end
      
      def available_types
        CanTango.config.permits.types.available
      end
      
      class Base
        include CanTango::Registry::Permit
      end
    end
  end
end



Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cantango-permits-0.1.1 lib/cantango/permits_ext/registry/permit.rb