ruby_ex 0.3.0 → 0.4.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. data/ChangeLog +324 -0
  2. data/NEWS +17 -0
  3. data/README +1 -1
  4. data/SPEC.yml +9 -9
  5. data/lib/abstract.rb +3 -38
  6. data/lib/abstract_node.rb +2 -4
  7. data/lib/algorithms/simulated_annealing.rb +26 -3
  8. data/lib/attributed_class.rb +2 -2
  9. data/lib/auto_object.rb +2 -6
  10. data/lib/blank_slate.rb +1 -1
  11. data/lib/cache.rb +4 -4
  12. data/lib/choose.rb +3 -5
  13. data/lib/commands/command.rb +53 -27
  14. data/lib/commands/datas/composite.rb +2 -4
  15. data/lib/commands/datas/data.rb +13 -16
  16. data/lib/commands/datas/factory.rb +2 -4
  17. data/lib/commands/datas/pipe.rb +52 -0
  18. data/lib/commands/datas/temp.rb +2 -2
  19. data/lib/commands/datas.rb +1 -6
  20. data/lib/commands/factory.rb +1 -3
  21. data/lib/commands/helpers.rb +6 -11
  22. data/lib/commands/pipe.rb +4 -6
  23. data/lib/commands/runners/exec.rb +2 -6
  24. data/lib/commands/runners/fork.rb +3 -20
  25. data/lib/commands/runners/mockable.rb +4 -7
  26. data/lib/commands/runners/no_run.rb +44 -0
  27. data/lib/commands/runners/popen.rb +49 -0
  28. data/lib/commands/runners/runner.rb +29 -6
  29. data/lib/commands/runners/system.rb +1 -4
  30. data/lib/commands/runners.rb +1 -6
  31. data/lib/commands/seq.rb +1 -3
  32. data/lib/commands.rb +3 -13
  33. data/lib/concrete.rb +38 -0
  34. data/lib/config_file.rb +2 -3
  35. data/lib/const_regexp.rb +1 -1
  36. data/lib/d_logger.rb +1 -1
  37. data/lib/daemon.rb +2 -3
  38. data/lib/diff.rb +1 -1
  39. data/lib/diff_tools.rb +1 -3
  40. data/lib/drb/drb_observable.rb +1 -1
  41. data/lib/drb/drb_observable_pool.rb +1 -1
  42. data/lib/drb/drb_service.rb +1 -1
  43. data/lib/drb/drb_undumped_attributes.rb +1 -1
  44. data/lib/drb/drb_undumped_indexed_object.rb +1 -1
  45. data/lib/drb/insecure_protected_methods.rb +1 -1
  46. data/lib/drb_ex.rb +1 -1
  47. data/lib/file_type.rb +2 -2
  48. data/lib/generate_id.rb +1 -1
  49. data/lib/genpasswd.rb +1 -1
  50. data/lib/hash_eval.rb +1 -1
  51. data/lib/histogram.rb +1 -1
  52. data/lib/hookable.rb +1 -4
  53. data/lib/hooker.rb +1 -1
  54. data/lib/html_encode.rb +1 -1
  55. data/lib/indexed_node.rb +0 -3
  56. data/lib/io_marshal.rb +1 -1
  57. data/lib/ioo.rb +1 -1
  58. data/lib/kill_all.rb +2 -2
  59. data/lib/labeled_node.rb +0 -3
  60. data/lib/logger_observer.rb +1 -1
  61. data/lib/md5sum.rb +1 -1
  62. data/lib/meta_factory.rb +1 -1
  63. data/lib/method_call.rb +1 -1
  64. data/lib/mocks/assertions.rb +1 -1
  65. data/lib/mocks/method_logger.rb +1 -3
  66. data/lib/mocks/mock.rb +2 -4
  67. data/lib/mocks/object.rb +1 -4
  68. data/lib/mocks/observer.rb +1 -3
  69. data/lib/mocks.rb +1 -6
  70. data/lib/module/autoload_tree.rb +1 -1
  71. data/lib/module/hierarchy.rb +1 -1
  72. data/lib/module/instance_method_visibility.rb +17 -16
  73. data/lib/object_monitor.rb +1 -1
  74. data/lib/object_monitor_activity.rb +1 -1
  75. data/lib/observable.rb +1 -1
  76. data/lib/observable_pool.rb +1 -1
  77. data/lib/ordered_hash.rb +1 -1
  78. data/lib/r_path.rb +44 -23
  79. data/lib/random_generators/random_generator.rb +1 -1
  80. data/lib/random_generators/ruby.rb +1 -5
  81. data/lib/random_generators.rb +20 -5
  82. data/lib/regex_list.rb +2 -5
  83. data/lib/regex_path.rb +64 -23
  84. data/lib/ruby_ex.rb +11 -2
  85. data/lib/safe_eval.rb +6 -15
  86. data/lib/sendmail.rb +41 -17
  87. data/lib/service_manager.rb +1 -1
  88. data/lib/shuffle.rb +3 -1
  89. data/lib/spring.rb +1 -1
  90. data/lib/spring_set.rb +1 -1
  91. data/lib/sym_tbl.rb +14 -8
  92. data/lib/sym_tbl_gsub.rb +88 -23
  93. data/lib/text.rb +1 -1
  94. data/lib/timeout_ex.rb +1 -1
  95. data/lib/trace.rb +1 -1
  96. data/lib/uri/druby.rb +3 -6
  97. data/lib/uri/file.rb +32 -18
  98. data/lib/uri/ftp_ex.rb +8 -3
  99. data/lib/uri/generic_ex.rb +158 -0
  100. data/lib/uri/http_ex.rb +9 -4
  101. data/lib/uri/mysql.rb +7 -15
  102. data/lib/uri/pgsql.rb +6 -14
  103. data/lib/uri/rsync.rb +77 -0
  104. data/lib/uri/ssh.rb +55 -27
  105. data/lib/uri/svn.rb +22 -76
  106. data/lib/verbose_object.rb +1 -5
  107. data/lib/yaml/transform.rb +1 -1
  108. data/lib/yaml/yregexpath.rb +1 -1
  109. data/test/algorithms/simulated_annealing_test.rb +79 -80
  110. data/test/unit-suite.yml +5 -3
  111. metadata +179 -172
  112. data/SPEC.dyn.yml +0 -10
  113. data/SPEC.gemspec +0 -14
  114. data/lib/uri_ex.rb +0 -110
  115. data/test/test-unit-setup.rb +0 -10
