ruby_ex 0.3.0 → 0.4.1.2
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/ChangeLog +324 -0
- data/NEWS +17 -0
- data/README +1 -1
- data/SPEC.yml +9 -9
- data/lib/abstract.rb +3 -38
- data/lib/abstract_node.rb +2 -4
- data/lib/algorithms/simulated_annealing.rb +26 -3
- data/lib/attributed_class.rb +2 -2
- data/lib/auto_object.rb +2 -6
- data/lib/blank_slate.rb +1 -1
- data/lib/cache.rb +4 -4
- data/lib/choose.rb +3 -5
- data/lib/commands/command.rb +53 -27
- data/lib/commands/datas/composite.rb +2 -4
- data/lib/commands/datas/data.rb +13 -16
- data/lib/commands/datas/factory.rb +2 -4
- data/lib/commands/datas/pipe.rb +52 -0
- data/lib/commands/datas/temp.rb +2 -2
- data/lib/commands/datas.rb +1 -6
- data/lib/commands/factory.rb +1 -3
- data/lib/commands/helpers.rb +6 -11
- data/lib/commands/pipe.rb +4 -6
- data/lib/commands/runners/exec.rb +2 -6
- data/lib/commands/runners/fork.rb +3 -20
- data/lib/commands/runners/mockable.rb +4 -7
- data/lib/commands/runners/no_run.rb +44 -0
- data/lib/commands/runners/popen.rb +49 -0
- data/lib/commands/runners/runner.rb +29 -6
- data/lib/commands/runners/system.rb +1 -4
- data/lib/commands/runners.rb +1 -6
- data/lib/commands/seq.rb +1 -3
- data/lib/commands.rb +3 -13
- data/lib/concrete.rb +38 -0
- data/lib/config_file.rb +2 -3
- data/lib/const_regexp.rb +1 -1
- data/lib/d_logger.rb +1 -1
- data/lib/daemon.rb +2 -3
- data/lib/diff.rb +1 -1
- data/lib/diff_tools.rb +1 -3
- data/lib/drb/drb_observable.rb +1 -1
- data/lib/drb/drb_observable_pool.rb +1 -1
- data/lib/drb/drb_service.rb +1 -1
- data/lib/drb/drb_undumped_attributes.rb +1 -1
- data/lib/drb/drb_undumped_indexed_object.rb +1 -1
- data/lib/drb/insecure_protected_methods.rb +1 -1
- data/lib/drb_ex.rb +1 -1
- data/lib/file_type.rb +2 -2
- data/lib/generate_id.rb +1 -1
- data/lib/genpasswd.rb +1 -1
- data/lib/hash_eval.rb +1 -1
- data/lib/histogram.rb +1 -1
- data/lib/hookable.rb +1 -4
- data/lib/hooker.rb +1 -1
- data/lib/html_encode.rb +1 -1
- data/lib/indexed_node.rb +0 -3
- data/lib/io_marshal.rb +1 -1
- data/lib/ioo.rb +1 -1
- data/lib/kill_all.rb +2 -2
- data/lib/labeled_node.rb +0 -3
- data/lib/logger_observer.rb +1 -1
- data/lib/md5sum.rb +1 -1
- data/lib/meta_factory.rb +1 -1
- data/lib/method_call.rb +1 -1
- data/lib/mocks/assertions.rb +1 -1
- data/lib/mocks/method_logger.rb +1 -3
- data/lib/mocks/mock.rb +2 -4
- data/lib/mocks/object.rb +1 -4
- data/lib/mocks/observer.rb +1 -3
- data/lib/mocks.rb +1 -6
- data/lib/module/autoload_tree.rb +1 -1
- data/lib/module/hierarchy.rb +1 -1
- data/lib/module/instance_method_visibility.rb +17 -16
- data/lib/object_monitor.rb +1 -1
- data/lib/object_monitor_activity.rb +1 -1
- data/lib/observable.rb +1 -1
- data/lib/observable_pool.rb +1 -1
- data/lib/ordered_hash.rb +1 -1
- data/lib/r_path.rb +44 -23
- data/lib/random_generators/random_generator.rb +1 -1
- data/lib/random_generators/ruby.rb +1 -5
- data/lib/random_generators.rb +20 -5
- data/lib/regex_list.rb +2 -5
- data/lib/regex_path.rb +64 -23
- data/lib/ruby_ex.rb +11 -2
- data/lib/safe_eval.rb +6 -15
- data/lib/sendmail.rb +41 -17
- data/lib/service_manager.rb +1 -1
- data/lib/shuffle.rb +3 -1
- data/lib/spring.rb +1 -1
- data/lib/spring_set.rb +1 -1
- data/lib/sym_tbl.rb +14 -8
- data/lib/sym_tbl_gsub.rb +88 -23
- data/lib/text.rb +1 -1
- data/lib/timeout_ex.rb +1 -1
- data/lib/trace.rb +1 -1
- data/lib/uri/druby.rb +3 -6
- data/lib/uri/file.rb +32 -18
- data/lib/uri/ftp_ex.rb +8 -3
- data/lib/uri/generic_ex.rb +158 -0
- data/lib/uri/http_ex.rb +9 -4
- data/lib/uri/mysql.rb +7 -15
- data/lib/uri/pgsql.rb +6 -14
- data/lib/uri/rsync.rb +77 -0
- data/lib/uri/ssh.rb +55 -27
- data/lib/uri/svn.rb +22 -76
- data/lib/verbose_object.rb +1 -5
- data/lib/yaml/transform.rb +1 -1
- data/lib/yaml/yregexpath.rb +1 -1
- data/test/algorithms/simulated_annealing_test.rb +79 -80
- data/test/unit-suite.yml +5 -3
- metadata +179 -172
- data/SPEC.dyn.yml +0 -10
- data/SPEC.gemspec +0 -14
- data/lib/uri_ex.rb +0 -110
- data/test/test-unit-setup.rb +0 -10
data/lib/sendmail.rb
CHANGED
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
# License:: GNU General Public License (GPL).
|
|
5
5
|
# Revision:: $Id: header 98 2004-09-29 12:07:43Z ertai $
|
|
6
6
|
|
|
7
|
-
require 'pathname'
|
|
8
7
|
require 'ostruct'
|
|
9
8
|
require 'optparse'
|
|
10
9
|
Yaml::ChopHeader.import!
|
|
@@ -15,12 +14,9 @@ class Sendmail
|
|
|
15
14
|
MAIL_FILE = Pathname.new(',mail')
|
|
16
15
|
|
|
17
16
|
def parse_mail_options ( *args )
|
|
18
|
-
email = (defined? EMAIL)? EMAIL : ENV['EMAIL']
|
|
19
|
-
full_name = (defined? FULLNAME)? FULLNAME : ENV['FULLNAME']
|
|
20
|
-
full_email = (defined? FULL_EMAIL)? FULL_EMAIL : "#{full_name} <#{email}>"
|
|
21
17
|
options = OpenStruct.new(
|
|
22
|
-
:
|
|
23
|
-
:
|
|
18
|
+
:from => (defined? EMAIL)? EMAIL : ENV['EMAIL'],
|
|
19
|
+
:from_name => (defined? FULLNAME)? FULLNAME : ENV['FULLNAME'],
|
|
24
20
|
:to => [],
|
|
25
21
|
:server => ENV['SMTPSERVER'] || 'localhost:25',
|
|
26
22
|
:header => {},
|
|
@@ -29,8 +25,21 @@ class Sendmail
|
|
|
29
25
|
string_args, hash_args = args.partition { |x| x.is_a?(String) }
|
|
30
26
|
hash_args.each do |hash|
|
|
31
27
|
raise ArgumentError, "Bad argument #{hash}" unless hash.is_a?(Hash)
|
|
28
|
+
if hash[:header].is_a? String
|
|
29
|
+
options.header.merge! YAML.load(hash[:header]).symbolize_keys
|
|
30
|
+
hash.delete :header
|
|
31
|
+
end
|
|
32
|
+
if hash[:subject]
|
|
33
|
+
options.header[:Subject] = hash[:subject]
|
|
34
|
+
hash.delete :subject
|
|
35
|
+
end
|
|
32
36
|
hash.each do |k,v|
|
|
33
|
-
|
|
37
|
+
x = options.send(k)
|
|
38
|
+
case x
|
|
39
|
+
when Hash then v.each { |kk, vv| x[kk.to_sym] = vv }
|
|
40
|
+
when Array then x.concat v
|
|
41
|
+
else options.send("#{k}=", v)
|
|
42
|
+
end
|
|
34
43
|
end
|
|
35
44
|
end
|
|
36
45
|
OptionParser.new do |opts|
|
|
@@ -38,6 +47,9 @@ class Sendmail
|
|
|
38
47
|
opts.on('-b', '--body FILE', 'Choose a file for the mail body') do |aFile|
|
|
39
48
|
options.body = File.open(aFile)
|
|
40
49
|
end
|
|
50
|
+
opts.on('-f', '--mail-from NAME <EMAIL>', 'Choose the From address') do |aString|
|
|
51
|
+
options.from = aString
|
|
52
|
+
end
|
|
41
53
|
opts.on('-t', '--mail-to NAME', 'Choose a recipient') do |aString|
|
|
42
54
|
options.to << aString
|
|
43
55
|
end
|
|
@@ -46,7 +58,7 @@ class Sendmail
|
|
|
46
58
|
options.port ||= 25
|
|
47
59
|
end
|
|
48
60
|
opts.on('-S', '--subject NAME', 'Choose your mail subject') do |aString|
|
|
49
|
-
options.
|
|
61
|
+
options.header[:Subject] = aString.sub(/\.?$/, '.')
|
|
50
62
|
end
|
|
51
63
|
opts.on('--[no-]sign', 'Sign the message with gpg') do |signed|
|
|
52
64
|
options.signed = signed
|
|
@@ -61,7 +73,7 @@ class Sendmail
|
|
|
61
73
|
options.comment = aComment
|
|
62
74
|
end
|
|
63
75
|
opts.on('--header STRING', 'Add some header fields (Yaml syntax)') do |s|
|
|
64
|
-
options.header
|
|
76
|
+
options.header.merge! YAML.load(s)
|
|
65
77
|
end
|
|
66
78
|
opts.on('-m', '--[no-]mime', 'Choose the mime protocole') do |mime|
|
|
67
79
|
options.mime = mime
|
|
@@ -71,6 +83,15 @@ class Sendmail
|
|
|
71
83
|
exit
|
|
72
84
|
end
|
|
73
85
|
end.parse!(string_args)
|
|
86
|
+
options.header[:To] ||= options.to.join ', '
|
|
87
|
+
from = options.header[:From] || options.from
|
|
88
|
+
if from.to_s =~ /<(.*)>/
|
|
89
|
+
options.header[:From] = from
|
|
90
|
+
options.from = $1
|
|
91
|
+
else
|
|
92
|
+
options.header[:From] = "#{options.from_name} <#{from}>"
|
|
93
|
+
options.from = from
|
|
94
|
+
end
|
|
74
95
|
check_mail_options(options)
|
|
75
96
|
options
|
|
76
97
|
end
|
|
@@ -79,7 +100,7 @@ class Sendmail
|
|
|
79
100
|
def check_mail_options ( options )
|
|
80
101
|
raise ArgumentError, 'No recipents' if options.to.empty?
|
|
81
102
|
raise ArgumentError, 'No mail server' if options.server.nil?
|
|
82
|
-
raise ArgumentError, 'No mail subject' if options.
|
|
103
|
+
raise ArgumentError, 'No mail subject' if options.header[:Subject].nil?
|
|
83
104
|
end
|
|
84
105
|
|
|
85
106
|
#
|
|
@@ -98,6 +119,7 @@ class Sendmail
|
|
|
98
119
|
opts = parse_mail_options(*args)
|
|
99
120
|
body = (opts.body.nil?)? '' : opts.body.read
|
|
100
121
|
end
|
|
122
|
+
opts.header.symbolize_keys!
|
|
101
123
|
server, port = opts.server.split(/:/)
|
|
102
124
|
port ||= 25
|
|
103
125
|
STDERR.puts "Smtp Server: #{server}"
|
|
@@ -108,9 +130,9 @@ class Sendmail
|
|
|
108
130
|
if opts.confirm
|
|
109
131
|
raise 'HighLine is unavailable' unless defined? HighLine
|
|
110
132
|
question = %Q[
|
|
111
|
-
|Send a mail, with this subject: #{opts.
|
|
112
|
-
| to #{opts.
|
|
113
|
-
| from #{opts.
|
|
133
|
+
|Send a mail, with this subject: #{opts.header[:Subject]}
|
|
134
|
+
| to #{opts.header[:To]}
|
|
135
|
+
| from #{opts.header[:From]}
|
|
114
136
|
| #{(opts.signed)? 'signed by ' + opts.from : 'not signed !'}
|
|
115
137
|
|Are you sure? (y/n)].head_cut!
|
|
116
138
|
raise 'Aborting' unless HighLine.new.agree question, true
|
|
@@ -119,11 +141,13 @@ class Sendmail
|
|
|
119
141
|
require 'net/smtp'
|
|
120
142
|
Net::SMTP.start(server, port) do |smtp|
|
|
121
143
|
smtp.open_message_stream(opts.from, opts.to) do |f|
|
|
122
|
-
f.print
|
|
123
|
-
|
|
124
|
-
|
|
144
|
+
f.print "From: #{opts.header[:From]}\n"
|
|
145
|
+
f.print "To: #{opts.header[:To]}\n"
|
|
146
|
+
f.print "Subject: #{opts.header[:Subject]}\n"
|
|
125
147
|
opts.header.each do |k, v|
|
|
126
|
-
|
|
148
|
+
next if [:From, :To, :Subject].include? k
|
|
149
|
+
k = $1 if k.to_s =~ /^"(.*)"$/
|
|
150
|
+
f.print "#{k}: #{v}\n"
|
|
127
151
|
end
|
|
128
152
|
if opts.signed
|
|
129
153
|
TempPath.new do |mail_body|
|
data/lib/service_manager.rb
CHANGED
data/lib/shuffle.rb
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
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: shuffle.rb
|
|
4
|
+
# Revision:: $Id: /w/fey/ruby_ex/trunk/lib/shuffle.rb 21865 2006-02-18T17:13:28.680350Z pouillar $
|
|
5
|
+
|
|
6
|
+
Choose.import!
|
|
5
7
|
|
|
6
8
|
module Shuffle
|
|
7
9
|
|
data/lib/spring.rb
CHANGED
data/lib/spring_set.rb
CHANGED
data/lib/sym_tbl.rb
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# License: Ruby license.
|
|
4
4
|
|
|
5
5
|
# $LastChangedBy: ertai $
|
|
6
|
-
# $Id: sym_tbl.rb
|
|
6
|
+
# $Id: /w/fey/ruby_ex/trunk/lib/sym_tbl.rb 8016 2005-10-26T18:58:00.073495Z ertai $
|
|
7
7
|
|
|
8
8
|
require 'set'
|
|
9
9
|
|
|
@@ -31,13 +31,16 @@ class SymTbl
|
|
|
31
31
|
def [] ( aKey )
|
|
32
32
|
return nil if aKey == ''
|
|
33
33
|
aKey = key_convert(aKey)
|
|
34
|
-
|
|
35
|
-
@local
|
|
36
|
-
|
|
37
|
-
@
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
result =
|
|
35
|
+
if @local.has_key? aKey
|
|
36
|
+
@local[aKey]
|
|
37
|
+
elsif @father.nil?
|
|
38
|
+
@local.default
|
|
39
|
+
else
|
|
40
|
+
@father[aKey]
|
|
41
|
+
end
|
|
42
|
+
result = result[] if result.is_a? Trigger
|
|
43
|
+
result
|
|
41
44
|
end
|
|
42
45
|
|
|
43
46
|
def []= ( aKey, aValue )
|
|
@@ -110,6 +113,9 @@ class SymTbl
|
|
|
110
113
|
self.class.new(self)
|
|
111
114
|
end
|
|
112
115
|
|
|
116
|
+
class Trigger < Proc
|
|
117
|
+
end # class Trigger
|
|
118
|
+
|
|
113
119
|
end # class SymTbl
|
|
114
120
|
|
|
115
121
|
|
data/lib/sym_tbl_gsub.rb
CHANGED
|
@@ -1,21 +1,53 @@
|
|
|
1
1
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
|
2
2
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
|
3
3
|
# License:: Ruby License
|
|
4
|
-
# Revision:: $Id: sym_tbl_gsub.rb
|
|
4
|
+
# Revision:: $Id: /w/fey/ruby_ex/trunk/lib/sym_tbl_gsub.rb 21868 2006-02-18T18:09:17.837831Z pouillar $
|
|
5
|
+
|
|
6
|
+
module SymTblGsub
|
|
7
|
+
|
|
8
|
+
module Assertions
|
|
9
|
+
|
|
10
|
+
attr_accessor :symtbl
|
|
11
|
+
|
|
12
|
+
def assert_symtbl ( my, ref )
|
|
13
|
+
assert_equal ref, my.do_symtbl_gsub(symtbl)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def assert_symtbl_nil ( my )
|
|
17
|
+
assert_nil my.symtbl_gsub(symtbl)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end # module Assertions
|
|
21
|
+
|
|
22
|
+
end # module SymTblGsub
|
|
5
23
|
|
|
6
|
-
require 'sym_tbl'
|
|
7
24
|
|
|
8
25
|
class Object
|
|
9
26
|
|
|
27
|
+
def symtbl_gsub! ( symtbl )
|
|
28
|
+
nil
|
|
29
|
+
end
|
|
30
|
+
|
|
10
31
|
def symtbl_gsub ( symtbl )
|
|
11
32
|
nil
|
|
12
33
|
end
|
|
13
34
|
|
|
14
35
|
def do_symtbl_gsub ( symtbl )
|
|
36
|
+
unless symtbl.is_a? SymTbl
|
|
37
|
+
raise ArgumentError, "need a SymTbl not: #{symtbl.inspect}"
|
|
38
|
+
end
|
|
15
39
|
result = symtbl_gsub(symtbl)
|
|
16
40
|
return (result.nil?)? self : result
|
|
17
41
|
end
|
|
18
42
|
|
|
43
|
+
def do_symtbl_gsub! ( symtbl )
|
|
44
|
+
unless symtbl.is_a? SymTbl
|
|
45
|
+
raise ArgumentError, "need a SymTbl not: #{symtbl.inspect}"
|
|
46
|
+
end
|
|
47
|
+
result = symtbl_gsub!(symtbl)
|
|
48
|
+
return (result.nil?)? self : result
|
|
49
|
+
end
|
|
50
|
+
|
|
19
51
|
def symtbl_to_s
|
|
20
52
|
to_s
|
|
21
53
|
end
|
|
@@ -67,8 +99,7 @@ class Array
|
|
|
67
99
|
end # class Array
|
|
68
100
|
|
|
69
101
|
|
|
70
|
-
|
|
71
|
-
class SymTbl
|
|
102
|
+
SymTbl.class_eval do
|
|
72
103
|
|
|
73
104
|
def symtbl_gsub! ( symtbl )
|
|
74
105
|
new_local = @local.symtbl_gsub(symtbl)
|
|
@@ -87,9 +118,12 @@ end # class SymTbl
|
|
|
87
118
|
|
|
88
119
|
class Pathname
|
|
89
120
|
|
|
121
|
+
def symtbl_gsub! ( symtbl )
|
|
122
|
+
self unless @path.symtbl_gsub!(symtbl).nil?
|
|
123
|
+
end
|
|
124
|
+
|
|
90
125
|
def symtbl_gsub ( symtbl )
|
|
91
|
-
|
|
92
|
-
return self.class.new(res) unless res.nil?
|
|
126
|
+
dup.symtbl_gsub!(symtbl)
|
|
93
127
|
end
|
|
94
128
|
|
|
95
129
|
end # class Pathname
|
|
@@ -115,6 +149,10 @@ class Symbol
|
|
|
115
149
|
return res.to_sym unless res.nil?
|
|
116
150
|
end
|
|
117
151
|
|
|
152
|
+
def symtbl_gsub! ( symtbl )
|
|
153
|
+
raise TypeError, 'can\'t modify a symbol'
|
|
154
|
+
end
|
|
155
|
+
|
|
118
156
|
end # class Symbol
|
|
119
157
|
|
|
120
158
|
|
|
@@ -122,23 +160,31 @@ end # class Symbol
|
|
|
122
160
|
class String
|
|
123
161
|
|
|
124
162
|
def symtbl_gsub ( symtbl )
|
|
125
|
-
return nil unless self =~
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
163
|
+
return nil unless self =~ /<<.*>>/
|
|
164
|
+
dup.symtbl_gsub! symtbl
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
@@tag ||= "|#{rand.to_i}|"
|
|
168
|
+
|
|
169
|
+
def symtbl_gsub! ( symtbl )
|
|
170
|
+
have_changed = nil
|
|
171
|
+
while (
|
|
172
|
+
gsub!(/<<([^<>]*)>>/) do
|
|
130
173
|
s = symtbl[$1]
|
|
131
|
-
|
|
174
|
+
have_changed ||= s
|
|
175
|
+
(s.nil?)? "<#{@@tag}<#$1>#{@@tag}>" : s.symtbl_to_s
|
|
132
176
|
end
|
|
177
|
+
) do
|
|
133
178
|
end
|
|
134
|
-
|
|
179
|
+
gsub! @@tag, ''
|
|
180
|
+
return nil if have_changed.nil?
|
|
181
|
+
self
|
|
135
182
|
end
|
|
136
183
|
|
|
137
184
|
end # class String
|
|
138
185
|
|
|
139
186
|
|
|
140
|
-
PathList.
|
|
141
|
-
class PathList
|
|
187
|
+
PathList.class_eval do
|
|
142
188
|
attr_accessor :symtbl
|
|
143
189
|
|
|
144
190
|
alias_method :add_matching_without_expand, :add_matching
|
|
@@ -173,13 +219,33 @@ class PathList
|
|
|
173
219
|
end # class PathList
|
|
174
220
|
|
|
175
221
|
|
|
222
|
+
class File
|
|
223
|
+
|
|
224
|
+
def symtbl_gsub! ( symtbl )
|
|
225
|
+
contents = read
|
|
226
|
+
result = contents.symtbl_gsub! symtbl
|
|
227
|
+
if result
|
|
228
|
+
truncate 0
|
|
229
|
+
write contents
|
|
230
|
+
end
|
|
231
|
+
result
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
def symtbl_gsub ( symtbl )
|
|
235
|
+
contents = read
|
|
236
|
+
contents.symtbl_gsub! symtbl
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
end # class File
|
|
240
|
+
|
|
176
241
|
|
|
177
242
|
module SymTblGsub
|
|
178
243
|
|
|
179
244
|
test_section __FILE__ do
|
|
180
245
|
class SymTblGsubTest < Test::Unit::TestCase
|
|
246
|
+
include SymTblGsub::Assertions
|
|
181
247
|
def setup
|
|
182
|
-
|
|
248
|
+
self.symtbl = SymTbl.new(
|
|
183
249
|
:foo => :bar,
|
|
184
250
|
:bar => [1, 2],
|
|
185
251
|
3 => 'foo',
|
|
@@ -189,13 +255,10 @@ module SymTblGsub
|
|
|
189
255
|
:test => '<<pwd>>/../test'
|
|
190
256
|
)
|
|
191
257
|
end
|
|
192
|
-
def assert_symtbl ( my, ref=nil )
|
|
193
|
-
assert_equal ref, my.symtbl_gsub(@s)
|
|
194
|
-
end
|
|
195
258
|
def test_string
|
|
196
259
|
assert_symtbl '<<foo>>', 'bar'
|
|
197
260
|
assert_symtbl '<<foo>><<3>> >> <<', 'barfoo >> <<'
|
|
198
|
-
|
|
261
|
+
assert_symtbl_nil '<<<<>>>>%%><<>>^#^#'
|
|
199
262
|
assert_symtbl '<<<<bar>>>>', '<<[1, 2]>>'
|
|
200
263
|
assert_symtbl '%<<<<foo>>>>#', '%[1, 2]#'
|
|
201
264
|
assert_symtbl "_\n\t\000_<<i>>__", "_\n\t\000_foo__"
|
|
@@ -205,7 +268,9 @@ module SymTblGsub
|
|
|
205
268
|
class Foo
|
|
206
269
|
end
|
|
207
270
|
def test_object
|
|
208
|
-
|
|
271
|
+
f = Foo.new
|
|
272
|
+
assert_symtbl f, f
|
|
273
|
+
assert_symtbl_nil f
|
|
209
274
|
end
|
|
210
275
|
def test_hash
|
|
211
276
|
assert_symtbl({'<<foo>>' => '<<i>>', 'barbar' => '<<3>>' },
|
|
@@ -230,7 +295,7 @@ module SymTblGsub
|
|
|
230
295
|
ls2 = '<<pwd>>/../test'.to_path + 'fixtures/autoload_tree/*.rb'
|
|
231
296
|
ls3 = '<<test>>'.to_path + 'fixtures/foo.{tar*,bz*}'
|
|
232
297
|
pathlist << ls2 << ls1 << ls3
|
|
233
|
-
my = PathList[pathlist].symtbl_gsub(
|
|
298
|
+
my = PathList[pathlist].symtbl_gsub(symtbl).map! { |x| x.basename }
|
|
234
299
|
my.all? { |x| assert_kind_of(Pathname, x) }
|
|
235
300
|
ref = %w[ bar foo A.rb B.rb foo.bz2 foo.tar foo.tar.bz2 foo.tar.gz ]
|
|
236
301
|
assert_equal ref.to_set, my.map!{ |x| x.to_s }.to_set
|
|
@@ -242,7 +307,7 @@ module SymTblGsub
|
|
|
242
307
|
pathlist << '<<test>>'.to_path + 'fixtures/foo.{tar*,bz*}'
|
|
243
308
|
pathlist = PathList[pathlist]
|
|
244
309
|
assert_equal(['<<foo>>'.to_path, '<<i>>'.to_path], pathlist)
|
|
245
|
-
my = pathlist.symtbl_gsub(
|
|
310
|
+
my = pathlist.symtbl_gsub(symtbl).map! { |x| x.basename }
|
|
246
311
|
my.all? { |x| assert_kind_of(Pathname, x) }
|
|
247
312
|
ref = %w[ bar foo A.rb B.rb foo.bz2 foo.tar foo.tar.bz2 foo.tar.gz ]
|
|
248
313
|
assert_equal ref.to_set, my.map!{ |x| x.to_s }.to_set
|
data/lib/text.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: text.rb
|
|
4
|
+
# Revision:: $Id: /w/fey/ruby_ex/trunk/lib/text.rb 7964 2005-09-16T10:05:22.743435Z ertai $
|
|
5
5
|
|
|
6
6
|
class Text
|
|
7
7
|
|
data/lib/timeout_ex.rb
CHANGED
data/lib/trace.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Copyright:: Copyright (c) 2004, 2005 Nicolas Despres. All rights reserved.
|
|
2
2
|
# Author:: Nicolas Despres <polrop@lrde.epita.fr>.
|
|
3
3
|
# License:: Gnu General Public License.
|
|
4
|
-
# Revision:: $Id: trace.rb
|
|
4
|
+
# Revision:: $Id: /w/fey/ruby_ex/trunk/lib/trace.rb 7944 2005-09-06T23:27:27.929371Z ertai $
|
|
5
5
|
|
|
6
6
|
module Trace
|
|
7
7
|
|
data/lib/uri/druby.rb
CHANGED
|
@@ -2,15 +2,12 @@
|
|
|
2
2
|
# Author: Nicolas Despres <polrop@lrde.epita.fr>.
|
|
3
3
|
# License: Gnu General Public License.
|
|
4
4
|
|
|
5
|
-
# $LastChangedBy:
|
|
6
|
-
# $Id: druby.rb
|
|
7
|
-
|
|
8
|
-
require 'uri_ex'
|
|
9
|
-
|
|
5
|
+
# $LastChangedBy: pouillar $
|
|
6
|
+
# $Id: /w/fey/ruby_ex/trunk/lib/uri/druby.rb 21865 2006-02-18T17:13:28.680350Z pouillar $
|
|
10
7
|
|
|
11
8
|
module URI
|
|
12
9
|
|
|
13
|
-
class DRuby <
|
|
10
|
+
class DRuby < GenericEx
|
|
14
11
|
|
|
15
12
|
SCHEME = 'druby'
|
|
16
13
|
DEFAULT_HOST = 'localhost'
|
data/lib/uri/file.rb
CHANGED
|
@@ -2,40 +2,37 @@
|
|
|
2
2
|
# Author: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
|
3
3
|
# License: Gnu General Public License.
|
|
4
4
|
|
|
5
|
-
# $LastChangedBy:
|
|
6
|
-
# $Id: file.rb
|
|
5
|
+
# $LastChangedBy: pouillar $
|
|
6
|
+
# $Id: /w/fey/ruby_ex/trunk/lib/uri/file.rb 21865 2006-02-18T17:13:28.680350Z pouillar $
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
require 'md5'
|
|
9
10
|
|
|
10
11
|
module URI
|
|
11
12
|
|
|
12
|
-
class File <
|
|
13
|
+
class File < GenericEx
|
|
13
14
|
|
|
14
15
|
COMPONENT = [
|
|
15
16
|
:scheme,
|
|
16
17
|
:path
|
|
17
18
|
].freeze
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
cattr_reader :tar, :gzip
|
|
20
|
+
@@tar = 'tar'.to_cmd.freeze
|
|
21
|
+
@@gzip = 'gzip'.to_cmd.freeze
|
|
20
22
|
|
|
21
23
|
|
|
22
24
|
def initialize ( *args )
|
|
23
25
|
super
|
|
24
26
|
unless @host.nil? or @host.empty?
|
|
25
|
-
raise ArgumentError,
|
|
27
|
+
raise ArgumentError,
|
|
26
28
|
"You cannot neither setup a host (#{@host}), nor a relative path"
|
|
27
29
|
end
|
|
28
30
|
end
|
|
29
31
|
|
|
30
|
-
def self.build ( args )
|
|
31
|
-
tmp = Util::make_components_hash(self, args)
|
|
32
|
-
return super(tmp)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
32
|
def checkout
|
|
36
|
-
p =
|
|
33
|
+
p = pathname
|
|
37
34
|
raise CheckoutError, to_s unless p.exist?
|
|
38
|
-
p
|
|
35
|
+
[p, nil]
|
|
39
36
|
end
|
|
40
37
|
|
|
41
38
|
def commit ( aPath )
|
|
@@ -43,19 +40,36 @@ module URI
|
|
|
43
40
|
end
|
|
44
41
|
|
|
45
42
|
def save
|
|
46
|
-
p =
|
|
43
|
+
p = pathname
|
|
47
44
|
raise SaveError, to_s unless p.exist?
|
|
48
45
|
if p.directory?
|
|
49
46
|
out = TempPath.new('save', "#{p.basename}.tar.gz")
|
|
50
|
-
cmd =
|
|
47
|
+
cmd = tar['czf', out, p]
|
|
51
48
|
else
|
|
52
49
|
out = TempPath.new('save', "#{p.basename}.gz")
|
|
53
|
-
cmd =
|
|
50
|
+
cmd = gzip['-c', p] > out
|
|
54
51
|
end
|
|
55
|
-
cmd.run(
|
|
52
|
+
cmd.run(runner)
|
|
56
53
|
[out, nil]
|
|
57
54
|
end
|
|
58
55
|
|
|
56
|
+
def fingerprint
|
|
57
|
+
digest = Digest::MD5.new
|
|
58
|
+
if pathname.directory?
|
|
59
|
+
pathname.find do |path|
|
|
60
|
+
next if path.directory?
|
|
61
|
+
digest << path.read
|
|
62
|
+
end
|
|
63
|
+
else
|
|
64
|
+
digest << pathname.read
|
|
65
|
+
end
|
|
66
|
+
digest.to_s
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def to_s
|
|
70
|
+
super.sub(/^(file:\/)([^\/])/, '\1//\2')
|
|
71
|
+
end
|
|
72
|
+
|
|
59
73
|
end # class File
|
|
60
74
|
|
|
61
75
|
@@schemes['FILE'] = File
|
data/lib/uri/ftp_ex.rb
CHANGED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
# Author: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
|
3
3
|
# License: Gnu General Public License.
|
|
4
4
|
|
|
5
|
-
# $LastChangedBy:
|
|
6
|
-
# $Id: ftp_ex.rb
|
|
5
|
+
# $LastChangedBy: pouillar $
|
|
6
|
+
# $Id: /w/fey/ruby_ex/trunk/lib/uri/ftp_ex.rb 22058 2006-02-20T21:41:08.060925Z pouillar $
|
|
7
7
|
|
|
8
|
-
require 'uri_ex'
|
|
9
8
|
require 'uri/ftp'
|
|
10
9
|
require 'net/ftp'
|
|
11
10
|
|
|
12
11
|
module URI
|
|
13
12
|
|
|
13
|
+
GenericEx.import!
|
|
14
14
|
class FTP
|
|
15
15
|
|
|
16
16
|
def checkout
|
|
@@ -33,4 +33,9 @@ module URI
|
|
|
33
33
|
|
|
34
34
|
end # class FTP
|
|
35
35
|
|
|
36
|
+
class FtpEx
|
|
37
|
+
end
|
|
38
|
+
class FTPEx
|
|
39
|
+
end
|
|
40
|
+
|
|
36
41
|
end # module URI
|