methlab 0.0.8 → 0.0.9

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.
@@ -68,7 +68,7 @@
68
68
  #
69
69
  module MethLab
70
70
 
71
- VERSION = "0.0.8"
71
+ VERSION = "0.0.9"
72
72
 
73
73
  # Integrates MethLab into all namespaces. It does this by patching itself
74
74
  # into ::main and Module.
@@ -350,6 +350,26 @@ module MethLab
350
350
  end
351
351
  end
352
352
 
353
+ #
354
+ # inline is useful to spec out several methods at once to yield similar values.
355
+ #
356
+ # Usage:
357
+ #
358
+ # class Foo
359
+ # inline(:one, :two, :three) { 1 }
360
+ # end
361
+ #
362
+ # f = Foo.new
363
+ # f.one # => 1
364
+ # f.two # => 1
365
+ # f.three # => 1
366
+ #
367
+ def inline(*method_names, &block)
368
+ method_names.each do |meth|
369
+ self.send(:define_method, meth, block)
370
+ end
371
+ end
372
+
353
373
  if $METHLAB_AUTOINTEGRATE
354
374
  integrate
355
375
  end
@@ -0,0 +1,27 @@
1
+ begin
2
+ require 'rubygems'
3
+ gem 'test-unit'
4
+ rescue LoadError
5
+ end
6
+
7
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
8
+
9
+ require 'test/unit'
10
+ require 'methlab'
11
+
12
+ class InlineTest
13
+ inline(:foo) { nil }
14
+ inline(:bar, :baz, :quux) { 1 }
15
+ end
16
+
17
+ class TestInline < Test::Unit::TestCase
18
+ def test_01_inline_works
19
+ it = InlineTest.new
20
+
21
+ assert_equal(nil, it.foo)
22
+
23
+ [:bar, :baz, :quux].each do |meth|
24
+ assert_equal(1, it.send(meth))
25
+ end
26
+ end
27
+ end
@@ -21,10 +21,12 @@ class TestIntegrate < Test::Unit::TestCase
21
21
  assert(module_methods.include?(:def_ordered) || module_methods.include?("def_ordered"))
22
22
  assert(module_methods.include?(:build_named) || module_methods.include?("build_named"))
23
23
  assert(module_methods.include?(:build_ordered) || module_methods.include?("build_ordered"))
24
+ assert(module_methods.include?(:inline) || module_methods.include?("inline"))
24
25
 
25
26
  assert(main_methods.include?(:def_named) || main_methods.include?("def_named"))
26
27
  assert(main_methods.include?(:def_ordered) || main_methods.include?("def_ordered"))
27
28
  assert(main_methods.include?(:build_named) || main_methods.include?("build_named"))
28
29
  assert(main_methods.include?(:build_ordered) || main_methods.include?("build_ordered"))
30
+ assert(main_methods.include?(:inline) || main_methods.include?("inline"))
29
31
  end
30
32
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 8
9
- version: 0.0.8
8
+ - 9
9
+ version: 0.0.9
10
10
  platform: ruby
11
11
  authors:
12
12
  - Erik Hollensbe
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-13 00:00:00 -04:00
17
+ date: 2010-05-26 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -30,6 +30,7 @@ files:
30
30
  - lib/methlab.rb
31
31
  - test/test_checks.rb
32
32
  - test/test_defaults.rb
33
+ - test/test_inline.rb
33
34
  - test/test_integrate.rb
34
35
  - Rakefile
35
36
  - README