data/ChangeLog CHANGED
@@ -1,3 +1,327 @@
1
+ 2006-02-23 Nicolas Despr�s <nicolas.despres@gmail.com>
2
+
3
+ Update the NEWS file.
4
+
5
+ * NEWS: Updated for the upcoming release.
6
+
7
+ 2006-02-18 Nicolas Pouillard <ertai@lrde.epita.fr>
8
+
9
+ Adapt ruby_ex to LazyLoading.
10
+
11
+ * lib/r_path.rb,
12
+ * lib/indexed_node.rb,
13
+ * lib/sym_tbl_gsub.rb,
14
+ * lib/shuffle.rb,
15
+ * lib/labeled_node.rb,
16
+ * lib/config_file.rb,
17
+ * lib/abstract_node.rb,
18
+ * lib/uri_ex.rb,
19
+ * lib/commands/pipe.rb,
20
+ * lib/commands/factory.rb,
21
+ * lib/commands/seq.rb,
22
+ * lib/commands/datas/pipe.rb,
23
+ * lib/commands/datas/composite.rb,
24
+ * lib/commands/datas/temp.rb,
25
+ * lib/commands/datas/factory.rb,
26
+ * lib/commands/datas/data.rb,
27
+ * lib/commands/runners/no_run.rb,
28
+ * lib/commands/runners/popen.rb,
29
+ * lib/commands/runners/exec.rb,
30
+ * lib/commands/runners/runner.rb,
31
+ * lib/daemon.rb,
32
+ * lib/choose.rb,
33
+ * lib/diff_tools.rb,
34
+ * lib/verbose_object.rb,
35
+ * lib/uri/ssh.rb,
36
+ * lib/uri/rsync.rb,
37
+ * lib/uri/file.rb,
38
+ * lib/uri/druby.rb,
39
+ * lib/uri/ftp_ex.rb,
40
+ * lib/uri/mysql.rb,
41
+ * lib/uri/pgsql.rb,
42
+ * lib/uri/svn.rb,
43
+ * lib/uri/generic_ex.rb,
44
+ * lib/uri/http_ex.rb,
45
+ * lib/ruby_ex.rb,
46
+ * lib/module/instance_method_visibility.rb,
47
+ * lib/auto_object.rb,
48
+ * lib/regex_list.rb: Less requires.
49
+
50
+ 2006-02-18 Nicolas Pouillard <ertai@lrde.epita.fr>
51
+
52
+ Sendmail: Keep the importants keys ordered.
53
+
54
+ * lib/sendmail.rb: From, To and Subject must be in first.
55
+
56
+ 2006-01-01 Nicolas Pouillard <ertai@lrde.epita.fr>
57
+
58
+ Fix the URI::* lazy loading.
59
+
60
+ * lib/uri_ex.rb: Setup some inflection exceptions and add some test.
61
+ * lib/commands/command.rb: Extend the sleep time to 2 seconds.
62
+
63
+ 2005-12-31 Nicolas Pouillard <ertai@lrde.epita.fr>
64
+
65
+ More fixes.
66
+
67
+ * lib/random_generators.rb: Fix the test.
68
+ * test/algorithms/simulated_annealing_test.rb: Make a consistent class
69
+ name.
70
+
71
+ 2005-12-31 Nicolas Pouillard <ertai@lrde.epita.fr>
72
+
73
+ Commands: Remove useless requires/imports.
74
+
75
+ * lib/commands/command.rb,
76
+ * lib/commands/helpers.rb,
77
+ * lib/commands/datas/factory.rb,
78
+ * lib/commands/datas/data.rb,
79
+ * lib/commands/runners/mockable.rb,
80
+ * lib/commands/runners/fork.rb,
81
+ * lib/commands/runners/exec.rb,
82
+ * lib/commands/runners/system.rb,
83
+ * lib/commands/runners/runner.rb,
84
+ * lib/commands/datas.rb,
85
+ * lib/commands/runners.rb,
86
+ * lib/commands.rb: Clean up requires.
87
+ * lib/commands/datas/pipe.rb: Likewise and handle the pipe cleaning
88
+ properly.
89
+
90
+ 2005-12-31 Nicolas Pouillard <ertai@lrde.epita.fr>
91
+
92
+ FileType: Use make Abstract.
93
+
94
+ * lib/file_type.rb: In order to lazy load Abstract.
95
+
96
+ 2005-12-31 Nicolas Pouillard <ertai@lrde.epita.fr>
97
+
98
+ Hookable: Remove useless requires/imports.
99
+
100
+ * lib/hookable.rb: Update.
101
+
102
+ 2005-12-31 Nicolas Pouillard <ertai@lrde.epita.fr>
103
+
104
+ Export Concrete from Abstract.
105
+
106
+ * lib/abstract.rb: Export Concrete to make it lazy loadable without
107
+ saying Abstract before.
108
+ * lib/concrete.rb: New.
109
+
110
+ 2005-12-31 Nicolas Pouillard <ertai@lrde.epita.fr>
111
+
112
+ Mocks: Remove useless requires/imports.
113
+
114
+ * lib/mocks/method_logger.rb,
115
+ * lib/mocks/object.rb,
116
+ * lib/mocks/observer.rb,
117
+ * lib/mocks/mock.rb,
118
+ * lib/mocks.rb: Update.
119
+
120
+ 2005-12-31 Nicolas Pouillard <ertai@lrde.epita.fr>
121
+
122
+ Enforce the double load protection.
123
+
124
+ * lib/ruby_ex.rb: Enforce the double load protection.
125
+ * test/unit-suite.yml: Likewise but in a different way.
126
+
127
+ 2005-12-31 Nicolas Pouillard <ertai@lrde.epita.fr>
128
+
129
+ Litte RegexPath clean up.
130
+
131
+ * lib/regex_path.rb: Remove a group and a comma.
132
+
133
+ 2005-12-31 Nicolas Pouillard <ertai@lrde.epita.fr>
134
+
135
+ Update and enhance RandomGenerators.
136
+
137
+ * lib/ruby_ex.rb: Controllers prefix is now useless.
138
+ * lib/random_generators/ruby.rb: Clean up.
139
+ * lib/random_generators.rb: Silence warnings of active_support, setup
140
+ the default RandomGenerator simply, and add a test.
141
+ * lib/choose.rb: The require is useless (and may cause a double load).
142
+
143
+ 2005-12-31 Nicolas Pouillard <ertai@lrde.epita.fr>
144
+
145
+ A::SimulatedAnnealing: Some improvments.
146
+
147
+ * lib/algorithms/simulated_annealing.rb: Add iteration_max to limit the
148
+ number of iterations, add argmin to keep track of the best solution
149
+ (the support need to respond to copy_of_the_current_solution), and fix
150
+ a typo.
151
+ * test/algorithms/simulated_annealing_test.rb: Update accordignly.
152
+
153
+ 2005-12-06 Nicolas Pouillard <ertai@lrde.epita.fr>
154
+
155
+ Some stuffs.
156
+
157
+ * lib/uri_ex.rb: Add to_uri, and self.yaml_load.
158
+ * lib/uri/ssh.rb: First draft for jump_and_eval.
159
+ * lib/random_generators/ruby.rb,
160
+ * lib/ruby_ex.rb: Protect against double loading.
161
+ * SPEC.yml: Uttk Renaming.
162
+ * lib/commands.rb: Not yet finished.
163
+
164
+ 2005-12-06 Nicolas Pouillard <ertai@lrde.epita.fr>
165
+
166
+ Add Commands::Runners::{Popen,Pipe}.
167
+
168
+ * lib/commands/datas/pipe.rb: New.
169
+ * lib/commands/runners/popen.rb: New.
170
+ * lib/commands/command.rb,
171
+ * lib/commands/helpers.rb,
172
+ * lib/commands/datas/composite.rb,
173
+ * lib/commands/datas/temp.rb,
174
+ * lib/commands/datas/factory.rb: Update.
175
+
176
+ 2005-12-06 Nicolas Pouillard <ertai@lrde.epita.fr>
177
+
178
+ Improve the sendmail.rb options handling.
179
+
180
+ * lib/sendmail.rb: Update.
181
+
182
+ 2005-11-03 Nicolas Despr�s <nicolas.despres@gmail.com>
183
+
184
+ Makes DTime more arithmeticable.
185
+
186
+ * core_ex/lib/d_time.rb: Handles regular arithmetics operators.
187
+
188
+ 2005-11-03 Nicolas Despr�s <nicolas.despres@gmail.com>
189
+
190
+ Make DTime comparable.
191
+
192
+ * core_ex/lib/d_time.rb: Makes DTime a comparable class of objet.
193
+
194
+ 2005-11-03 Nicolas Despr�s <nicolas.despres@gmail.com>
195
+
196
+ Less error-prone test.
197
+
198
+ * core_ex/lib/d_time.rb: Make sure it works on every machine.
199
+
200
+ 2005-11-02 Nicolas Despr�s <nicolas.despres@gmail.com>
201
+
202
+ Remove dummy code.
203
+
204
+ * core_ex/lib/d_time.rb: Remove method_missing handle which only call
205
+ send on the only attribute of the class.
206
+
207
+ 2005-10-29 Nicolas Pouillard <ertai@lrde.epita.fr>
208
+
209
+ Add argmin.
210
+
211
+ * lib/algorithms/simulated_annealing.rb: This add a nice way to catch
212
+ the better argmin at any time.
213
+
214
+ 2005-10-29 Nicolas Pouillard <ertai@lrde.epita.fr>
215
+
216
+ Generalize the header system.
217
+
218
+ * lib/sendmail.rb: All headers given as argument are now merged.
219
+ Fields like To, From, Subject, etc. are now picked from the header
220
+ table. This allow a more customizable mail generation.
221
+
222
+ 2005-10-27 Nicolas Pouillard <ertai@lrde.epita.fr>
223
+
224
+ * lib/sym_tbl_gsub.rb: Update.
225
+
226
+ 2005-10-26 Nicolas Pouillard <ertai@lrde.epita.fr>
227
+
228
+ * lib/sym_tbl.rb: You can now but trigger block in the symtbl, when
229
+ corresponding key will be access it will class the trigger.
230
+
231
+ 2005-10-11 Nicolas Pouillard <ertai@lrde.epita.fr>
232
+
233
+ Adapt the unit suite to uttk-unit.
234
+
235
+ * test/unit-suite.yml: Update.
236
+
237
+ 2005-10-11 Nicolas Pouillard <ertai@lrde.epita.fr>
238
+
239
+ Change options for rsync.
240
+
241
+ * lib/uri/rsync.rb: Use -v not -P.
242
+
243
+ 2005-10-11 Nicolas Pouillard <ertai@lrde.epita.fr>
244
+
245
+ Commands: Shellwords and user friendly options.
246
+
247
+ * lib/commands/helpers.rb: Use the Shellwords module to split a string.
248
+ * lib/commands/command.rb: Make options more user friendly.
249
+ * lib/commands/runners/fork.rb: Move the FailureHooker ...
250
+ * lib/commands/runners/runner.rb: ... here.
251
+ * lib/uri/svn.rb: Fix a bug on to_s with svn.file scheme.
252
+
253
+ 2005-10-10 Nicolas Pouillard <ertai@lrde.epita.fr>
254
+
255
+ More imports.
256
+
257
+ * lib/commands.rb, lib/kill_all.rb: Use import.
258
+
259
+ 2005-10-10 Nicolas Pouillard <ertai@lrde.epita.fr>
260
+
261
+ Add fingerprint and clean up URIs.
262
+
263
+ * lib/uri/ssh.rb,
264
+ * lib/uri/rsync.rb,
265
+ * lib/uri/mysql.rb,
266
+ * lib/uri/pgsql.rb: Less class constants, more cattr_reader.
267
+ Remove the useless build singleton method.
268
+
269
+ * lib/uri/file.rb: Likewise and add fingerprint.
270
+ * lib/uri/svn.rb: Likewise, add fingerprint, and remove the useless
271
+ scheme handling.
272
+ * lib/uri_ex.rb: Use a simple class accessor for runner.
273
+
274
+ 2005-10-10 Nicolas Pouillard <ertai@lrde.epita.fr>
275
+
276
+ Add options to running methods of C::Commands.
277
+
278
+ * lib/commands/command.rb: Add run_with_options and adapt system, fork,
279
+ popen, sys, exec, and run.
280
+ * lib/commands/pipe.rb: Adapt run.
281
+ * lib/commands/helpers.rb: Leave a fixme.
282
+
283
+ * lib/commands/factory.rb, lib/commands/seq.rb,
284
+ * lib/commands/datas/composite.rb, lib/commands/datas/data.rb,
285
+ * lib/commands/runners/mockable.rb, lib/commands/runners/no_run.rb,
286
+ * lib/commands/runners/fork.rb, lib/commands/runners/exec.rb,
287
+ * lib/commands/runners/system.rb, lib/commands/runners/runner.rb,
288
+ * lib/commands/runners.rb: Prefer import! instead of require.
289
+
290
+ 2005-10-10 Nicolas Pouillard <ertai@lrde.epita.fr>
291
+
292
+ URI::Svn#save now makes smaller files.
293
+
294
+ * lib/uri/svn.rb: Add the --deltas option to svnadmin dump.
295
+
296
+ 2005-10-09 Nicolas Pouillard <ertai@lrde.epita.fr>
297
+
298
+ Add a runner which do not run the command.
299
+
300
+ * lib/commands/runners/no_run.rb: New. This trivial runner can be
301
+ useful to catch the command that will be ran, and run it with after
302
+ with some modifications.
303
+ * lib/commands/datas/data.rb: Fix to_yaml.
304
+
305
+ 2005-10-09 Nicolas Pouillard <ertai@lrde.epita.fr>
306
+
307
+ Add tests for URI::Rsync.
308
+
309
+ * lib/uri/rsync.rb: Check the option generation.
310
+
311
+ * lib/uri/ssh.rb, lib/uri/file.rb, lib/uri/druby.rb,
312
+ * lib/uri/ftp_ex.rb, lib/uri/mysql.rb, lib/uri/pgsql.rb,
313
+ * lib/uri/svn.rb, lib/uri/http_ex.rb: Imports instead of requires.
314
+
315
+ 2005-10-09 Nicolas Pouillard <ertai@lrde.epita.fr>
316
+
317
+ Add URI::Rsync and fix some others URI::*.
318
+
319
+ * lib/uri_ex.rb: Use URI.decode in mk_custom_opts.
320
+ * lib/uri/rsync.rb: New. Just supports rsync.ssh.
321
+ * lib/uri/ssh.rb, lib/uri/file.rb, lib/uri/mysql.rb, lib/uri/pgsql.rb,
322
+ lib/uri/svn.rb: Fix returned values of checkout and save.
323
+ * lib/commands/datas/data.rb: Suppress errors in to_yaml_string.
324
+
1
325
  2005-10-03 Nicolas Pouillard <ertai@lrde.epita.fr>
