cantango-config 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. data/VERSION +1 -1
  2. data/cantango-config.gemspec +21 -20
  3. data/lib/cantango/class_methods.rb +27 -0
  4. data/lib/cantango/config.rb +2 -1
  5. data/lib/cantango/configuration/accounts.rb +1 -1
  6. data/lib/cantango/configuration/adapters.rb +1 -2
  7. data/lib/cantango/configuration/categories.rb +1 -1
  8. data/lib/cantango/configuration/engines.rb +1 -1
  9. data/lib/cantango/configuration/hooks.rb +1 -1
  10. data/lib/cantango/configuration/localhosts.rb +1 -1
  11. data/lib/cantango/configuration/models.rb +1 -1
  12. data/lib/cantango/configuration/orms.rb +1 -1
  13. data/lib/cantango/configuration/registry/base.rb +55 -0
  14. data/lib/cantango/configuration/registry/candidate.rb +96 -0
  15. data/lib/cantango/configuration/registry/hash.rb +92 -0
  16. data/lib/cantango/configuration/registry.rb +3 -52
  17. data/lib/cantango/configuration/users.rb +1 -1
  18. data/lib/cantango/configuration.rb +12 -2
  19. data/spec/cantango/configuration/accounts_spec.rb +1 -1
  20. data/spec/cantango/configuration/categories_spec.rb +1 -1
  21. data/spec/cantango/configuration/engines_spec.rb +1 -1
  22. data/spec/cantango/configuration/localhosts_spec.rb +1 -1
  23. data/spec/cantango/configuration/models_spec.rb +1 -1
  24. data/spec/cantango/configuration/orms_spec.rb +1 -1
  25. data/spec/cantango/configuration/{registry_spec.rb → registry/base_spec.rb} +2 -2
  26. data/spec/cantango/configuration/{candidate_registry_spec.rb → registry/candidate_spec.rb} +2 -2
  27. data/spec/cantango/configuration/{hash_registry_spec.rb → registry/hash_spec.rb} +2 -2
  28. data/spec/cantango/configuration/shared/{registry_ex.rb → registry/base_ex.rb} +0 -0
  29. data/spec/cantango/configuration/shared/{candidate_registry_ex.rb → registry/candidate_ex.rb} +0 -0
  30. data/spec/cantango/configuration/shared/{hash_registry_ex.rb → registry/hash_ex.rb} +0 -0
  31. data/spec/cantango/configuration/users_spec.rb +1 -1
  32. metadata +31 -30
  33. data/lib/cantango/configuration/candidate_registry.rb +0 -94
  34. data/lib/cantango/configuration/hash_registry.rb +0 -91
  35. data/spec/cantango/configuration/shared/role_registry_ex.rb +0 -22
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = "cantango-config"
8
- s.version = "0.1.0"
7
+ s.name = %q{cantango-config}
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Kristian Mandrup"]
12
- s.date = "2011-11-25"
13
- s.description = "Configuration DSL for configuring CanTango"
14
- s.email = "kmandrup@gmail.com"
11
+ s.authors = [%q{Kristian Mandrup}]
12
+ s.date = %q{2011-11-25}
13
+ s.description = %q{Configuration DSL for configuring CanTango}
14
+ s.email = %q{kmandrup@gmail.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
17
17
  "README.mdown"
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
28
28
  "cantango-config.gemspec",
29
29
  "lib/cantango/adapter/compiler.rb",
30
30
  "lib/cantango/adapter/moneta.rb",
31
+ "lib/cantango/class_methods.rb",
31
32
  "lib/cantango/config.rb",
32
33
  "lib/cantango/configuration.rb",
33
34
  "lib/cantango/configuration/ability.rb",
@@ -35,14 +36,12 @@ Gem::Specification.new do |s|
35
36
  "lib/cantango/configuration/accounts.rb",
36
37
  "lib/cantango/configuration/adapters.rb",
37
38
  "lib/cantango/configuration/autoload.rb",
38
- "lib/cantango/configuration/candidate_registry.rb",
39
39
  "lib/cantango/configuration/categories.rb",
40
40
  "lib/cantango/configuration/debug.rb",
41
41
  "lib/cantango/configuration/engine.rb",
42
42
  "lib/cantango/configuration/engines.rb",
43
43
  "lib/cantango/configuration/factory.rb",
44
44
  "lib/cantango/configuration/guest.rb",
45
- "lib/cantango/configuration/hash_registry.rb",
46
45
  "lib/cantango/configuration/hooks.rb",
47
46
  "lib/cantango/configuration/localhosts.rb",
48
47
  "lib/cantango/configuration/models.rb",
@@ -56,6 +55,9 @@ Gem::Specification.new do |s|
56
55
  "lib/cantango/configuration/modes.rb",
57
56
  "lib/cantango/configuration/orms.rb",
58
57
  "lib/cantango/configuration/registry.rb",
58
+ "lib/cantango/configuration/registry/base.rb",
59
+ "lib/cantango/configuration/registry/candidate.rb",
60
+ "lib/cantango/configuration/registry/hash.rb",
59
61
  "lib/cantango/configuration/user.rb",
60
62
  "lib/cantango/configuration/users.rb",
61
63
  "spec/cantango/config_spec.rb",
@@ -64,7 +66,6 @@ Gem::Specification.new do |s|
64
66
  "spec/cantango/configuration/accounts_spec.rb",
65
67
  "spec/cantango/configuration/adapters_spec.rb",
66
68
  "spec/cantango/configuration/autoload_spec.rb",
67
- "spec/cantango/configuration/candidate_registry_spec.rb",
68
69
  "spec/cantango/configuration/categories_spec.rb",
69
70
  "spec/cantango/configuration/debug_spec.rb",
70
71
  "spec/cantango/configuration/engines/engine_shared.rb",
@@ -72,17 +73,17 @@ Gem::Specification.new do |s|
72
73
  "spec/cantango/configuration/factory_spec.rb",
73
74
  "spec/cantango/configuration/guest/find_guest_default_way_spec.rb",
74
75
  "spec/cantango/configuration/guest_spec.rb",
75
- "spec/cantango/configuration/hash_registry_spec.rb",
76
76
  "spec/cantango/configuration/localhosts_spec.rb",
77
77
  "spec/cantango/configuration/models_spec.rb",
78
78
  "spec/cantango/configuration/orms_spec.rb",
79
- "spec/cantango/configuration/registry_spec.rb",
80
- "spec/cantango/configuration/shared/candidate_registry_ex.rb",
79
+ "spec/cantango/configuration/registry/base_spec.rb",
80
+ "spec/cantango/configuration/registry/candidate_spec.rb",
81
+ "spec/cantango/configuration/registry/hash_spec.rb",
81
82
  "spec/cantango/configuration/shared/factory_ex.rb",
82
- "spec/cantango/configuration/shared/hash_registry_ex.rb",
83
83
  "spec/cantango/configuration/shared/modes_ex.rb",
84
- "spec/cantango/configuration/shared/registry_ex.rb",
85
- "spec/cantango/configuration/shared/role_registry_ex.rb",
84
+ "spec/cantango/configuration/shared/registry/base_ex.rb",
85
+ "spec/cantango/configuration/shared/registry/candidate_ex.rb",
86
+ "spec/cantango/configuration/shared/registry/hash_ex.rb",
86
87
  "spec/cantango/configuration/user_spec.rb",
87
88
  "spec/cantango/configuration/users_spec.rb",
88
89
  "spec/cantango/configuration_spec.rb",
@@ -100,11 +101,11 @@ Gem::Specification.new do |s|
100
101
  "spec/migrations/001_create_projects.rb",
101
102
  "spec/spec_helper.rb"
102
103
  ]
