fuby 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (222) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/.ruby-version +1 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +29 -0
  7. data/Rakefile +8 -0
  8. data/VERSION +1 -0
  9. data/fuby.gemspec +21 -0
  10. data/lib/fuby.rb +1 -0
  11. data/lib/fuby/abbreviation.rb +20 -0
  12. data/lib/fuby/alias_method.rb +13 -0
  13. data/lib/fuby/all.rb +11 -0
  14. data/lib/fuby/and.rb +9 -0
  15. data/lib/fuby/any.rb +11 -0
  16. data/lib/fuby/attributes.rb +17 -0
  17. data/lib/fuby/bind.rb +21 -0
  18. data/lib/fuby/class_attributes.rb +39 -0
  19. data/lib/fuby/deep.rb +1 -0
  20. data/lib/fuby/deep_each.rb +14 -0
  21. data/lib/fuby/define_instance_method.rb +18 -0
  22. data/lib/fuby/define_missing_method.rb +36 -0
  23. data/lib/fuby/define_object_method.rb +18 -0
  24. data/lib/fuby/define_tok.rb +11 -0
  25. data/lib/fuby/descendants.rb +15 -0
  26. data/lib/fuby/dimension.rb +23 -0
  27. data/lib/fuby/drop.rb +20 -0
  28. data/lib/fuby/drop_until.rb +18 -0
  29. data/lib/fuby/drop_while.rb +15 -0
  30. data/lib/fuby/each.rb +2 -0
  31. data/lib/fuby/each_with_index_or_key.rb +19 -0
  32. data/lib/fuby/eql.rb +1 -0
  33. data/lib/fuby/eql_componentwise.rb +13 -0
  34. data/lib/fuby/equivalence.rb +13 -0
  35. data/lib/fuby/eval.rb +54 -0
  36. data/lib/fuby/extend.rb +13 -0
  37. data/lib/fuby/format.rb +9 -0
  38. data/lib/fuby/include.rb +13 -0
  39. data/lib/fuby/index_or_key.rb +19 -0
  40. data/lib/fuby/instance_attributes.rb +39 -0
  41. data/lib/fuby/intercept.rb +27 -0
  42. data/lib/fuby/invert.rb +16 -0
  43. data/lib/fuby/longest_common.rb +16 -0
  44. data/lib/fuby/matches.rb +11 -0
  45. data/lib/fuby/matches_componentwise.rb +11 -0
  46. data/lib/fuby/matches_part_of.rb +16 -0
  47. data/lib/fuby/matches_prefix_of.rb +11 -0
  48. data/lib/fuby/matches_suffix_of.rb +13 -0
  49. data/lib/fuby/member.rb +11 -0
  50. data/lib/fuby/merge.rb +20 -0
  51. data/lib/fuby/merge_css.rb +32 -0
  52. data/lib/fuby/method_added_as.rb +1 -0
  53. data/lib/fuby/method_added_as_binary_operator.rb +16 -0
  54. data/lib/fuby/method_added_as_filter.rb +19 -0
  55. data/lib/fuby/new.rb +16 -0
  56. data/lib/fuby/not.rb +25 -0
  57. data/lib/fuby/opposite.rb +29 -0
  58. data/lib/fuby/or.rb +9 -0
  59. data/lib/fuby/otherwise.rb +18 -0
  60. data/lib/fuby/part_of.rb +16 -0
  61. data/lib/fuby/plus.rb +10 -0
  62. data/lib/fuby/pop.rb +11 -0
  63. data/lib/fuby/pop_if.rb +15 -0
  64. data/lib/fuby/pop_options.rb +15 -0
  65. data/lib/fuby/pop_unless.rb +11 -0
  66. data/lib/fuby/pop_until.rb +11 -0
  67. data/lib/fuby/pop_while.rb +11 -0
  68. data/lib/fuby/prefix_of.rb +14 -0
  69. data/lib/fuby/prefixes.rb +11 -0
  70. data/lib/fuby/prepend.rb +11 -0
  71. data/lib/fuby/private.rb +11 -0
  72. data/lib/fuby/protected.rb +11 -0
  73. data/lib/fuby/public.rb +11 -0
  74. data/lib/fuby/push.rb +1 -0
  75. data/lib/fuby/push_options.rb +9 -0
  76. data/lib/fuby/random.rb +31 -0
  77. data/lib/fuby/self_and_descendants.rb +15 -0
  78. data/lib/fuby/shift.rb +11 -0
  79. data/lib/fuby/shift_if.rb +12 -0
  80. data/lib/fuby/shift_options.rb +11 -0
  81. data/lib/fuby/shift_unless.rb +12 -0
  82. data/lib/fuby/shift_until.rb +12 -0
  83. data/lib/fuby/shift_while.rb +16 -0
  84. data/lib/fuby/splat.rb +11 -0
  85. data/lib/fuby/strip.rb +24 -0
  86. data/lib/fuby/subclass.rb +22 -0
  87. data/lib/fuby/submodule.rb +22 -0
  88. data/lib/fuby/suffix_of.rb +19 -0
  89. data/lib/fuby/suffixes.rb +11 -0
  90. data/lib/fuby/take.rb +20 -0
  91. data/lib/fuby/take_until.rb +17 -0
  92. data/lib/fuby/take_while.rb +14 -0
  93. data/lib/fuby/tap.rb +28 -0
  94. data/lib/fuby/to.rb +1 -0
  95. data/lib/fuby/to_boolean.rb +32 -0
  96. data/lib/fuby/to_camel_case.rb +32 -0
  97. data/lib/fuby/to_case.rb +1 -0
  98. data/lib/fuby/to_components.rb +33 -0
  99. data/lib/fuby/to_dash_case.rb +28 -0
  100. data/lib/fuby/to_hash.rb +25 -0
  101. data/lib/fuby/to_pred.rb +7 -0
  102. data/lib/fuby/to_proc.rb +45 -0
  103. data/lib/fuby/to_regexp.rb +38 -0
  104. data/lib/fuby/to_snake_case.rb +28 -0
  105. data/lib/fuby/to_tok.rb +27 -0
  106. data/lib/fuby/tok.rb +2 -0
  107. data/lib/fuby/tok_arity.rb +18 -0
  108. data/lib/fuby/tok_direction.rb +16 -0
  109. data/lib/fuby/tok_parity.rb +11 -0
  110. data/lib/fuby/tok_side.rb +11 -0
  111. data/lib/fuby/try.rb +73 -0
  112. data/lib/fuby/try_each.rb +25 -0
  113. data/lib/fuby/try_eval.rb +19 -0
  114. data/lib/fuby/try_exec.rb +15 -0
  115. data/lib/fuby/unabbreviation.rb +17 -0
  116. data/lib/fuby/unshift.rb +1 -0
  117. data/lib/fuby/unshift_options.rb +11 -0
  118. data/lib/fuby/uuid.rb +28 -0
  119. data/test/fuby/abbreviation.rb +25 -0
  120. data/test/fuby/alias_method.rb +29 -0
  121. data/test/fuby/all.rb +15 -0
  122. data/test/fuby/and.rb +14 -0
  123. data/test/fuby/any.rb +15 -0
  124. data/test/fuby/attributes.rb +0 -0
  125. data/test/fuby/bind.rb +17 -0
  126. data/test/fuby/class_attributes.rb +0 -0
  127. data/test/fuby/deep.rb +0 -0
  128. data/test/fuby/deep_each.rb +0 -0
  129. data/test/fuby/define_missing_method.rb +33 -0
  130. data/test/fuby/define_tok.rb +0 -0
  131. data/test/fuby/descendants.rb +0 -0
  132. data/test/fuby/dimension.rb +0 -0
  133. data/test/fuby/drop.rb +28 -0
  134. data/test/fuby/drop_until.rb +26 -0
  135. data/test/fuby/drop_while.rb +26 -0
  136. data/test/fuby/each.rb +0 -0
  137. data/test/fuby/each_with_index_or_key.rb +22 -0
  138. data/test/fuby/eql.rb +0 -0
  139. data/test/fuby/eql_componentwise.rb +0 -0
  140. data/test/fuby/equivalence.rb +0 -0
  141. data/test/fuby/eval.rb +0 -0
  142. data/test/fuby/extend.rb +20 -0
  143. data/test/fuby/format.rb +0 -0
  144. data/test/fuby/include.rb +20 -0
  145. data/test/fuby/index_or_key.rb +0 -0
  146. data/test/fuby/instance_attributes.rb +0 -0
  147. data/test/fuby/intercept.rb +16 -0
  148. data/test/fuby/invert.rb +0 -0
  149. data/test/fuby/longest_common.rb +0 -0
  150. data/test/fuby/matches.rb +0 -0
  151. data/test/fuby/matches_componentwise.rb +0 -0
  152. data/test/fuby/matches_prefix_of.rb +0 -0
  153. data/test/fuby/matches_suffix_of.rb +0 -0
  154. data/test/fuby/member.rb +0 -0
  155. data/test/fuby/merge.rb +0 -0
  156. data/test/fuby/merge_css.rb +0 -0
  157. data/test/fuby/method_added_as.rb +0 -0
  158. data/test/fuby/method_added_as_binary_operator.rb +20 -0
  159. data/test/fuby/method_added_as_filter.rb +28 -0
  160. data/test/fuby/new.rb +3 -0
  161. data/test/fuby/not.rb +0 -0
  162. data/test/fuby/opposite.rb +0 -0
  163. data/test/fuby/or.rb +19 -0
  164. data/test/fuby/otherwise.rb +30 -0
  165. data/test/fuby/part_of.rb +0 -0
  166. data/test/fuby/plus.rb +0 -0
  167. data/test/fuby/pop.rb +0 -0
  168. data/test/fuby/pop_if.rb +31 -0
  169. data/test/fuby/pop_options.rb +31 -0
  170. data/test/fuby/pop_unless.rb +0 -0
  171. data/test/fuby/pop_until.rb +0 -0
  172. data/test/fuby/pop_while.rb +0 -0
  173. data/test/fuby/prefix_of.rb +0 -0
  174. data/test/fuby/prefixes.rb +13 -0
  175. data/test/fuby/prepend.rb +34 -0
  176. data/test/fuby/private.rb +0 -0
  177. data/test/fuby/protected.rb +0 -0
  178. data/test/fuby/public.rb +0 -0
  179. data/test/fuby/push.rb +0 -0
  180. data/test/fuby/push_options.rb +32 -0
  181. data/test/fuby/random.rb +0 -0
  182. data/test/fuby/self_and_descendants.rb +0 -0
  183. data/test/fuby/shift.rb +0 -0
  184. data/test/fuby/shift_if.rb +0 -0
  185. data/test/fuby/shift_options.rb +0 -0
  186. data/test/fuby/shift_unless.rb +0 -0
  187. data/test/fuby/shift_until.rb +0 -0
  188. data/test/fuby/shift_while.rb +0 -0
  189. data/test/fuby/splat.rb +0 -0
  190. data/test/fuby/strip.rb +0 -0
  191. data/test/fuby/submodule.rb +15 -0
  192. data/test/fuby/suffix_of.rb +0 -0
  193. data/test/fuby/suffixes.rb +13 -0
  194. data/test/fuby/take.rb +0 -0
  195. data/test/fuby/take_until.rb +0 -0
  196. data/test/fuby/take_while.rb +0 -0
  197. data/test/fuby/tap.rb +58 -0
  198. data/test/fuby/to_boolean.rb +31 -0
  199. data/test/fuby/to_camel_case.rb +15 -0
  200. data/test/fuby/to_components.rb +0 -0
  201. data/test/fuby/to_dash_case.rb +15 -0
  202. data/test/fuby/to_hash.rb +23 -0
  203. data/test/fuby/to_pred.rb +25 -0
  204. data/test/fuby/to_proc.rb +56 -0
  205. data/test/fuby/to_regexp.rb +38 -0
  206. data/test/fuby/to_snake_case.rb +15 -0
  207. data/test/fuby/to_tok.rb +0 -0
  208. data/test/fuby/tok.rb +0 -0
  209. data/test/fuby/tok_arity.rb +0 -0
  210. data/test/fuby/tok_direction.rb +0 -0
  211. data/test/fuby/tok_parity.rb +0 -0
  212. data/test/fuby/tok_side.rb +0 -0
  213. data/test/fuby/try.rb +52 -0
  214. data/test/fuby/try_each.rb +30 -0
  215. data/test/fuby/try_eval.rb +34 -0
  216. data/test/fuby/try_exec.rb +0 -0
  217. data/test/fuby/unabbreviation.rb +25 -0
  218. data/test/fuby/unshift.rb +0 -0
  219. data/test/fuby/unshift_options.rb +0 -0
  220. data/test/fuby/uuid.rb +31 -0
  221. data/test/fuby/version.rb +0 -0
  222. metadata +369 -0