2
326
 
3
327
  Fix the SPEC.dyn.yml.
data/NEWS CHANGED
@@ -1,3 +1,20 @@
1
+ = New in 0.4, 2006-02-24:
2
+
3
+ This release makes RubyEx compatible with ruby 1.8.4!
4
+
5
+ Backward compatibility with older version of Ruby is no longer maintained.
6
+
7
+ * RPath:
8
+ Introduced in the previous release. Now supports negative regular
9
+ expression.
10
+
11
+ * Command:
12
+ - The pipe support is reloaded.
13
+ - Introduction of the NoRun and the Popen runners.
14
+
15
+ * Uri extension:
16
+ Add support for the "rsync" uri.
17
+
1
18
  = New in 0.3, 2005-10-03:
2
19
 
3
20
  This release make RubyEx compatible with ruby 1.8.3!
data/README CHANGED
@@ -1 +1 @@
1
- Coming Soon.
1
+ Coming Soon. We hope...
data/SPEC.yml CHANGED
@@ -1,22 +1,22 @@
1
1
  ---
2
- Author: The TTK Team.
2
+ Author: The Uttk Team.
3
3
  License: Ruby License
4
- Revision: '$Id$'
4
+ Revision: '$Id: /w/fey/ruby_ex/trunk/SPEC.yml 22231 2006-02-24T14:25:44.907003Z pouillar $'
5
5
 
