classy 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,7 +1,7 @@
1
1
  = classy
2
2
 
3
- Classy is a collection of meta-programming heavy modules which you can extend
4
- in order to give various capabilities to your Ruby classes. For example,
3
+ Classy is a collection of metaprogramming-heavy modules which you can extend in
4
+ order to give various capabilities to your Ruby classes. For example,
5
5
  SubclassAware lets a class know about all of its subclasses (and
6
6
  sub-subclasses, etc), and Aliasable lets you refer to classes via symbols
7
7
  (useful for creating friendly DSLs).
@@ -27,7 +27,8 @@ sub-subclasses, etc), and Aliasable lets you refer to classes via symbols
27
27
  Parent.subclasses # => [ ChildA, ChildB ]
28
28
 
29
29
  More extensive documentation and example code can be found in the RDoc for each
30
- module, or in the spec files.
30
+ module (available online at http://rdoc.info/projects/djspinmonkey/classy) or
31
+ in the spec files.
31
32
 
32
33
  == Note on Patches/Pull Requests
33
34
 
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ begin
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "classy"
8
8
  gem.summary = %Q{A collection of modules to enhance the capabilities of Ruby classes in various ways.}
9
- gem.description = %Q{Classy is a collection of meta-programming heavy modules which you can extend in order to give various capabilities to your Ruby classes. For example, SubclassAware lets a class know about all of its subclasses (and sub-subclasses, etc), and Aliasable lets you refer to classes via symbols (useful for creating friendly DSLs).}
9
+ gem.description = %Q{Classy is a collection of metaprogramming-heavy modules which you can extend in order to give various capabilities to your Ruby classes. For example, SubclassAware lets a class know about all of its subclasses (and sub-subclasses, etc), and Aliasable lets you refer to classes via symbols (useful for creating friendly DSLs).}
10
10
  gem.email = "github@djspinmonkey.com"
11
11
  gem.homepage = "http://github.com/djspinmonkey/classy"
12
12
  gem.authors = ["John Hyland"]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.2
1
+ 1.0.3
@@ -1,4 +1,4 @@
1
- # Aliasable allows you to assign aliases to a class (probably symbols, but any
1
+ # Aliasable allows you to assign aliases to a class (usually symbols, but any
2
2
  # unique objects would work) and look it up again later with that alias. This
3
3
  # alias-to-class hash is kept in a class variable, so each mapping is unique to
4
4
  # a given class hierarchy. Possible uses for this include friendlier DSLs or
@@ -11,7 +11,7 @@
11
11
  # maps as a class variable on the Aliasable module itself, but for reasons of
12
12
  # complexity and performance, that has not been done at this time.
13
13
  #
14
- # Example:
14
+ # ==Example
15
15
  #
16
16
  # class ParentClass
17
17
  # extend Aliasable
@@ -1,9 +1,9 @@
1
1
  require 'set'
2
2
 
3
3
  # SubclassAware allows a class to know about all of the subclasses that descend
4
- # from it in the inheritance tree.
4
+ # from it in the inheritance tree.
5
5
  #
6
- # Example:
6
+ # == Example
7
7
  #
8
8
  # class Parent
9
9
  # extend SubclassAware
@@ -20,11 +20,18 @@ require 'set'
20
20
  #
21
21
  # Parent.subclasses # => [ ChildA, ChildB, ChildB1 ]
22
22
  #
23
- # Warning: This module defines an inherited() class method on the extending
24
- # class to keep track of subclasses. Unfortunately, if this method is later
25
- # re-defined, this inherited() method is lost and subclass tracking will break.
26
- # In order to work around this, constructions like the following might be
27
- # necessary:
23
+ # == Note
24
+ #
25
+ # SubclassAware sets and maintains the class variable @@classy_subclasses on
26
+ # the extending class, so in the unlikely event that this class variable is
27
+ # already in use, unusual bugs may result.
28
+ #
29
+ # == Warning
30
+ #
31
+ # This module defines an inherited() class method on the extending class to
32
+ # keep track of subclasses. Unfortunately, if this method is later re-defined,
33
+ # this inherited() method is lost and subclass tracking will break. In order
34
+ # to work around this, constructions like the following might be necessary:
28
35
  #
29
36
  # class ChildC < Parent
30
37
  #
@@ -41,30 +48,35 @@ require 'set'
41
48
  #
42
49
  module SubclassAware
43
50
 
44
- def self.extended (klass) #:nodoc:
45
- klass.class_exec { class_variable_set(:@@subclasses, Set.new) }
51
+ # Instantiate a new Set of subclasses. Not intended to be called directly.
52
+ #
53
+ def self.extended(klass)
54
+ klass.class_exec { class_variable_set(:@@classy_subclasses, Set.new) }
46
55
  end
47
56
 
57
+ # Add the inheriting class to the list of subclasses. Not intended to be
58
+ # called directly.
59
+ #
48
60
  # TODO: Find a way for self.inherited on the extended class not to blow
49
61
  # this away without requiring a bunch of alias chain hoops to be jumped
50
- # through.
62
+ # through, as described above.
51
63
  #
52
- def inherited(sub) #:nodoc:
53
- class_exec { class_variable_get(:@@subclasses).add sub }
64
+ def inherited(sub)
65
+ class_exec { class_variable_get(:@@classy_subclasses).add sub }
54
66
  end
55
67
 
56
68
  # Return an array of all known subclasses (and sub-subclasses, etc) of this
57
69
  # class.
58
70
  #
59
71
  def subclasses
60
- class_exec { class_variable_get(:@@subclasses).to_a }
72
+ class_exec { class_variable_get(:@@classy_subclasses).to_a }
61
73
  end
62
74
 
63
75
  # Clear all info about known subclasses. This method is probably mainly
64
76
  # useful for testing.
65
77
  #
66
78
  def forget_subclasses
67
- class_exec { class_variable_get(:@@subclasses).clear }
79
+ class_exec { class_variable_get(:@@classy_subclasses).clear }
68
80
  end
69
81
 
70
82
  end
data/spec/spec.opts CHANGED
@@ -1 +1 @@
1
- --color
1
+ -fn --color
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: classy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Hyland
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-25 00:00:00 -05:00
12
+ date: 2010-01-04 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -22,7 +22,7 @@ dependencies:
22
22
  - !ruby/object:Gem::Version
23
23
  version: 1.2.9
24
24
  version:
25
- description: Classy is a collection of meta-programming heavy modules which you can extend in order to give various capabilities to your Ruby classes. For example, SubclassAware lets a class know about all of its subclasses (and sub-subclasses, etc), and Aliasable lets you refer to classes via symbols (useful for creating friendly DSLs).
25
+ description: Classy is a collection of metaprogramming-heavy modules which you can extend in order to give various capabilities to your Ruby classes. For example, SubclassAware lets a class know about all of its subclasses (and sub-subclasses, etc), and Aliasable lets you refer to classes via symbols (useful for creating friendly DSLs).
26
26
  email: github@djspinmonkey.com
27
27
  executables: []
28
28
 
@@ -77,3 +77,4 @@ test_files:
77
77
  - spec/aliasable_spec.rb
78
78
  - spec/spec_helper.rb
79
79
  - spec/subclass_aware_spec.rb
80
+ - spec/templatable_spec.rb