facets 2.0.5 → 2.1.0
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.
- data/WHATSNEW +11 -0
- data/lib/core/facets/enumerable/collect.rb +7 -2
- data/lib/core/facets/enumerable/permutation.rb +7 -26
- data/lib/core/facets/module/alias.rb +36 -12
- data/lib/core/facets/module/attr.rb +83 -35
- data/lib/core/facets/module/include.rb +10 -0
- data/lib/methods/facets/module/alias_accessor.rb +1 -1
- data/lib/methods/facets/module/alias_reader.rb +1 -0
- data/lib/methods/facets/module/alias_setter.rb +1 -0
- data/lib/methods/facets/module/alias_switcher.rb +1 -0
- data/lib/methods/facets/module/alias_tester.rb +1 -0
- data/lib/methods/facets/module/alias_toggler.rb +1 -0
- data/lib/methods/facets/module/alias_validator.rb +1 -0
- data/lib/methods/facets/module/alias_writer.rb +1 -0
- data/lib/methods/facets/module/attr_accessor.rb +1 -0
- data/lib/methods/facets/module/attr_reader.rb +1 -0
- data/lib/methods/facets/module/attr_switcher.rb +1 -0
- data/lib/methods/facets/module/attr_writer.rb +1 -0
- data/lib/more/facets/arguments.rb +2 -1
- data/lib/more/facets/command.rb +258 -395
- data/lib/more/facets/crypt.rb +242 -28
- data/lib/more/facets/ziputils.rb +1 -1
- data/log/changelog.txt +0 -0
- data/log/history.txt +22 -0
- data/log/release.txt +10 -0
- data/log/todo.txt +4 -0
- data/meta/{facets-2.0.5.roll → facets-2.1.0.roll} +0 -0
- data/meta/google_ad.html +15 -0
- data/meta/icli.yaml +3 -3
- data/meta/manifest.txt +24 -3
- data/task/clobber/package +10 -0
- data/task/config/general.yaml +21 -3
- data/task/isotest +2 -1
- data/task/loadtest +2 -0
- data/task/prepare +4 -2
- data/task/rdoc +122 -73
- data/task/release +12 -0
- data/task/special/quickopts +15 -0
- data/task/syntax +2 -0
- data/task/test +3 -1
- data/test/unit/enumerable/test_collect.rb +17 -0
- data/test/unit/enumerable/test_permutation.rb +20 -30
- data/test/unit/test_crypt.rb +29 -36
- metadata +40 -12
- data/RELEASE +0 -12
- data/test/unit/test_command.rb +0 -286
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.4
|
3
|
-
specification_version:
|
2
|
+
rubygems_version: 0.9.4.6
|
3
|
+
specification_version: 2
|
4
4
|
name: facets
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 2.0
|
7
|
-
date: 2007-11-
|
6
|
+
version: 2.1.0
|
7
|
+
date: 2007-11-10 00:00:00 -05:00
|
8
8
|
summary: Premium Core Extensions and Standard Additions
|
9
9
|
require_paths:
|
10
10
|
- lib/methods
|
@@ -18,23 +18,31 @@ autorequire:
|
|
18
18
|
default_executable:
|
19
19
|
bindir: bin
|
20
20
|
has_rdoc: false
|
21
|
-
required_ruby_version: !ruby/object:Gem::
|
21
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
22
22
|
requirements:
|
23
|
-
- - "
|
23
|
+
- - ">="
|
24
24
|
- !ruby/object:Gem::Version
|
25
|
-
version: 0
|
25
|
+
version: "0"
|
26
|
+
version:
|
27
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: "0"
|
26
32
|
version:
|
27
33
|
platform: ruby
|
28
34
|
signing_key:
|
29
|
-
cert_chain:
|
35
|
+
cert_chain: []
|
36
|
+
|
30
37
|
post_install_message:
|
38
|
+
extensions_fallback:
|
31
39
|
authors:
|
32
40
|
- Thomas Sawyer <transfire@gmail.com>
|
33
41
|
files:
|
34
42
|
- AUTHORS
|
35
43
|
- LICENSE
|
36
44
|
- README
|
37
|
-
-
|
45
|
+
- WHATSNEW
|
38
46
|
- demo
|
39
47
|
- demo/bench
|
40
48
|
- demo/bench/enumerable
|
@@ -495,12 +503,23 @@ files:
|
|
495
503
|
- lib/methods/facets/module/alias_accessor.rb
|
496
504
|
- lib/methods/facets/module/alias_method_chain.rb
|
497
505
|
- lib/methods/facets/module/alias_module_function.rb
|
506
|
+
- lib/methods/facets/module/alias_reader.rb
|
507
|
+
- lib/methods/facets/module/alias_setter.rb
|
508
|
+
- lib/methods/facets/module/alias_switcher.rb
|
509
|
+
- lib/methods/facets/module/alias_tester.rb
|
510
|
+
- lib/methods/facets/module/alias_toggler.rb
|
511
|
+
- lib/methods/facets/module/alias_validator.rb
|
512
|
+
- lib/methods/facets/module/alias_writer.rb
|
498
513
|
- lib/methods/facets/module/all_instance_methods.rb
|
499
514
|
- lib/methods/facets/module/ancestor.rb
|
515
|
+
- lib/methods/facets/module/attr_accessor.rb
|
516
|
+
- lib/methods/facets/module/attr_reader.rb
|
500
517
|
- lib/methods/facets/module/attr_setter.rb
|
518
|
+
- lib/methods/facets/module/attr_switcher.rb
|
501
519
|
- lib/methods/facets/module/attr_tester.rb
|
502
520
|
- lib/methods/facets/module/attr_toggler.rb
|
503
521
|
- lib/methods/facets/module/attr_validator.rb
|
522
|
+
- lib/methods/facets/module/attr_writer.rb
|
504
523
|
- lib/methods/facets/module/basename.rb
|
505
524
|
- lib/methods/facets/module/by_name.rb
|
506
525
|
- lib/methods/facets/module/can.rb
|
@@ -758,12 +777,20 @@ files:
|
|
758
777
|
- lib/more/facets/version.rb
|
759
778
|
- lib/more/facets/yaml.rb
|
760
779
|
- lib/more/facets/ziputils.rb
|
780
|
+
- log
|
781
|
+
- log/changelog.txt
|
782
|
+
- log/history.txt
|
783
|
+
- log/release.txt
|
784
|
+
- log/todo.txt
|
761
785
|
- meta
|
762
|
-
- meta/facets-2.0.
|
786
|
+
- meta/facets-2.1.0.roll
|
787
|
+
- meta/google_ad.html
|
763
788
|
- meta/icli.yaml
|
764
789
|
- meta/manifest.txt
|
765
790
|
- task
|
766
791
|
- task/clean
|
792
|
+
- task/clobber
|
793
|
+
- task/clobber/package
|
767
794
|
- task/config
|
768
795
|
- task/config/general.yaml
|
769
796
|
- task/config/rdoc.yaml
|
@@ -777,6 +804,9 @@ files:
|
|
777
804
|
- task/prepare
|
778
805
|
- task/publish
|
779
806
|
- task/rdoc
|
807
|
+
- task/release
|
808
|
+
- task/special
|
809
|
+
- task/special/quickopts
|
780
810
|
- task/stats
|
781
811
|
- task/syntax
|
782
812
|
- task/test
|
@@ -918,7 +948,6 @@ files:
|
|
918
948
|
- test/unit/test_bytes.rb
|
919
949
|
- test/unit/test_class_extension.rb
|
920
950
|
- test/unit/test_classmethods.rb
|
921
|
-
- test/unit/test_command.rb
|
922
951
|
- test/unit/test_compare_on.rb
|
923
952
|
- test/unit/test_conversion.rb
|
924
953
|
- test/unit/test_coroutine.rb
|
@@ -1103,7 +1132,6 @@ test_files:
|
|
1103
1132
|
- test/unit/test_bytes.rb
|
1104
1133
|
- test/unit/test_class_extension.rb
|
1105
1134
|
- test/unit/test_classmethods.rb
|
1106
|
-
- test/unit/test_command.rb
|
1107
1135
|
- test/unit/test_compare_on.rb
|
1108
1136
|
- test/unit/test_conversion.rb
|
1109
1137
|
- test/unit/test_coroutine.rb
|
data/RELEASE
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
Facets 2.0.5 is in the wild!
|
2
|
-
|
3
|
-
This is an bug-fix release.
|
4
|
-
|
5
|
-
* Fixes bug with Dictionary#initialize
|
6
|
-
* Fixes bug with Hash#-
|
7
|
-
* Also improves changelog production.
|
8
|
-
|
9
|
-
Also included are some final methods, contributed
|
10
|
-
by Noah Gibbs, that hadn't yet been adopted from
|
11
|
-
Gavin Sinclair's Extensions project.
|
12
|
-
|
data/test/unit/test_command.rb
DELETED
@@ -1,286 +0,0 @@
|
|
1
|
-
require 'facets/command'
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
require 'stringio'
|
5
|
-
|
6
|
-
include Console
|
7
|
-
|
8
|
-
class TestCommand < Test::Unit::TestCase
|
9
|
-
Output = []
|
10
|
-
|
11
|
-
def setup
|
12
|
-
Output.clear
|
13
|
-
$stderr = StringIO.new
|
14
|
-
end
|
15
|
-
|
16
|
-
# Base test command (in case we wnat ot share something).
|
17
|
-
|
18
|
-
class TestCommand < Command
|
19
|
-
end
|
20
|
-
|
21
|
-
#
|
22
|
-
# Test basic command.
|
23
|
-
#
|
24
|
-
|
25
|
-
class SimpleCommand < TestCommand
|
26
|
-
def here! ; @here = true ; end
|
27
|
-
|
28
|
-
def main(*args)
|
29
|
-
Output.concat([@here] | args)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_SimpleCommand
|
34
|
-
cmd = SimpleCommand.new
|
35
|
-
cmd.execute( '--here file1 file2' )
|
36
|
-
assert_equal( [true, 'file1', 'file2'], Output )
|
37
|
-
end
|
38
|
-
|
39
|
-
#
|
40
|
-
# Test missing subcommand.
|
41
|
-
#
|
42
|
-
|
43
|
-
class CommandWithMethodMissingSubcommand < TestCommand
|
44
|
-
def here! ; @here = true ; end
|
45
|
-
|
46
|
-
def method_missing(cmd, *args)
|
47
|
-
Output.concat([@here, cmd] | args)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_CommandWithMethodMissingSubcommand
|
52
|
-
cmd = CommandWithMethodMissingSubcommand.new
|
53
|
-
cmd.execute( '--here go file1' )
|
54
|
-
assert_equal( [true, :go, 'file1'], Output )
|
55
|
-
end
|
56
|
-
|
57
|
-
#
|
58
|
-
# Test simple subcommand.
|
59
|
-
#
|
60
|
-
|
61
|
-
class CommandWithSimpleSubcommand < TestCommand
|
62
|
-
def here! ; @here = true ; end
|
63
|
-
|
64
|
-
options :go do
|
65
|
-
attr :i
|
66
|
-
def i=(n)
|
67
|
-
@i = n.to_i
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def go
|
72
|
-
Output.concat([@here, @options.i])
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_CommandWithSimpleSubcommand
|
77
|
-
cmd = CommandWithSimpleSubcommand.new
|
78
|
-
cmd.execute( '--here go -i 1' )
|
79
|
-
assert_equal( [true, 1], Output )
|
80
|
-
end
|
81
|
-
|
82
|
-
#
|
83
|
-
# Global options can be anywhere, right? Even after subcommands?
|
84
|
-
#
|
85
|
-
|
86
|
-
class CommandWithGlobalOptionsAfterSubcommand < TestCommand
|
87
|
-
global_option :x
|
88
|
-
|
89
|
-
def x! ; @x = true ; end
|
90
|
-
|
91
|
-
options :go do
|
92
|
-
attr :i
|
93
|
-
def i=(n)
|
94
|
-
@i = n.to_i
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
def go ; Output.concat([@x, @options.i]) ; end
|
99
|
-
end
|
100
|
-
|
101
|
-
def test_CommandWithGlobalOptionsAfterSubcommand_01
|
102
|
-
cmd = CommandWithGlobalOptionsAfterSubcommand.new
|
103
|
-
cmd.execute( 'go -x -i 1' )
|
104
|
-
assert_equal( [true, 1], Output )
|
105
|
-
end
|
106
|
-
|
107
|
-
def test_CommandWithGlobalOptionsAfterSubcommand_02
|
108
|
-
cmd = CommandWithGlobalOptionsAfterSubcommand.new
|
109
|
-
cmd.execute( 'go -i 1 -x' )
|
110
|
-
assert_equal( [true, 1], Output )
|
111
|
-
end
|
112
|
-
|
113
|
-
#
|
114
|
-
#
|
115
|
-
#
|
116
|
-
|
117
|
-
class GivingUnrecognizedOptions < TestCommand
|
118
|
-
def x! ; @x = true ; end
|
119
|
-
def go ; Output.concat([@x, @p]) ; end
|
120
|
-
end
|
121
|
-
|
122
|
-
def test_GivingUnrecognizedOptions
|
123
|
-
cmd = GivingUnrecognizedOptions.new
|
124
|
-
assert_raise(InvalidOptionError) do
|
125
|
-
cmd.execute( '--an-option-that-wont-be-recognized -x go' )
|
126
|
-
end
|
127
|
-
#assert_equal "Unknown option '--an-option-that-wont-be-recognized'.\n", $stderr.string
|
128
|
-
assert_equal( [], Output )
|
129
|
-
end
|
130
|
-
|
131
|
-
#
|
132
|
-
#
|
133
|
-
#
|
134
|
-
|
135
|
-
class PassingMultipleSingleCharOptionsAsOneOption < TestCommand
|
136
|
-
def x! ; @x = true ; end
|
137
|
-
def y! ; @y = true ; end
|
138
|
-
def z=(n) ; @z = n ; end
|
139
|
-
|
140
|
-
global_option :x
|
141
|
-
|
142
|
-
options :go do
|
143
|
-
attr :i
|
144
|
-
def i=(n)
|
145
|
-
@i = n.to_i
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
def go ; Output.concat([@x, @y, @z, @options.i]) ; end
|
150
|
-
end
|
151
|
-
|
152
|
-
def test_PassingMultipleSingleCharOptionsAsOneOption
|
153
|
-
cmd = PassingMultipleSingleCharOptionsAsOneOption.new
|
154
|
-
cmd.execute( '-xy -z HERE go -i 1' )
|
155
|
-
assert_equal( [true, true, 'HERE', 1], Output )
|
156
|
-
end
|
157
|
-
|
158
|
-
# #
|
159
|
-
#
|
160
|
-
# class CommandWithOptionUsingEquals < TestCommand
|
161
|
-
# subcommand :go do
|
162
|
-
# def __mode(mode) ; @mode = mode ; end
|
163
|
-
# def main ; Output.concat([@mode]) ; end
|
164
|
-
# end
|
165
|
-
# end
|
166
|
-
#
|
167
|
-
# def test_CommandWithOptionUsingEquals
|
168
|
-
# cmd = CommandWithOptionUsingEquals.new
|
169
|
-
# cmd.execute( 'go --mode smart' )
|
170
|
-
# assert_equal( ['smart'], Output )
|
171
|
-
#
|
172
|
-
# # I would expect this to work too, but currently it doesn't.
|
173
|
-
# #assert_nothing_raised { CommandWithOptionUsingEquals.execute( 'go --mode=smart' ) }
|
174
|
-
# #assert_equal( ['smart'], Output )
|
175
|
-
# end
|
176
|
-
|
177
|
-
#
|
178
|
-
|
179
|
-
class CommandWithSubcommandThatTakesArgs < TestCommand
|
180
|
-
def go(arg1, *args) ; Output.concat([arg1] | args) ; end
|
181
|
-
end
|
182
|
-
|
183
|
-
def test_CommandWithSubcommandThatTakesArgs
|
184
|
-
cmd = CommandWithSubcommandThatTakesArgs.new
|
185
|
-
cmd.execute( 'go file1 file2 file3' )
|
186
|
-
assert_equal( ['file1', 'file2', 'file3'], Output )
|
187
|
-
end
|
188
|
-
|
189
|
-
#
|
190
|
-
|
191
|
-
class CommandWith2OptionalArgs < TestCommand
|
192
|
-
def here! ; @here = true ; end
|
193
|
-
|
194
|
-
options :go do
|
195
|
-
attr :i
|
196
|
-
def i=(n)
|
197
|
-
@i = n.to_i
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
def go(required1 = nil, optional2 = nil)
|
202
|
-
Output.concat [@here, @options.i, required1, optional2]
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
def test_CommandWith2OptionalArgs
|
207
|
-
cmd = CommandWith2OptionalArgs.new
|
208
|
-
cmd.execute( '--here go -i 1 to' )
|
209
|
-
assert_equal( [true, 1, 'to', nil], Output )
|
210
|
-
end
|
211
|
-
|
212
|
-
#
|
213
|
-
|
214
|
-
class CommandWithVariableArgs < TestCommand
|
215
|
-
def here! ; @here = true ; end
|
216
|
-
|
217
|
-
options :go do
|
218
|
-
attr :i
|
219
|
-
def i=(n)
|
220
|
-
@i = n.to_i
|
221
|
-
end
|
222
|
-
end
|
223
|
-
|
224
|
-
def go(*args) ; Output.concat([@here, @options.i] | args) ; end
|
225
|
-
end
|
226
|
-
|
227
|
-
def test_CommandWithVariableArgs
|
228
|
-
cmd = CommandWithVariableArgs.new
|
229
|
-
cmd.execute( '--here go -i 1 to bed' )
|
230
|
-
assert_equal( [true, 1, 'to', 'bed'], Output )
|
231
|
-
end
|
232
|
-
|
233
|
-
#
|
234
|
-
|
235
|
-
class CommandWithOptionMissing < TestCommand
|
236
|
-
def here! ; @here = true ; end
|
237
|
-
|
238
|
-
options :go do
|
239
|
-
attr :i
|
240
|
-
def option_missing(opt, value)
|
241
|
-
case opt
|
242
|
-
when '-i'
|
243
|
-
@i = value.to_i
|
244
|
-
true
|
245
|
-
else
|
246
|
-
super
|
247
|
-
end
|
248
|
-
end
|
249
|
-
end
|
250
|
-
|
251
|
-
def go(*args) ; Output.concat([@here, @options.i] | args) ; end
|
252
|
-
end
|
253
|
-
|
254
|
-
def test_CommandWithOptionMissing
|
255
|
-
cmd = CommandWithOptionMissing.new
|
256
|
-
cmd.execute( '--here go -i 1 to bed right now' )
|
257
|
-
assert_equal( [true, 1, 'to', 'bed', 'right', 'now'], Output )
|
258
|
-
end
|
259
|
-
|
260
|
-
end
|
261
|
-
|
262
|
-
|
263
|
-
class TestCommandOptions < Test::Unit::TestCase
|
264
|
-
|
265
|
-
class MyOptions < Command::Options
|
266
|
-
attr_reader :a, :b
|
267
|
-
def a! ; @a = true ; end
|
268
|
-
def b=(x) ; @b = x ; end
|
269
|
-
end
|
270
|
-
|
271
|
-
def test_myoptions1
|
272
|
-
opts = MyOptions.parse("-a -b hi")
|
273
|
-
assert_equal( true, opts.a)
|
274
|
-
end
|
275
|
-
|
276
|
-
def test_myoptions2
|
277
|
-
opts = MyOptions.parse("-a -b hi")
|
278
|
-
assert_equal('hi', opts.b)
|
279
|
-
end
|
280
|
-
|
281
|
-
def test_usage
|
282
|
-
opts = MyOptions.parse("-a -b hi")
|
283
|
-
assert_equal('[-a] [-b value]', opts.usage)
|
284
|
-
end
|
285
|
-
|
286
|
-
end
|