6
- name: ruby_ex
6
+ version: !feydakins.org,2006/version dev-ruby/ruby_ex-0.4_alpha2
7
7
 
8
8
  title: RubyEx -- General purpose Ruby extensions.
9
9
  summary: RubyEx contains general purpose Ruby extensions.
10
10
  description: ""
11
11
  homepage: http://api.feydakins.org/ruby_ex
12
+
13
+ user: ertai
12
14
  rubyforge_project: ttk
13
15
  rubyforge_sub_package_name: ruby_ex
14
-
15
16
  root_test_suite: test/check-pkg-ruby_ex.yml
16
17
  rdoc_dir: doc/html
17
18
  tags_url: svn://svn.feydakins.org/ruby_ex/tags
18
-
19
- commit_command: rxci
19
+ trunk_url: svn://svn.feydakins.org/ruby_ex/trunk
20
20
 
21
21
  rdoc_files: !filelist
22
22
  - README
@@ -31,9 +31,9 @@ pkg_files: !filelist
31
31
 
32
32
  dependencies:
33
33
  core_ex:
34
- gem: ~> 0.4.0
35
- tarball: 6312/core_ex-0.4.0.tar.gz
34
+ gem: ~> 0.5.1
35
+ tarball: 8818/core_ex-0.5_alpha1.tar.gz
36
36
  vcs: svn://svn.feydakins.org/ruby_ex/trunk/core_ex