103
- s.homepage = "http://github.com/kristianmandrup/cantango-config"
104
- s.licenses = ["MIT"]
105
- s.require_paths = ["lib"]
106
- s.rubygems_version = "1.8.10"
107
- s.summary = "Configuration for Cantango"
104
+ s.homepage = %q{http://github.com/kristianmandrup/cantango-config}
105
+ s.licenses = [%q{MIT}]
106
+ s.require_paths = [%q{lib}]
107
+ s.rubygems_version = %q{1.8.6}
108
+ s.summary = %q{Configuration for Cantango}
108
109
 
109
110
  if s.respond_to? :specification_version then
110
111
  s.specification_version = 3
@@ -0,0 +1,27 @@
1
+ module CanTango
2
+ module ClassMethods
3
+ # Engine hook
4
+ # Run after the initializers are ran for all Railties (including the application itself), but before eager loading and the middleware stack is built.
5
+ # More importantly, will run upon every request in development, but only once (during boot-up) in production and test.
6
+ def to_prepare
7
+ config.hook(:to_prepare).call if config.hook(:to_prepare)
8
+ end
9
+
10
+ # engine hook, run after all Rails initializations have been executed
11
+ def after_initialize
12
+ config.hook(:after_initialize).call if config.hook(:after_initialize)
13
+ end
14
+
15
+ def debug!
16
+ config.debug.set :on
17
+ end
18
+
19
+ def debug_off!
20
+ config.debug.set :off
21
+ end
22
+
23
+ def debug?
24
+ config.debug.on?
25
+ end
26
+ end
27
+ end
@@ -8,5 +8,6 @@ require 'cantango/core'
8
8
  AutoLoader.namespaces = {:CanTango => 'cantango'}
9
9
 
10
10
  module CanTango
11
- autoload_modules :Configuration
11
+ autoload_modules :Configuration, :ClassMethods
12
+ include ClassMethods
12
13
  end
@@ -1,6 +1,6 @@
1
1
  module CanTango
2
2
  class Configuration
3
- class Accounts < CandidateRegistry
3
+ class Accounts < Registry::Candidate
4
4
  include Singleton
5
5
  end
6
6
  end
@@ -1,7 +1,6 @@
1
1
  module CanTango
2
2
  class Configuration
3
- class Adapters < Registry
4
-
3
+ class Adapters < Registry::Base
5
4
  include Singleton
6
5
 
7
6
  def adapter name
@@ -1,6 +1,6 @@
1
1
  module CanTango
2
2
  class Configuration
3
- class Categories < HashRegistry
3
+ class Categories < Registry::Hash
4
4
 
5
5
  include Singleton
6
6
 
@@ -1,6 +1,6 @@
1
1
  module CanTango
2
2
  class Configuration
3
- class Engines < HashRegistry
3
+ class Engines < Registry::Hash
4
4
  autoload_modules :Permission, :Engine
5
5
 
6
6
  include Singleton
@@ -1,6 +1,6 @@
1
1
  module CanTango
2
2
  class Configuration
3
- class Hooks < HashRegistry
3
+ class Hooks < Registry::Hash
4
4
  include Singleton
5
5
 
6
6
  def value_methods
@@ -1,6 +1,6 @@
1
1
  module CanTango
2
2
  class Configuration
3
- class Localhosts < Registry
3
+ class Localhosts < Registry::Base
4
4
  include Singleton
5
5
 
6
6
  def default
@@ -9,7 +9,7 @@ module CanTango
9
9
  include ClassExt
10
10
 
11
11
  def actions
12
- @actions ||= HashRegistry.new
12
+ @actions ||= Registry::Hash.new
13
13
  end
14
14
 
15
15
  def by_reg_exp reg_exp
@@ -1,6 +1,6 @@
1
1
  module CanTango
2
2
  class Configuration
3
- class Orms < Registry
3
+ class Orms < Registry::Base
4
4
  include Singleton
5
5
  end
6
6
  end
@@ -0,0 +1,55 @@
1
+ require 'singleton'
2
+ require 'sugar-high/kind_of'
3
+
4
+ module CanTango
5
+ class Configuration
6
+ module Registry
7
+ class Base
8
+ attr_writer :default
9
+ attr_accessor :registered
10
+
11
+ def types= *types
12
+ @types = types.select {|t| t.is_a? Class }
13
+ end
14
+
15
+ def types
16
+ @types ||= [Symbol, String]
17
+ @types
18
+ end
19
+
20
+ def clean!
21
+ @registered = []
22
+ end
23
+
24
+ alias_method :clear!, :clean!
25
+
26
+ def default!
27
+ @registered = default
28
+ end
29
+
30
+ def register *list
31
+ registered << list.select_kinds_of(*types)
32
+ @registered.flat_uniq!
33
+ end
34
+
35
+ alias_method :<<, :register
36
+
37
+ def [] index
38
+ registered[index]
39
+ end
40
+
41
+ def registered
42
+ @registered ||= default
43
+ end
44
+
45
+ def registered? label
46
+ registered.map(&:to_s).include? label.to_s
47
+ end
48
+
49
+ def default
50
+ @default ||= []
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,96 @@
1
+ require 'singleton'
2
+ require 'sugar-high/kind_of'
3
+
4
+ module CanTango
5
+ class Configuration
6
+ module Registry
7
+ class Candidate
8
+ def register label, value
9
+ raise "first arg must be a label, was: #{label}" if !label.kind_of_label?
10
+ raise "second arg must be a valid Class, was: #{value}" if !valid? value
11
+ name_registry.register label.to_sym
12
+ class_registry.register value
13
+ end
14
+ alias_method :[]=, :register
15
+
16
+ def << hash
17
+ raise "Must be a hash" if !hash.is_a? Hash
18
+ hash.each_pair do |key, value|
19
+ register key, value
20
+ end
21
+ end
22
+
23
+ def registered
24
+ name_registry.registered
25
+ end
26
+ alias_method :registered_names, :registered
27
+
28
+ def clean!
29
+ name_registry.clean!
30
+ class_registry.clean!
31
+ end
32
+ alias_method :clear!, :clean!
33
+
34
+ def registered_classes
35
+ class_registry.registered
36
+ end
37
+
38
+ def registered? name
39
+ name_registry.registered? name
40
+ end
41
+
42
+ def registered_class? name
43
+ class_registry.registered? name
44
+ end
45
+
46
+ def name_registry
47
+ NameRegistry.instance
48
+ end
49
+
50
+ def class_registry
51
+ ClassRegistry.instance
52
+ end
53
+
54
+ def value_methods
55
+ class_registry.value_methods
56
+ end
57
+
58
+ def value_types
59
+ class_registry.types
60
+ end
61
+
62
+ class NameRegistry < Registry
63
+ include Singleton
64
+ end
65
+
66
+ class ClassRegistry < Registry
67
+ include Singleton
68
+
69
+ def types
70
+ [Class]
71
+ end
72
+
73
+ def value_methods
74
+ []
75
+ end
76
+ end
77
+
78
+ protected
79
+
80
+ def valid? value
81
+ valid_by_type?(value) && valid_by_methods?(value)
82
+ end
83
+
84
+ def valid_by_type? value
85
+ return true if value_types.blank?
86
+ value.any_kind_of?(*value_types)
87
+ end
88
+
89
+ def valid_by_methods? value
90
+ return true if value_methods.blank?
91
+ value_methods.all?{|m| value.respond_to(m)}
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,92 @@
1
+ require 'singleton'
2
+ require 'sugar-high/kind_of'
3
+
4
+ module CanTango
5
+ class Configuration
6
+ module Registry
7
+ class Hash < Base
8
+ def types= *types
9
+ raise "This is a Hash registry!"
10
+ end
11
+
12
+ def types
13
+ [Hash]
14
+ end
15
+
16
+ def value_methods
17
+ []
18
+ end
19
+
20
+ def value_types
21
+ []
22
+ end
23
+
24
+ def clean!
25
+ registered = Hashie::Mash.new
26
+ end
27
+ alias_method :clear!, :clean!
28
+
29
+ def default!
30
+ @registered = default
31
+ end
32
+
33
+ def << hash
34
+ raise "Must be a hash" if !hash.is_a? Hash
35
+ registered.merge!(hash) and return if value_methods.empty? && value_types.empty?
36
+ hash.each_pair do |key, value|
37
+ registered[key] = value if value_api.all?{|m| value.respond_to(m)} && value.any_kind_of?(value_types)
38
+ end
39
+ end
40
+
41
+ def [] label
42
+ raise "Must be a label" if !label.kind_of_label?
43
+ registered[label.to_s]
44
+ end
45
+
46
+ def []= label, value
47
+ raise "Must be a label" if !label.kind_of_label?
48
+ registered[label.to_s] = value
49
+ end
50
+
51
+ def register hash
52
+ raise "Must be a hash" if !hash.is_a? Hash
53
+ registered.merge! hash
54
+ end
55
+
56
+ def unregister name
57
+ @registered = {} if name == :all
58
+ @registered.delete(name)
59
+ end
60
+
61
+ def registered
62
+ @registered ||= default
63
+ end
64
+
65
+ def registered_names
66
+ registered.keys
67
+ end
68
+
69
+ def registered_values
70
+ registered.values
71
+ end
72
+
73
+ def registered? label
74
+ registered_names.map(&:to_s).include? label.to_s
75
+ end
76
+ alias_method :registered_name, :registered?
77
+
78
+ def registered_value? value
79
+ registered_values.include? value
80
+ end
81
+
82
+ def default
83
+ @default ||= Hashie::Mash.new
84
+ end
85
+
86
+ def default= hash
87
+ @default = Hashie::Mash.new hash
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
@@ -1,56 +1,7 @@
1
- require 'singleton'
2
- require 'sugar-high/kind_of'
3
-
4
1
  module CanTango
5
2
  class Configuration
6
- class Registry
7
-
8
- attr_writer :default
9
- attr_accessor :registered
10
-
11
- def types= *types
12
- @types = types.select {|t| t.is_a? Class }
13
- end
14
-
15
- def types
16
- @types ||= [Symbol, String]
17
- @types
18
- end
19
-
20
- def clean!
21
- @registered = []
22
- end
23
-
24
- alias_method :clear!, :clean!
25
-
26
- def default!
27
- @registered = default
28
- end
29
-
30
- def register *list
31
- registered << list.select_kinds_of(*types)
32
- @registered.flat_uniq!
33
- end
34
-
35
- alias_method :<<, :register
36
-
37
- def [] index
38
- registered[index]
39
- end
40
-
41
- def registered
42
- @registered ||= default
43
- end
44
-
45
- def registered? label
46
- registered.map(&:to_s).include? label.to_s
47
- end
48
-
49
- def default
50
- @default ||= []
51
- end
3
+ module Registry
4
+ autoload_modules :Base, :Hash, :Candidate
52
5
  end
53
6
  end
54
- end
55
-
56
-
7
+ end
@@ -1,6 +1,6 @@
1
1
  module CanTango
2
2
  class Configuration
3
- class Users < CandidateRegistry
3
+ class Users < Registry::Candidate
4
4
  include Singleton
5
5
  end
6
6
  end
@@ -2,11 +2,21 @@ require 'set'
2
2
  require 'singleton'
3
3
 
4
4
  module CanTango
5
+ # The main entry point to configure CanTango
6
+ class << self
7
+ def configure &block
8
+ conf = CanTango::Configuration.instance
9
+ yield conf if block
10
+ conf
11
+ end
12
+
13
+ alias_method :config, :configure
14
+ end
15
+
5
16
  class Configuration
6
17
  autoload_modules :Categories
7
18
  autoload_modules :Models, :Engines, :Ability
8
- autoload_modules :Registry, :RoleRegistry, :HashRegistry, :CandidateRegistry
9
- autoload_modules :Roles, :RoleGroups, :SpecialPermits
19
+ autoload_modules :Registry
10
20
  autoload_modules :Factory, :Autoload, :Adapters, :Debug, :Modes, :Orms, :Localhosts, :Hooks
11
21
  autoload_modules :Account, :Accounts
12
22
  autoload_modules :User, :Guest, :Users
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/candidate_registry_ex'
2
+ require 'cantango/configuration/shared/registry/candidate_ex'
3
3
 
4
4
  class UserAccount
5
5
  end
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/hash_registry_ex'
2
+ require 'cantango/configuration/shared/registry/hash_ex'
3
3
 
4
4
  describe CanTango::Configuration::Categories::Category do
5
5
  subject { CanTango::Configuration::Categories::Category.new }
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/hash_registry_ex'
2
+ require 'cantango/configuration/shared/registry/hash_ex'
3
3
 
4
4
  class MyEngine < CanTango::Engine
5
5
  end
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/registry_ex'
2
+ require 'cantango/configuration/shared/registry/base_ex'
3
3
 
4
4
  describe CanTango::Configuration::Localhosts do
5
5
  subject { CanTango.config.localhosts }
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/hash_registry_ex'
2
+ require 'cantango/configuration/shared/registry/hash_ex'
3
3
  require 'fixtures/models/project'
4
4
 
5
5
  CanTango.debug!
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/registry_ex'
2
+ require 'cantango/configuration/shared/registry/base_ex'
3
3
 
4
4
  describe CanTango::Configuration::Orms do
5
5
  subject { CanTango.config.orms }
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/role_registry_ex'
2
+ require 'cantango/configuration/shared/registry/role_ex'
3
3
 
4
- class MyRegi < CanTango::Configuration::Registry
4
+ class MyRegi < CanTango::Configuration::Registry::Base
5
5
  end
6
6
 
7
7
  describe MyRegi do
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/candidate_registry_ex'
2
+ require 'cantango/configuration/shared/registry/candidate_ex'
3
3
 
4
- class MyReg < CanTango::Configuration::CandidateRegistry
4
+ class MyReg < CanTango::Configuration::Registry::Candidate
5
5
  end
6
6
 
7
7
  describe MyReg do
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/hash_registry_ex'
2
+ require 'cantango/configuration/shared/registry/hash_ex'
3
3
 
4
- class MyRegis < CanTango::Configuration::HashRegistry
4
+ class MyRegis < CanTango::Configuration::Registry::Hash
5
5
  end
6
6
 
7
7
  describe MyRegis do
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
- require 'cantango/configuration/shared/candidate_registry_ex'
2
+ require 'cantango/configuration/shared/registry/candidate_ex'
3
3
 
4
4
  class User
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cantango-config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-11-25 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &899147350 !ruby/object:Gem::Requirement
16
+ requirement: &70326895731020 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *899147350
24
+ version_requirements: *70326895731020
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sugar-high
27
- requirement: &899146740 !ruby/object:Gem::Requirement
27
+ requirement: &70326895729600 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.6.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *899146740
35
+ version_requirements: *70326895729600
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sweetloader
38
- requirement: &899146220 !ruby/object:Gem::Requirement
38
+ requirement: &70326895727800 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.1.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *899146220
46
+ version_requirements: *70326895727800
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: hashie
49
- requirement: &899145010 !ruby/object:Gem::Requirement
49
+ requirement: &70326895716440 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *899145010
57
+ version_requirements: *70326895716440
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: cantango-core
60
- requirement: &899107470 !ruby/object:Gem::Requirement
60
+ requirement: &70326895714540 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *899107470
68
+ version_requirements: *70326895714540
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
- requirement: &899106680 !ruby/object:Gem::Requirement
71
+ requirement: &70326895713380 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.1.rc
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *899106680
79
+ version_requirements: *70326895713380
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: jeweler
82
- requirement: &899105910 !ruby/object:Gem::Requirement
82
+ requirement: &70326895712200 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 1.6.4
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *899105910
90
+ version_requirements: *70326895712200
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rcov
93
- requirement: &899105410 !ruby/object:Gem::Requirement
93
+ requirement: &70326895710700 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *899105410
101
+ version_requirements: *70326895710700
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: rspec
104
- requirement: &899104870 !ruby/object:Gem::Requirement
104
+ requirement: &70326895709180 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: 2.6.0
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *899104870
112
+ version_requirements: *70326895709180
113
113
  description: Configuration DSL for configuring CanTango
114
114
  email: kmandrup@gmail.com
115
115
  executables: []
@@ -129,6 +129,7 @@ files:
129
129
  - cantango-config.gemspec
130
130
  - lib/cantango/adapter/compiler.rb
131
131
  - lib/cantango/adapter/moneta.rb
132
+ - lib/cantango/class_methods.rb
132
133
  - lib/cantango/config.rb
133
134
  - lib/cantango/configuration.rb
134
135
  - lib/cantango/configuration/ability.rb
@@ -136,14 +137,12 @@ files:
136
137
  - lib/cantango/configuration/accounts.rb
137
138
  - lib/cantango/configuration/adapters.rb
138
139
  - lib/cantango/configuration/autoload.rb
139
- - lib/cantango/configuration/candidate_registry.rb
140
140
  - lib/cantango/configuration/categories.rb
141
141
  - lib/cantango/configuration/debug.rb
142
142
  - lib/cantango/configuration/engine.rb
143
143
  - lib/cantango/configuration/engines.rb
144
144
  - lib/cantango/configuration/factory.rb
145
145
  - lib/cantango/configuration/guest.rb
146
- - lib/cantango/configuration/hash_registry.rb
147
146
  - lib/cantango/configuration/hooks.rb
148
147
  - lib/cantango/configuration/localhosts.rb
149
148
  - lib/cantango/configuration/models.rb
@@ -157,6 +156,9 @@ files:
157
156
  - lib/cantango/configuration/modes.rb
158
157
  - lib/cantango/configuration/orms.rb
159
158
  - lib/cantango/configuration/registry.rb
159
+ - lib/cantango/configuration/registry/base.rb
160
+ - lib/cantango/configuration/registry/candidate.rb
161
+ - lib/cantango/configuration/registry/hash.rb
160
162
  - lib/cantango/configuration/user.rb
161
163
  - lib/cantango/configuration/users.rb
162
164
  - spec/cantango/config_spec.rb
@@ -165,7 +167,6 @@ files:
165
167
  - spec/cantango/configuration/accounts_spec.rb
166
168
  - spec/cantango/configuration/adapters_spec.rb
167
169
  - spec/cantango/configuration/autoload_spec.rb
168
- - spec/cantango/configuration/candidate_registry_spec.rb
169
170
  - spec/cantango/configuration/categories_spec.rb
170
171
  - spec/cantango/configuration/debug_spec.rb
171
172
  - spec/cantango/configuration/engines/engine_shared.rb
@@ -173,17 +174,17 @@ files:
173
174
  - spec/cantango/configuration/factory_spec.rb
174
175
  - spec/cantango/configuration/guest/find_guest_default_way_spec.rb
175
176
  - spec/cantango/configuration/guest_spec.rb
176
- - spec/cantango/configuration/hash_registry_spec.rb
177
177
  - spec/cantango/configuration/localhosts_spec.rb
178
178
  - spec/cantango/configuration/models_spec.rb
179
179
  - spec/cantango/configuration/orms_spec.rb
180
- - spec/cantango/configuration/registry_spec.rb
181
- - spec/cantango/configuration/shared/candidate_registry_ex.rb
180
+ - spec/cantango/configuration/registry/base_spec.rb
181
+ - spec/cantango/configuration/registry/candidate_spec.rb
182
+ - spec/cantango/configuration/registry/hash_spec.rb
182
183
  - spec/cantango/configuration/shared/factory_ex.rb
183
- - spec/cantango/configuration/shared/hash_registry_ex.rb
184
184
  - spec/cantango/configuration/shared/modes_ex.rb
185
- - spec/cantango/configuration/shared/registry_ex.rb
186
- - spec/cantango/configuration/shared/role_registry_ex.rb
185
+ - spec/cantango/configuration/shared/registry/base_ex.rb
186
+ - spec/cantango/configuration/shared/registry/candidate_ex.rb
187
+ - spec/cantango/configuration/shared/registry/hash_ex.rb
187
188
  - spec/cantango/configuration/user_spec.rb
188
189
  - spec/cantango/configuration/users_spec.rb
189
190
  - spec/cantango/configuration_spec.rb
@@ -215,7 +216,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
215
216
  version: '0'
216
217
  segments:
217
218
  - 0
218
- hash: -153658417
219
+ hash: 1432741648171073841
219
220
  required_rubygems_version: !ruby/object:Gem::Requirement
220
221
  none: false
221
222
  requirements:
@@ -224,7 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
224
225
  version: '0'
225
226
  requirements: []
226
227
  rubyforge_project:
227
- rubygems_version: 1.8.10
228
+ rubygems_version: 1.8.6
228
229
  signing_key:
229
230
  specification_version: 3
230
231
  summary: Configuration for Cantango
@@ -1,94 +0,0 @@
1
- require 'singleton'
2
- require 'sugar-high/kind_of'
3
-
4
- module CanTango
5
- class Configuration
6
- class CandidateRegistry
7
- def register label, value
8
- raise "first arg must be a label, was: #{label}" if !label.kind_of_label?
9
- raise "second arg must be a valid Class, was: #{value}" if !valid? value
10
- name_registry.register label.to_sym
11
- class_registry.register value
12
- end
13
- alias_method :[]=, :register
14
-
15
- def << hash
16
- raise "Must be a hash" if !hash.is_a? Hash
17
- hash.each_pair do |key, value|
18
- register key, value
19
- end
20
- end
21
-
22
- def registered
23
- name_registry.registered
24
- end
25
- alias_method :registered_names, :registered
26
-
27
- def clean!
28
- name_registry.clean!
29
- class_registry.clean!
30
- end
31
- alias_method :clear!, :clean!
32
-
33
- def registered_classes
34
- class_registry.registered
35
- end
36
-
37
- def registered? name
38
- name_registry.registered? name
39
- end
40
-
41
- def registered_class? name
42
- class_registry.registered? name
43
- end
44
-
45
- def name_registry
46
- NameRegistry.instance
47
- end
48
-
49
- def class_registry
50
- ClassRegistry.instance
51
- end
52
-
53
- def value_methods
54
- class_registry.value_methods
55
- end
56
-
57
- def value_types
58
- class_registry.types
59
- end
60
-
61
- class NameRegistry < Registry
62
- include Singleton
63
- end
64
-
65
- class ClassRegistry < Registry
66
- include Singleton
67
-
68
- def types
69
- [Class]
70
- end
71
-
72
- def value_methods
73
- []
74
- end
75
- end
76
-
77
- protected
78
-
79
- def valid? value
80
- valid_by_type?(value) && valid_by_methods?(value)
81
- end
82
-
83
- def valid_by_type? value
84
- return true if value_types.blank?
85
- value.any_kind_of?(*value_types)
86
- end
87
-
88
- def valid_by_methods? value
89
- return true if value_methods.blank?
90
- value_methods.all?{|m| value.respond_to(m)}
91
- end
92
- end
93
- end
94
- end
@@ -1,91 +0,0 @@
1
- require 'singleton'
2
- require 'sugar-high/kind_of'
3
-
4
- module CanTango
5
- class Configuration
6
- class HashRegistry < Registry
7
-
8
- def types= *types
9
- raise "This is a Hash registry!"
10
- end
11
-
12
- def types
13
- [Hash]
14
- end
15
-
16
- def value_methods
17
- []
18
- end
19
-
20
- def value_types
21
- []
22
- end
23
-
24
- def clean!
25
- registered = Hashie::Mash.new
26
- end
27
- alias_method :clear!, :clean!
28
-
29
- def default!
30
- @registered = default
31
- end
32
-
33
- def << hash
34
- raise "Must be a hash" if !hash.is_a? Hash
35
- registered.merge!(hash) and return if value_methods.empty? && value_types.empty?
36
- hash.each_pair do |key, value|
37
- registered[key] = value if value_api.all?{|m| value.respond_to(m)} && value.any_kind_of?(value_types)
38
- end
39
- end
40
-
41
- def [] label
42
- raise "Must be a label" if !label.kind_of_label?
43
- registered[label.to_s]
44
- end
45
-
46
- def []= label, value
47
- raise "Must be a label" if !label.kind_of_label?
48
- registered[label.to_s] = value
49
- end
50
-
51
- def register hash
52
- raise "Must be a hash" if !hash.is_a? Hash
53
- registered.merge! hash
54
- end
55
-
56
- def unregister name
57
- @registered = {} if name == :all
58
- @registered.delete(name)
59
- end
60
-
61
- def registered
62
- @registered ||= default
63
- end
64
-
65
- def registered_names
66
- registered.keys
67
- end
68
-
69
- def registered_values
70
- registered.values
71
- end
72
-
73
- def registered? label
74
- registered_names.map(&:to_s).include? label.to_s
75
- end
76
- alias_method :registered_name, :registered?
77
-
78
- def registered_value? value
79
- registered_values.include? value
80
- end
81
-
82
- def default
83
- @default ||= Hashie::Mash.new
84
- end
85
-
86
- def default= hash
87
- @default = Hashie::Mash.new hash
88
- end
89
- end
90
- end
91
- end
@@ -1,22 +0,0 @@
1
- require 'cantango/configuration/shared/registry_ex'
2
-
3
- shared_examples_for 'Role Registry' do
4
- it_should_behave_like "Registry"
5
-
6
- describe 'default settings' do
7
- its(:has_method) { should == has }
8
- its(:list_method) { should == list }
9
-
10
- its(:default_has_method) { should be_a Symbol }
11
- its(:default_list_method) { should be_a Symbol }
12
- end
13
-
14
- describe "exclude" do
15
- before do
16
- subject.exclude :admin
17
- end
18
-
19
- its(:excluded) { should include(:admin) }
20
- end
21
- end
22
-