@@ -0,0 +1,31 @@
1
+ require 'fuby/pop_options'
2
+
3
+ using Fuby
4
+
5
+ describe Array do
6
+ describe "pop_options" do
7
+ it "pops the last element if is_a? Hash" do
8
+
9
+ xs = [1, 2, 3, { a:1 }]
10
+ xs.pop_options.must_equal a:1
11
+ xs.must_equal [1, 2, 3]
12
+
13
+ end
14
+ it "creates and returns a new hash unless the last element is_a? Hash" do
15
+
16
+ xs = [1, 2, 3]
17
+ xs.pop_options.must_equal Hash.new
18
+ xs.must_equal [1, 2, 3]
19
+
20
+ end
21
+ it "merges any given options as defaults" do
22
+
23
+ xs = [1, 2, 3, { a:1, b:2, c:3 }]
24
+ xs.pop_options({ b:20 }, c:300).must_equal a:1, b:2, c:3
25
+
26
+ xs = [1, 2, 3, { a:1 }]
27
+ xs.pop_options({ b:20, c:30 }, c:300).must_equal a:1, b:20, c:30
28
+
29
+ end
30
+ end
31
+ end
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,13 @@
1
+ require 'fuby/prefixes'
2
+
3
+ using Fuby
4
+
5
+ describe Array do
6
+ describe "prefixes" do
7
+ it "returns an Enumerable of the prefixes of self, longest first" do
8
+
9
+ [1, 2, 3].prefixes.to_a.must_equal [[1, 2, 3], [1, 2], [1]]
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,34 @@
1
+ require 'fuby/prepend'
2
+
3
+ using Fuby
4
+
5
+ describe Module do
6
+ describe "prepend &block" do
7
+ it "creates and prepends a module based on the given &block" do
8
+
9
+ klass = Class.new do
10
+
11
+ include Module.new {
12
+ def foo
13
+ '1st'
14
+ end
15
+ }
16
+
17
+ def foo
18
+ '2nd' + super
19
+ end
20
+
21
+ end
22
+ klass.prepend! do
23
+
24
+ def foo
25
+ '3rd' + super
26
+ end
27
+
28
+ end
29
+ klass.new.must_respond_to :foo
30
+ klass.new.foo.must_equal '3rd2nd1st'
31
+
32
+ end
33
+ end
34
+ end
File without changes
File without changes
File without changes
data/test/fuby/push.rb ADDED
File without changes
@@ -0,0 +1,32 @@
1
+ require 'fuby/push_options'
2
+
3
+ using Fuby
4
+
5
+ describe Array do
6
+ describe "push_options" do
7
+ it "returns the last element if is_a? Hash" do
8
+
9
+ opt = { a: 1 }
10
+ xs = [1, 2, 3, opt]
11
+ xs.push_options.must_be_same_as opt
12
+ xs.must_equal [1, 2, 3, opt]
13
+
14
+ end
15
+ it "creates and returns a new hash which is pushed onto self" do
16
+
17
+ xs = [1, 2, 3]
18
+ xs.push_options.must_equal Hash.new
19
+ xs.must_equal [1, 2, 3, Hash.new]
20
+
21
+ end
22
+ it "merges any given options as defaults" do
23
+
24
+ xs = [1, 2, 3, { a:1, b:2, c:3 }]
25
+ xs.push_options({ b:20 }, c:300).must_equal a:1, b:2, c:3
26
+
27
+ xs = [1, 2, 3]
28
+ xs.push_options({ b:20, c:30 }, c:300).must_equal b:20, c:30
29
+
30
+ end
31
+ end
32
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,15 @@
1
+ require 'fuby/submodule'
2
+
3
+ using Fuby
4
+
5
+ describe Module do
6
+ describe "submodule *includes" do
7
+ it "returns a new module including self and the given *includes" do
8
+
9
+ includes = [Module.new, Module.new, Module.new]
10
+
11
+ Module.new.submodule *includes
12
+
13
+ end
14
+ end
15
+ end
File without changes
@@ -0,0 +1,13 @@
1
+ require 'fuby/suffixes'
2
+
3
+ using Fuby
4
+
5
+ describe Array do
6
+ describe "suffixes" do
7
+ it "returns an Enumerable of the suffixes of self, longest first" do
8
+
9
+ [1, 2, 3].suffixes.to_a.must_equal [[1, 2, 3], [2, 3], [3]]
10
+
11
+ end
12
+ end
13
+ end
data/test/fuby/take.rb ADDED
File without changes
File without changes
File without changes
data/test/fuby/tap.rb ADDED
@@ -0,0 +1,58 @@
1
+ require 'fuby/tap'
2
+
3
+ using Fuby
4
+
5
+ describe Object do
6
+ %w{ tap tap? tap! }.each { |w| eval %{
7
+ describe :#{ w } do
8
+ it "returns self unless block_given?" do
9
+
10
+ obj = Object.new
11
+ obj.must_be_same_as obj.#{ w }
12
+
13
+ end
14
+ it "calls the given block with self, and returns self" do
15
+
16
+ obj = Object.new
17
+ obj.#{ w } { |arg| arg.must_be_same_as obj }.must_be_same_as obj
18
+
19
+ end
20
+ end
21
+ }}
22
+ end
23
+ describe NilClass do
24
+ describe :tap do
25
+ it "calls the block_given with self, and returns self" do
26
+
27
+ called = false
28
+ nil.tap { called = true }
29
+ called.must_equal true
30
+ nil.tap { |arg| arg.must_be_nil }.must_be_nil
31
+ nil.tap.must_be_nil
32
+
33
+ end
34
+ end
35
+ %w{ tap? tap_each }.each { |w| eval %{
36
+
37
+ describe :#{ w } do
38
+ it "returns self without calling the block_given" do
39
+
40
+ called = false
41
+ nil.#{ w } { called = true }
42
+ called.must_equal false
43
+ nil.#{ w } { 99 }.must_be_nil
44
+ nil.#{ w }.must_be_nil
45
+
46
+ end
47
+ end
48
+
49
+ }}
50
+ describe :tap! do
51
+ it "raises TypeError" do
52
+
53
+ nil.tap! { 99 }.must_raise TypeError rescue nil
54
+ nil.tap!.must_raise TypeError rescue nil
55
+
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,31 @@
1
+ require 'fuby/to_boolean'
2
+
3
+ using Fuby
4
+
5
+ describe Numeric do
6
+ describe "to_boolean" do
7
+ it "converts self to a boolean according to the common interpretation" do
8
+
9
+ 0.to_boolean.must_equal false
10
+ 1.to_boolean.must_equal true
11
+ +0.1.to_boolean.must_equal true
12
+ -0.1.to_boolean.must_equal false
13
+ end
14
+ end
15
+ end
16
+
17
+ describe String do
18
+ describe "to_boolean" do
19
+ it "converts self to a boolean according to the common interpretation" do
20
+
21
+ "1".to_boolean.must_equal true
22
+ "t".to_boolean.must_equal true
23
+ "true".to_boolean.must_equal true
24
+ "TRUE".to_boolean.must_equal true
25
+ "yes".to_boolean.must_equal true
26
+ "y".to_boolean.must_equal true
27
+ "goo".to_boolean.must_equal false
28
+
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,15 @@
1
+ require 'fuby/to_camel_case'
2
+
3
+ using Fuby
4
+
5
+ describe Symbol do
6
+ describe "to_camelCase" do
7
+ it "converts self to a camelCase symbol" do
8
+
9
+ :html5_the_5th_element.to_camelCase.must_equal :html5The5thElement
10
+ :HTML5TH.to_CamelCase.must_equal :Html5th
11
+ :HTML5th.to_CamelCase.must_equal :HTML5th
12
+
13
+ end
14
+ end
15
+ end
File without changes
@@ -0,0 +1,15 @@
1
+ require 'fuby/to_dash_case'
2
+
3
+ using Fuby
4
+
5
+ describe Symbol do
6
+ describe "to_dash_case" do
7
+ it "converts self to a dash-case symbol" do
8
+
9
+ :html5_the_5th_element.to_dash_case.must_equal :"html5-the-5th-element"
10
+ :HTML5TH.to_dash_case.must_equal :"html-5th"
11
+ :HTML5th.to_dash_case.must_equal :"html-5th"
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ require 'fuby/to_hash'
2
+
3
+ using Fuby
4
+
5
+ describe Enumerable do
6
+ describe "to_hash" do
7
+ it "returns a Hash with the indicies of self as keys" do
8
+
9
+ [1, 2, 3].to_hash.must_equal 0 => 1, 1 => 2, 2 => 3
10
+
11
+ end
12
+ end
13
+ end
14
+
15
+ describe Hash do
16
+ describe "to_hash" do
17
+ it "returns a copy of self" do
18
+
19
+ { a:1 }.must_equal a:1
20
+
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,25 @@
1
+ require 'fuby/to_pred'
2
+
3
+ using Fuby
4
+
5
+ describe Module do
6
+ describe "to_pred" do
7
+ it "returns a Proc that returns whether its argument kind_of? self" do
8
+
9
+ Symbol.to_pred.call(:foo).must_equal true
10
+ Symbol.to_pred.call('foo').must_equal false
11
+
12
+ end
13
+ end
14
+ end
15
+
16
+ describe Regexp do
17
+ describe "to_pred" do
18
+ it "returns a Proc that returns whether its argument matches self" do
19
+
20
+ /foo/.to_pred.call(:foo).must_equal true
21
+ /foo/.to_pred.call('foo').must_equal true
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,56 @@
1
+ require 'fuby/to_proc'
2
+
3
+ using Fuby
4
+
5
+ describe Array do
6
+ describe "to_proc" do
7
+ it "returns a Proc that interprets `self` as a lookup table" do
8
+
9
+ [1, 2, 3].to_proc.call(1).must_equal 2
10
+
11
+ end
12
+ end
13
+ end
14
+
15
+ describe Hash do
16
+ describe "to_proc" do
17
+ it "returns a Proc that interprets `self` as a fuzzy lookup table" do
18
+
19
+ { /foo/ => true, /bar/ => false }.to_proc.call('foo').must_equal true
20
+ { Integer => true, Float => false }.to_proc.call(4).must_equal true
21
+
22
+ [1, 1.0].map(&{ Integer => true, Float => false }.to_proc).must_equal [true, false]
23
+
24
+ end
25
+ end
26
+ end
27
+
28
+ describe String do
29
+ describe "to_proc" do
30
+ it "returns a Proc based on `self` as a format string" do
31
+
32
+ "%s_%s".to_proc.call(5, 'a').must_equal "5_a"
33
+
34
+ end
35
+ end
36
+ end
37
+
38
+ describe Regexp do
39
+ describe "to_proc" do
40
+ it "returns a Proc based on `self` as a grouping expression" do
41
+
42
+ /_(\w+)_/.to_proc.call("_foo_").must_equal "foo"
43
+
44
+ end
45
+ end
46
+ end
47
+
48
+ describe Integer do
49
+ describe "to_proc" do
50
+ it "returns a Proc that takes an array and returns the element at this index" do
51
+
52
+ 1.to_proc.call([1, 2]).must_equal 2
53
+
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,38 @@
1
+ require 'fuby/to_regexp'
2
+
3
+ using Fuby
4
+
5
+ describe Regexp do
6
+ describe "to_regexp" do
7
+ it "returns a copy of self" do
8
+
9
+ re = /fun/
10
+ re.to_regexp.must_equal re.dup
11
+
12
+ end
13
+ end
14
+ end
15
+
16
+ describe Array do
17
+ describe "to_regexp" do
18
+ it "returns the disjunction of terms contained in self" do
19
+
20
+ [ /abra/, /cadabra/ ].to_regexp.must_equal /abra|cadabra/
21
+
22
+ end
23
+ end
24
+ end
25
+
26
+ describe String do
27
+ describe "to_regexp" do
28
+ it "returns a Regexp that matches this string exactly" do
29
+
30
+ "foo".must_match "foo".to_regexp
31
+ "__foo__".must_match "foo".to_regexp
32
+ "a foo".must_match "foo".to_regexp
33
+ "a food".wont_match "foo".to_regexp
34
+ "food".wont_match "foo".to_regexp
35
+
36
+ end
37
+ end
38
+ end