37
37
  highline: [~> 1.0.1, 5143/highline-1.0.1.tgz]
38
38
 
39
- ttk_version: ~> 0.3.0
39
+ uttk_version: ~> 0.3.1
data/lib/abstract.rb CHANGED
@@ -2,16 +2,13 @@
2
2
  # Author: Nicolas Despres <polrop@lrde.epita.fr>.
3
3
  # License: Gnu General Public License.
4
4
 
5
- # $LastChangedBy: ertai $
6
- # $Id: abstract.rb 343 2005-09-08 01:32:57Z ertai $
5
+ # $LastChangedBy: pouillar $
6
+ # $Id: /w/fey/ruby_ex/trunk/lib/abstract.rb 21950 2006-02-19T19:23:50.312174Z pouillar $
7
7
 
8
8
 
9
9
  #FIXME: find a way to be thread safe.
10
10
 
11
- InstanceMethodVisibility.import!
12
-
13
-
14
- module Concrete; end
11
+ Module::InstanceMethodVisibility.import!
15
12
 
16
13
 
17
14
  # When this module is included into a class, this class can't be instantiate
@@ -43,44 +40,12 @@ module Abstract
43
40
  end # module Abstract
44
41
 
45
42
 
46
- # Include this module in an abstract class to make it concrete and so, to be
47
- # able to instantiate it again. This module can be included if and only if the
48
- # Abstract module has been included before in one of the class' superclass.
49
- module Concrete
50
-
51
- def self.included(klass)
52
- super
53
- unless klass.include?(Abstract)
54
- raise(TypeError, "#{klass} - not an abstract class")
55
- end
56
- klass.module_eval do
57
- class << self
58
- visibility = instance_method_visibility('new')
59
- def new(*args, &block)
60
- concrete_new(*args, &block)
61
- end
62
- send(visibility, :new)
63
- end
64
-
65
- def is_a?(klass)
66
- klass == Abstract ? false : super(klass)
67
- end
68
- end
69
- end
70
-
71
- end # module Concrete
72
-
73
-
74
43
  class Class
