changelog shortlog tags changeset manifest revisions annotate raw

vendor/plugins/rspec/lib/spec/extensions/class.rb

changeset 15: 64acf98d15f4
author: moriq@moriq.com
date: Mon Mar 10 10:12:58 2008 +0900 (16 years ago)
permissions: -rw-r--r--
description: add plugins rspec
1class Class
2 # Creates a new subclass of self, with a name "under" our own name.
3 # Example:
4 #
5 # x = Foo::Bar.subclass('Zap'){}
6 # x.name # => Foo::Bar::Zap_1
7 # x.superclass.name # => Foo::Bar
8 def subclass(base_name, &body)
9 klass = Class.new(self)
10 class_name = "#{base_name}_#{class_count!}"
11 instance_eval do
12 const_set(class_name, klass)
13 end
14 klass.instance_eval(&body)
15 klass
16 end
17
18 private
19 def class_count!
20 @class_count ||= 0
21 @class_count += 1
22 @class_count
23 end
24end