facets 2.1.2 → 2.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/core/facets.rb +1 -1
- data/lib/core/facets/conversion.rb +6 -1
- data/lib/core/facets/enumerable/collate.rb +13 -24
- data/lib/core/facets/{main.rb → facets.rb} +0 -0
- data/lib/methods/facets/facets/require_core.rb +1 -1
- data/lib/more/facets/advice.rb +28 -1
- data/lib/more/facets/aop.rb +2 -9
- data/log/history.rd +5 -0
- data/meta/MANIFEST +2 -4
- data/meta/{rollrc → ROLLRC} +1 -1
- data/task/release +1 -3
- data/task/test/general +2 -2
- data/task/test/loadtest +1 -1
- data/test/unit/enumerable/test_collate.rb +46 -50
- data/test/unit/test_advice.rb +2 -0
- data/test/unit/test_annotations.rb +2 -0
- data/test/unit/test_arguments.rb +45 -61
- data/test/unit/test_association.rb +1 -7
- data/test/unit/test_attributes.rb +1 -7
- data/test/unit/test_autoarray.rb +1 -8
- data/test/unit/test_basicobject.rb +40 -56
- data/test/unit/test_bbcode.rb +14 -30
- data/test/unit/test_binreadable.rb +35 -51
- data/test/unit/test_boolean.rb +64 -80
- data/test/unit/test_buildable.rb +26 -41
- data/test/unit/test_buildingblock.rb +24 -39
- data/test/unit/test_bytes.rb +50 -66
- data/test/unit/test_class_extension.rb +43 -59
- data/test/unit/test_classmethods.rb +42 -58
- data/test/unit/test_compare_on.rb +40 -54
- data/test/unit/test_conversion.rb +143 -159
- data/test/unit/test_coroutine.rb +31 -47
- data/test/unit/test_crypt.rb +2 -11
- data/test/unit/test_curry.rb +19 -35
- data/test/unit/test_cut.rb +14 -30
- data/test/unit/test_date.rb +31 -47
- data/test/unit/test_dependency.rb +49 -64
- data/test/unit/test_dictionary.rb +1 -7
- data/test/unit/test_elementor.rb +45 -61
- data/test/unit/test_enumerablepass.rb +57 -73
- data/test/unit/test_functor.rb +21 -34
- data/test/unit/test_getoptlong.rb +17 -33
- data/test/unit/test_infinity.rb +1 -7
- data/test/unit/test_inheritor.rb +1 -7
- data/test/unit/test_instantiable.rb +14 -30
- data/test/unit/test_instantise.rb +20 -36
- data/test/unit/test_interface.rb +58 -65
- data/test/unit/test_interval.rb +1 -7
- data/test/unit/test_let.rb +11 -25
- data/test/unit/test_linkedlist.rb +38 -52
- data/test/unit/test_lrucache.rb +6 -22
- data/test/unit/test_mapsend.rb +12 -28
- data/test/unit/test_memoize.rb +17 -32
- data/test/unit/test_multipliers.rb +72 -87
- data/test/unit/test_namespace.rb +35 -51
- data/test/unit/test_opencascade.rb +47 -63
- data/test/unit/test_openobject.rb +94 -110
- data/test/unit/test_ostruct.rb +1 -7
- data/test/unit/test_overload.rb +1 -6
- data/test/unit/test_paramix.rb +1 -7
- data/test/unit/test_pp_s.rb +1 -7
- data/test/unit/test_prototype.rb +1 -6
- data/test/unit/test_recorder.rb +22 -37
- data/test/unit/test_snapshot.rb +2 -14
- data/test/unit/test_stylize.rb +113 -127
- data/test/unit/test_syncarray.rb +2 -15
- data/test/unit/test_synchash.rb +16 -28
- data/test/unit/test_timer.rb +2 -14
- data/test/unit/test_times.rb +64 -80
- data/test/unit/test_tuple.rb +40 -56
- data/test/unit/test_typecast.rb +29 -40
- data/test/unit/test_uninheritable.rb +30 -42
- metadata +4 -8
- data/test/lib/rq.rb +0 -15
data/lib/core/facets.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require 'facets/
|
1
|
+
require 'facets/facets.rb'
|
@@ -41,7 +41,12 @@ class Array
|
|
41
41
|
#each{ |e| h[e.first] = e.slice(1..-1) }
|
42
42
|
each{ |k,*v| h[k] = v }
|
43
43
|
else
|
44
|
-
h = Hash[*(
|
44
|
+
#h = Hash[*flatten(1)] # TODO Use in 1.9 instead.
|
45
|
+
ary = []
|
46
|
+
each do |a|
|
47
|
+
Array===a ? ary.concat(a) : ary << a
|
48
|
+
end
|
49
|
+
h = Hash[*ary]
|
45
50
|
end
|
46
51
|
h
|
47
52
|
end
|
@@ -1,20 +1,4 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# Enumerable Collate
|
4
|
-
#
|
5
|
-
# DESCRIPTION:
|
6
|
-
#
|
7
|
-
# Collate is a Hash collection method.
|
8
|
-
#
|
9
|
-
# AUTHORS:
|
10
|
-
#
|
11
|
-
# CREDIT 7ransVent
|
12
|
-
#
|
13
|
-
# NOTES:
|
14
|
-
#
|
15
|
-
# NOTE Hash#collate! is only useful for Hash. It is not generally
|
16
|
-
# applicable to Enumerable.
|
17
|
-
#++
|
1
|
+
require 'enumerator'
|
18
2
|
|
19
3
|
module Enumerable
|
20
4
|
|
@@ -22,23 +6,25 @@ module Enumerable
|
|
22
6
|
# is expected to return two values: the key and the value for the new hash.
|
23
7
|
#
|
24
8
|
# numbers = (1..3)
|
25
|
-
# squares = numbers.
|
26
|
-
# sq_roots = numbers.
|
9
|
+
# squares = numbers.collate { |n| [n, n*n] } # { 1=>1, 2=>4, 3=>9 }
|
10
|
+
# sq_roots = numbers.collate { |n| [n*n, n] } # { 1=>1, 4=>2, 9=>3 }
|
11
|
+
#
|
12
|
+
# CREDIT: Trans
|
13
|
+
# CREDIT: Andrew Dudzik (adudzik)
|
27
14
|
|
28
15
|
def collate(&yld)
|
29
16
|
if yld
|
30
|
-
inject({}) do |h,kv|
|
31
|
-
|
17
|
+
inject({}) do |h, *kv| # Used to be inject({}) do |h,kv|
|
18
|
+
r = *yld[*kv] # The *-op works differnt from to_a on single element hash!!!
|
19
|
+
nk, nv = *r # Used to be nk, nv = *yld[*kv].to_a.flatten
|
32
20
|
h[nk] = nv
|
33
21
|
h
|
34
22
|
end
|
35
23
|
else
|
36
|
-
Hash[*self.to_a.flatten]
|
24
|
+
Enumerator.new(self,:collate) # Used to be Hash[*self.to_a] or Hash[*self.to_a.flatten]
|
37
25
|
end
|
38
26
|
end
|
39
27
|
|
40
|
-
# Alias for #collate (THIS WILL BE DEPRECATED)
|
41
|
-
|
42
28
|
alias :graph :collate
|
43
29
|
|
44
30
|
# Returns a new hash built by iterating through each key,value
|
@@ -55,6 +41,9 @@ end
|
|
55
41
|
class Hash
|
56
42
|
|
57
43
|
# In place version of #collate.
|
44
|
+
#
|
45
|
+
# NOTE Hash#collate! is only useful for Hash. It is not generally
|
46
|
+
# applicable to Enumerable.
|
58
47
|
|
59
48
|
def collate!(&yld)
|
60
49
|
replace(collate(&yld))
|
File without changes
|
@@ -1 +1 @@
|
|
1
|
-
require 'facets/
|
1
|
+
require 'facets/facets.rb'
|
data/lib/more/facets/advice.rb
CHANGED
@@ -1,8 +1,35 @@
|
|
1
|
+
# = TITLE:
|
2
|
+
#
|
3
|
+
# Advice
|
4
|
+
#
|
5
|
+
# = SUMMARY:
|
6
|
+
#
|
7
|
+
# Add before, after and around advice in dynamic fashion.
|
8
|
+
#
|
9
|
+
# = COPYRIGHT:
|
10
|
+
#
|
11
|
+
# Copyright (c) 2007 Thomas Sawyer
|
12
|
+
#
|
13
|
+
# = LICENSE:
|
14
|
+
#
|
15
|
+
# Ruby License
|
16
|
+
#
|
17
|
+
# This module is free software. You may use, modify, and/or redistribute this
|
18
|
+
# software under the same terms as Ruby.
|
19
|
+
#
|
20
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
21
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
22
|
+
# FOR A PARTICULAR PURPOSE.
|
23
|
+
#
|
24
|
+
# = AUTHORS:
|
25
|
+
#
|
26
|
+
# - TransAspect
|
27
|
+
|
1
28
|
require 'facets/1stclassmethod'
|
2
29
|
require 'facets/unboundmethod/arguments'
|
3
30
|
#require 'facets/binding'
|
4
31
|
|
5
|
-
|
32
|
+
#
|
6
33
|
class Method
|
7
34
|
attr_accessor :advised
|
8
35
|
|
data/lib/more/facets/aop.rb
CHANGED
@@ -176,14 +176,7 @@ class Class
|
|
176
176
|
end
|
177
177
|
|
178
178
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
#
|
183
|
-
# Basic Test
|
184
|
-
#
|
185
|
-
|
186
|
-
if $0 == __FILE__
|
179
|
+
=begin demo
|
187
180
|
|
188
181
|
class X
|
189
182
|
def x; "x"; end
|
@@ -209,4 +202,4 @@ if $0 == __FILE__
|
|
209
202
|
print '"y" == ' ; p x1.y
|
210
203
|
print '"<{x}>" == ' ; p x1.q
|
211
204
|
|
212
|
-
end
|
205
|
+
=end
|
data/log/history.rd
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
= Facets Revision History
|
2
2
|
|
3
|
+
== 2.1.3 / 2007-11-28
|
4
|
+
|
5
|
+
* Fixed minor oddity in Enumerable/collate.
|
6
|
+
* Fixed major issue with 2.1.2 where it would not core facets correctly.
|
7
|
+
|
3
8
|
== 2.1.2 / 2007-11-22
|
4
9
|
|
5
10
|
* Dir::multiglob no longer handels -/+ modifiers. Use FileList instead.
|
data/meta/MANIFEST
CHANGED
@@ -68,6 +68,7 @@ lib/core/facets/enumerable.rb
|
|
68
68
|
lib/core/facets/exception
|
69
69
|
lib/core/facets/exception/detail.rb
|
70
70
|
lib/core/facets/exception.rb
|
71
|
+
lib/core/facets/facets.rb
|
71
72
|
lib/core/facets/file
|
72
73
|
lib/core/facets/file/read.rb
|
73
74
|
lib/core/facets/file/topath.rb
|
@@ -126,7 +127,6 @@ lib/core/facets/kernel/tap.rb
|
|
126
127
|
lib/core/facets/kernel/val.rb
|
127
128
|
lib/core/facets/kernel/withattr.rb
|
128
129
|
lib/core/facets/kernel.rb
|
129
|
-
lib/core/facets/main.rb
|
130
130
|
lib/core/facets/matchdata
|
131
131
|
lib/core/facets/matchdata/matchset.rb
|
132
132
|
lib/core/facets/matchdata.rb
|
@@ -751,10 +751,10 @@ log/history.rd
|
|
751
751
|
log/todo.rd
|
752
752
|
meta
|
753
753
|
meta/MANIFEST
|
754
|
+
meta/ROLLRC
|
754
755
|
meta/google_ad.html
|
755
756
|
meta/icli.yaml
|
756
757
|
meta/project.yaml
|
757
|
-
meta/rollrc
|
758
758
|
task
|
759
759
|
task/changes
|
760
760
|
task/clean
|
@@ -784,8 +784,6 @@ task/test/loadtest
|
|
784
784
|
task/test/pairs
|
785
785
|
task/test/syntax
|
786
786
|
test
|
787
|
-
test/lib
|
788
|
-
test/lib/rq.rb
|
789
787
|
test/unit
|
790
788
|
test/unit/array
|
791
789
|
test/unit/array/test_delete.rb
|
data/meta/{rollrc → ROLLRC}
RENAMED
data/task/release
CHANGED
@@ -3,9 +3,7 @@
|
|
3
3
|
# release packages
|
4
4
|
|
5
5
|
main :release do
|
6
|
-
|
7
|
-
pname = File.basename(fname).chomp('.roll')
|
8
|
-
name, version = *pname.split('-')
|
6
|
+
name, version = rollrc.name, rollrc.version
|
9
7
|
|
10
8
|
icli "rubyforge release --version=#{version}"
|
11
9
|
end
|
data/task/test/general
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# Run unit tests
|
4
4
|
|
5
|
-
live =
|
5
|
+
live = commandline.flag?('--live')
|
6
6
|
|
7
7
|
unless live
|
8
8
|
$LOAD_PATH.unshift(File.expand_path('lib/methods'))
|
@@ -11,7 +11,7 @@ unless live
|
|
11
11
|
end
|
12
12
|
|
13
13
|
main :test do
|
14
|
-
if find =
|
14
|
+
if find = commandline[0]
|
15
15
|
unless file?(find)
|
16
16
|
find = File.join(find, '**', 'test_*.rb')
|
17
17
|
end
|
data/task/test/loadtest
CHANGED
@@ -12,7 +12,7 @@ main :syntax do
|
|
12
12
|
scripts.each do |s|
|
13
13
|
next unless File.file?(s)
|
14
14
|
#if not system "ruby -c -Ibin:lib:test #{s} &> /dev/null" then
|
15
|
-
if
|
15
|
+
if system("ruby -I#{libpath} #{s} > /dev/null")
|
16
16
|
puts "#{s} [PASS]" #if verbose?
|
17
17
|
else
|
18
18
|
puts "Load Issue: #{s}"
|
@@ -1,55 +1,51 @@
|
|
1
|
-
|
2
|
-
# |_ _|__ ___| |_
|
3
|
-
# | |/ _ \/ __| __|
|
4
|
-
# | | __/\__ \ |
|
5
|
-
# |_|\___||___/\__|
|
6
|
-
#
|
7
|
-
# for lib/facets/enumerable/collate.rb
|
8
|
-
#
|
9
|
-
# Extracted Mon Sep 03 16:23:07 -0700 2007
|
10
|
-
# w/ Test Extraction Ratchet
|
11
|
-
#
|
12
|
-
|
13
|
-
require 'facets/enumerable/collate.rb'
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
require 'test/unit'
|
18
|
-
|
19
|
-
class TestEnumerableCollate < Test::Unit::TestCase
|
20
|
-
|
21
|
-
def test_collate_01
|
22
|
-
a = { :a => 1, :b => 2, :c => 3 }
|
23
|
-
e = { :a => 2, :b => 3, :c => 4 }
|
24
|
-
assert_equal( e, a.collate{ |k,v| { k => v+1 } } )
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_collate_02
|
28
|
-
numbers = (1..3)
|
29
|
-
squares = numbers.collate{ |n| [n, n*n] }
|
30
|
-
assert_equal( {1=>1, 2=>4, 3=>9}, squares )
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_collate_03
|
34
|
-
numbers = (1..3)
|
35
|
-
sq_roots = numbers.collate{ |n| [n*n, n] }
|
36
|
-
assert_equal( {1=>1, 4=>2, 9=>3}, sq_roots )
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_collate_01!
|
40
|
-
a = { :a => 1, :b => 2, :c => 3 }
|
41
|
-
e = { :a => 2, :b => 3, :c => 4 }
|
42
|
-
a.collate!{ |k,v| { k => v+1 } }
|
43
|
-
assert_equal( e, a )
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_collate_02!
|
47
|
-
h = {:a=>1,:b=>2,:c=>3}
|
48
|
-
h.collate!{ |k,v| [v, v*v] }
|
49
|
-
assert_equal( {1=>1, 2=>4, 3=>9}, h )
|
50
|
-
end
|
1
|
+
# Test facets/enumerable/collate.rb
|
51
2
|
|
3
|
+
require 'facets/enumerable/collate.rb'
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
class TestEnumerableCollate < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_collate_hash_return
|
9
|
+
a = { :a => 1, :b => 2, :c => 3 }
|
10
|
+
e = { :a => 2, :b => 3, :c => 4 }
|
11
|
+
assert_equal( e, a.collate{ |k,v| {k => v+1} } )
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_collate_hash_of_array
|
15
|
+
a = { :a => [1,2], :b => [2,3], :c => [3,4] }
|
16
|
+
e = { :a => 2, :b => 6, :c => 12 }
|
17
|
+
assert_equal( e, a.collate{ |k,v| [k, v[0]*v[1] ] } )
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_collate_array_of_array
|
21
|
+
a = [ [1,2], [2,3], [3,4] ]
|
22
|
+
e = { [1,2] => 2, [2,3] => 6, [3,4] => 12 }
|
23
|
+
assert_equal( e, a.collate{ |a| [a, a[0]*a[1] ] } )
|
52
24
|
end
|
53
25
|
|
26
|
+
def test_collate_squares
|
27
|
+
numbers = (1..3)
|
28
|
+
squares = numbers.collate{ |n| [n, n*n] }
|
29
|
+
assert_equal( {1=>1, 2=>4, 3=>9}, squares )
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_collate_roots
|
33
|
+
numbers = (1..3)
|
34
|
+
sq_roots = numbers.collate{ |n| [n*n, n] }
|
35
|
+
assert_equal( {1=>1, 4=>2, 9=>3}, sq_roots )
|
36
|
+
end
|
54
37
|
|
38
|
+
def test_collate_inplace!
|
39
|
+
a = { :a => 1, :b => 2, :c => 3 }
|
40
|
+
e = { :a => 2, :b => 3, :c => 4 }
|
41
|
+
a.collate!{ |k,v| { k => v+1 } }
|
42
|
+
assert_equal( e, a )
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_collate_inplace_again!
|
46
|
+
h = {:a=>1,:b=>2,:c=>3}
|
47
|
+
h.collate!{ |k,v| [v, v*v] }
|
48
|
+
assert_equal( {1=>1, 2=>4, 3=>9}, h )
|
49
|
+
end
|
55
50
|
|
51
|
+
end
|
data/test/unit/test_advice.rb
CHANGED
data/test/unit/test_arguments.rb
CHANGED
@@ -1,71 +1,55 @@
|
|
1
|
-
|
2
|
-
# |_ _|__ ___| |_
|
3
|
-
# | |/ _ \/ __| __|
|
4
|
-
# | | __/\__ \ |
|
5
|
-
# |_|\___||___/\__|
|
6
|
-
#
|
7
|
-
# for lib/facets/arguments.rb
|
8
|
-
#
|
9
|
-
# Extracted Mon Sep 03 16:23:08 -0700 2007
|
10
|
-
# w/ Test Extraction Ratchet
|
11
|
-
#
|
1
|
+
# Test for facets/arguments.rb.
|
12
2
|
|
13
|
-
|
3
|
+
require 'test/unit'
|
4
|
+
require 'facets/arguments.rb'
|
14
5
|
|
6
|
+
class TestArguments < Test::Unit::TestCase
|
15
7
|
|
8
|
+
include Console
|
16
9
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
line = "-x baz --foo=8 bar"
|
25
|
-
cargs = Arguments.new(line)
|
26
|
-
args, keys = cargs.parameters
|
27
|
-
assert_equal(['baz','bar'], args)
|
28
|
-
assert_equal({'foo'=>'8','x'=>true}, keys)
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_parameters_with_arity
|
32
|
-
line = "-g a -x b -x c"
|
33
|
-
cargs = Arguments.new(line, :g=>1, :x=>1)
|
34
|
-
args, keys = cargs.parameters
|
35
|
-
assert_equal({'g'=>'a','x'=>['b','c']}, keys)
|
36
|
-
assert_equal([], args)
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_flags
|
40
|
-
line = "-x baz --foo=8 bar"
|
41
|
-
cargs = Arguments.new(line)
|
42
|
-
flags = cargs.flags
|
43
|
-
assert_equal(['x'], flags)
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_repeat
|
47
|
-
line = "-x baz --foo=1 --foo=2 bar"
|
48
|
-
cargs = Arguments.new(line)
|
49
|
-
args, keys = cargs.parameters
|
50
|
-
assert_equal(['baz','bar'], args)
|
51
|
-
assert_equal({'x'=>true,'foo'=>['1','2']}, keys)
|
52
|
-
end
|
10
|
+
def test_parameters
|
11
|
+
line = "-x baz --foo=8 bar"
|
12
|
+
cargs = Arguments.new(line)
|
13
|
+
args, keys = cargs.parameters
|
14
|
+
assert_equal(['baz','bar'], args)
|
15
|
+
assert_equal({'foo'=>'8','x'=>true}, keys)
|
16
|
+
end
|
53
17
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
18
|
+
def test_parameters_with_arity
|
19
|
+
line = "-g a -x b -x c"
|
20
|
+
cargs = Arguments.new(line, :g=>1, :x=>1)
|
21
|
+
args, keys = cargs.parameters
|
22
|
+
assert_equal({'g'=>'a','x'=>['b','c']}, keys)
|
23
|
+
assert_equal([], args)
|
24
|
+
end
|
60
25
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
assert_equal({'q'=>true,'aq'=>'5'},flags)
|
67
|
-
end
|
26
|
+
def test_flags
|
27
|
+
line = "-x baz --foo=8 bar"
|
28
|
+
cargs = Arguments.new(line)
|
29
|
+
flags = cargs.flags
|
30
|
+
assert_equal(['x'], flags)
|
68
31
|
end
|
69
32
|
|
33
|
+
def test_repeat
|
34
|
+
line = "-x baz --foo=1 --foo=2 bar"
|
35
|
+
cargs = Arguments.new(line)
|
36
|
+
args, keys = cargs.parameters
|
37
|
+
assert_equal(['baz','bar'], args)
|
38
|
+
assert_equal({'x'=>true,'foo'=>['1','2']}, keys)
|
39
|
+
end
|
70
40
|
|
41
|
+
def test_preoptions
|
42
|
+
line = "-x --foo=7 baz -y bar"
|
43
|
+
cargs = Arguments.new(line)
|
44
|
+
flags = cargs.preoptions
|
45
|
+
assert_equal({'x'=>true,'foo'=>'7'}, flags)
|
46
|
+
end
|
71
47
|
|
48
|
+
def test_with_arity
|
49
|
+
line = "-q baz --aq 5 bar"
|
50
|
+
cargs = Arguments.new(line,'aq'=>1)
|
51
|
+
words, flags = cargs.parameters
|
52
|
+
assert_equal(['baz','bar'],words)
|
53
|
+
assert_equal({'q'=>true,'aq'=>'5'},flags)
|
54
|
+
end
|
55
|
+
end
|