75
44
 
76
45
  def abstract
77
46
  include Abstract
78
47
  end
79
48
 
80
- def concrete
81
- include Concrete
82
- end
83
-
84
49
  def abstract?
85
50
  include?(Abstract) ? (not include?(Concrete)) : false;
86
51
  end
data/lib/abstract_node.rb CHANGED
@@ -2,12 +2,10 @@
2
2
  # Author: Nicolas Despres <polrop@lrde.epita.fr>.
3
3
  # License: Gnu General Public License.
4
4
 
5
- # $LastChangedBy: ertai $
6
- # $Id: abstract_node.rb 339 2005-09-06 23:27:27Z ertai $
5
+ # $LastChangedBy: pouillar $
6
+ # $Id: /w/fey/ruby_ex/trunk/lib/abstract_node.rb 21865 2006-02-18T17:13:28.680350Z pouillar $
7
7
 
8
8
 
9
- require 'abstract'
10
-
11
9
  class AbstractNode
12
10
  include Abstract
13
11
 
@@ -9,13 +9,20 @@ module Algorithms
9
9
 
10
10
  class SimulatedAnnealing
11
11
 
12
+ attr_reader :support, :global_threshold, :step_multiplicator,
13
+ :initial_temperature, :initial_cost, :output,
14
+ :iteration_modulus, :step_modulus, :generator,
15
+ :diff_cost, :iteration, :probability_threshold,
16
+ :argmin, :iteration_max
17
+ alias_method :best, :argmin
18
+
12
19
  # Example:
