Changeset 368 for lang/ruby/module-pluggable
- Timestamp:
- 10/05/07 02:45:20 (4 years ago)
- Location:
- lang/ruby/module-pluggable
- Files:
-
- 2 modified
-
lib/module/pluggable.rb (modified) (1 diff)
-
test/module-pluggable_test.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/ruby/module-pluggable/lib/module/pluggable.rb
r367 r368 14 14 opts = DEFAULT_OPTS.merge(o) 15 15 opts[:search_path] = name ? name.to_s : opts[:name].to_s unless opts[:search_path] 16 17 self.instance_eval do 18 (@opts ||= {})[name] = opts 19 end 16 20 17 class_eval <<-EOS 21 18 def #{name} 22 @#{name} ||= Module::Pluggable::Plugins.new(self.class.instance_variable_get(:@opts)[:#{name}]) 19 @#{name} ||= Module::Pluggable::Plugins.new(@@pluggable_opts[:#{name}]) 20 end 21 22 def self.set_pluggable_opts(name, opts) 23 (@@pluggable_opts ||= {})[name] = opts 23 24 end 24 25 EOS 26 self.set_pluggable_opts(name, opts) 27 (class << self; self; end).instance_eval do 28 remove_method(:set_pluggable_opts) 29 end 25 30 end 26 31 -
lang/ruby/module-pluggable/test/module-pluggable_test.rb
r367 r368 39 39 40 40 assert_equal "This is test plugin.", test.plugins.description["Test"] 41 42 # inherit test 43 test = Class.new(test.class).new 44 assert test.plugins["Test"] 45 assert_equal "This is test plugin.", test.plugins.call(:description)["Test"] 41 46 42 47 test = Class.new {
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)