13
20
  #
14
21
  # obj = MySimulatedAnnealingObject.new
15
22
  #
16
23
  # SimulatedAnnealing.new(
17
24
  # :support => obj,
18
- # :global_thresold => 200,
25
+ # :global_threshold => 200,
19
26
  # :step_multiplicator => 0.63,
20
27
  # :initial_temperature => 10,
21
28
  # :initial_cost => obj.cost,
@@ -25,7 +32,8 @@ module Algorithms
25
32
  #
26
33
  def initialize ( opts )
27
34
  @support = opts[:support]
28
- @global_thresold = opts[:global_thresold]
35
+ @global_threshold = opts[:global_threshold] ||
36
+ opts[:global_thresold] # :) backward compatibility
29
37
  @step_multiplicator = opts[:step_multiplicator]
30
38
  @temperature = opts[:initial_temperature]
31
39
  @cur_cost = opts[:initial_cost]
@@ -33,10 +41,13 @@ module Algorithms
33
41
  @iteration_modulus = opts[:iteration_modulus] || 1
34
42
  @step_modulus = opts[:step_modulus] || 1
35
43
  @generator = opts[:generator]
44
+ @iteration_max = opts[:iteration_max] || (1.0 / 0.0) # Infinity
36
45
  @progression = ' '
37
46
  @diff_cost = 0
38
47
  @iteration = 0
39
48
  @probability_threshold = 0
49
+ @argmin = @support.copy_of_the_current_solution
50
+ @min = @cur_cost
40
51
  end
41
52
 
42
53
  @@zeros = [0.0] * 8
@@ -50,7 +61,7 @@ module Algorithms
50
61
  def run
51
62
  reset
52
63
  @output.puts '---'
53
- while @cur_cost > @global_thresold
64
+ while @cur_cost > @global_threshold and @iteration < @iteration_max
54
65
  # puts "Iteration(#{it}) #{@cur_cost}"
55
66
  @transition = @support.choose_transition(@generator)
56
67
  @diff_cost = @support.transition_cost(@cur_cost, @transition)
@@ -89,6 +100,10 @@ module Algorithms
89
100
 
90
101
  @support.apply_transition(@transition)
91
102
  @cur_cost += @diff_cost
103
+ if @cur_cost < @min
104
+ @min = @cur_cost
105
+ @argmin = @support.copy_of_the_current_solution
106
+ end
92
107
  end
93
108
  end
94
109
 
@@ -152,6 +167,14 @@ module Algorithms
152
167
  raise NotImplementedError
153
168
  end
154
169
 
170
+ #
171
+ # This method should return the copy of the current solution
172
+ # it will be called to save the best solution (argmin).
173
+ #
174
+ def copy_of_the_current_solution
175
+ raise NotImplementedError
176
+ end
177
+
155
178
  end
156
179
 
157
180
  end
@@ -1,7 +1,7 @@
1
1
  # Copyright:: Copyright (c) 2004, 2005 Nicolas Pouillard. All rights reserved.
2
2
  # Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
3
3
  # License:: Gnu General Public License.
4
- # Revision:: $Id: attributed_class.rb 339 2005-09-06 23:27:27Z ertai $
4
+ # Revision:: $Id: /w/fey/ruby_ex/trunk/lib/attributed_class.rb 21867 2006-02-18T17:17:48.984880Z pouillar $
5
5
 
6
6
 
7
7
 
@@ -12,7 +12,7 @@ module AttributedClass
12
12
  class Attribute
13
13
 
14
14
  attr_reader :name, :descr, :klass, :default_proc
15
- attr_accessor :default
15
+ attr_accessor :default, :mandatory
16
16
 
17
17
  @@default_proc = nil
18
18
 
data/lib/auto_object.rb CHANGED
@@ -1,10 +1,7 @@
1
1
  # Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
2
2
  # Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
3
3
  # License:: Gnu General Public License.
4
- # Revision:: $Id: auto_object.rb 339 2005-09-06 23:27:27Z ertai $
5
-
6
- require 'blank_slate'
7
- require 'verbose_object'
4
+ # Revision:: $Id: /w/fey/ruby_ex/trunk/lib/auto_object.rb 21865 2006-02-18T17:13:28.680350Z pouillar $
8
5
 
9
6
  class AutoObject
10
7
 
@@ -59,7 +56,6 @@ end # class Object
59
56
 
60
57
 
61
58
  test_section __FILE__ do
62
- require 'mocks'
63
59
  class TestAutoObject < ::Test::Unit::TestCase
64
60
  include Mocks::Assertions
65
61
 
@@ -99,4 +95,4 @@ test_section __FILE__ do
99
95
  end
100
96
 
101
97
  end # class TestAutoObject
102
- end
98
+ end
data/lib/blank_slate.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
2
2
  # Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
3
3
  # License:: Gnu General Public License.
4
- # Revision:: $Id: blank_slate.rb 339 2005-09-06 23:27:27Z ertai $
4
+ # Revision:: $Id: /w/fey/ruby_ex/trunk/lib/blank_slate.rb 7944 2005-09-06T23:27:27.929371Z ertai $
5
5
 
6
6
 
7
7
  # This module is inspired from BlankSlate of Jim Weirich.
data/lib/cache.rb CHANGED
@@ -2,8 +2,8 @@
2
2
  # Author: Nicolas Despres <polrop@lrde.epita.fr>.
3
3
  # License: Gnu General Public License.
4
4
 
5
- # $LastChangedBy: ertai $
6
- # $Id: cache.rb 376 2005-09-29 21:46:32Z ertai $
5
+ # $LastChangedBy: pouillar $
6
+ # $Id: /w/fey/ruby_ex/trunk/lib/cache.rb 21870 2006-02-19T00:35:27.708127Z pouillar $
7
7
 
8
8
 
9
9
  require 'md5sum'
@@ -208,7 +208,7 @@ class CacheTest < Test::Unit::TestCase
208
208
  assert(f.eof?)
209
209
  end
210
210
  assert_equal(tmp_p, p1)
211
- check_atime(cache)
211
+ # FIXME check_atime(cache)
212
212
  assert_equal(1, cache.nb_files, 'bad nb_files')
213
213
  assert(cache.present?(p1))
214
214
  assert_equal(p1, cache[0])
@@ -245,7 +245,7 @@ class CacheTest < Test::Unit::TestCase
245
245
  assert_equal(p2, cache[0], 'p2 first')
246
246
  assert_equal(p3, cache[1], 'p3 second')
247
247
  assert_equal(p1, cache[2], 'p1 third')
248
- check_atime(cache)
248
+ # FIXME check_atime(cache)
249
249
  assert_equal(3, cache.nb_files, 'bad nb_files')
250
250
 
251
251
 
data/lib/choose.rb CHANGED
@@ -1,11 +1,10 @@
1
1
  # Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
2
2
  # Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
3
3
  # License:: GNU General Public License (GPL).
4
- # Revision:: $Id: choose.rb 339 2005-09-06 23:27:27Z ertai $
5
-
6
-
7
- require 'random_generators'
4
+ # Revision:: $Id: /w/fey/ruby_ex/trunk/lib/choose.rb 21865 2006-02-18T17:13:28.680350Z pouillar $
8
5
 
6
+ module Choose
7
+ end # module Choose
9
8
 
10
9
  class Integer
11
10
 
@@ -118,7 +117,6 @@ module Choose
118
117
  end # class RandomMockRandomGenerator
119
118
 
120
119
 
121
- require 'test/unit'
122
120
  require 'set'
123
121
 
124
122
  class ChooseTest < Test::Unit::TestCase