rmtools 1.1.11 → 1.2.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/Manifest.txt +16 -21
- data/README.txt +17 -5
- data/Rakefile +1 -1
- data/lib/rmtools/console/coloring.rb +58 -42
- data/lib/rmtools/console/highlight.rb +1 -1
- data/lib/rmtools/core/arguments.rb +7 -4
- data/lib/rmtools/core/js.rb +6 -5
- data/lib/rmtools/core/kernel.rb +37 -1
- data/lib/rmtools/core/module.rb +1 -1
- data/lib/rmtools/{debug → dev}/binding.rb +6 -6
- data/lib/rmtools/{experimental → dev}/blackhole.rb +0 -0
- data/lib/rmtools/dev/code_reader.rb +431 -0
- data/lib/rmtools/{debug → dev}/highlight.rb +2 -2
- data/lib/rmtools/{debug → dev}/logging.rb +44 -47
- data/lib/rmtools/{debug → dev}/observing.rb +8 -2
- data/lib/rmtools/dev/present.rb +63 -0
- data/lib/rmtools/{debug → dev}/timer.rb +3 -3
- data/lib/rmtools/{debug → dev}/trace_format.rb +3 -9
- data/lib/rmtools/{debug → dev}/traceback.rb +1 -1
- data/lib/rmtools/{debug.rb → dev.rb} +0 -0
- data/lib/rmtools/dev_min.rb +2 -0
- data/lib/rmtools/enumerable/array.rb +12 -1
- data/lib/rmtools/enumerable/array_iterators.rb +5 -3
- data/lib/rmtools/enumerable/common.rb +0 -2
- data/lib/rmtools/enumerable/hash.rb +10 -4
- data/lib/rmtools/enumerable/object_space.rb +11 -9
- data/lib/rmtools/enumerable/range.rb +21 -0
- data/lib/rmtools/fs/tools.rb +6 -2
- data/lib/rmtools/install.rb +4 -2
- data/lib/rmtools/lang/cyrillic.rb +2 -2
- data/lib/rmtools/lang/{shortcuts.rb → helpers.rb} +0 -0
- data/lib/rmtools/load.rb +1 -1
- data/lib/rmtools/text/regexp.rb +74 -0
- data/lib/rmtools/text/string_rtl.rb +28 -0
- data/lib/rmtools/text/string_scanner.rb +19 -9
- data/lib/rmtools/text/string_simple.rb +11 -3
- data/lib/rmtools/text/string_split.rb +1 -5
- data/lib/rmtools/xml/node.rb +1 -1
- data/lib/rmtools/xml/string.rb +2 -2
- data/lib/rmtools.rb +1 -8
- data/lib/rmtools_dev.rb +6 -0
- metadata +21 -26
- data/lib/rmtools/debug/present.rb +0 -39
- data/lib/rmtools/debug_notrace.rb +0 -2
- data/lib/rmtools/experimental/dumps.rb +0 -29
- data/lib/rmtools/experimental/numeric.rb +0 -54
- data/lib/rmtools/experimental/rails_backtrace.rb +0 -30
- data/lib/rmtools/experimental/string.rb +0 -56
- data/lib/rmtools/experimental/tree.rb +0 -72
- data/lib/rmtools/experimental.rb +0 -2
- data/lib/rmtools_nodebug.rb +0 -3
- data/lib/rmtools_notrace.rb +0 -7
- data/lib/rmtools_safe.rb +0 -2
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rmtools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 1.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 1.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Shinku
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-05-16 00:00:00 +04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -89,6 +89,16 @@ files:
|
|
89
89
|
- lib/rmtools/fs/tools.rb
|
90
90
|
- lib/rmtools/ip/numeric.rb
|
91
91
|
- lib/rmtools/ip/string.rb
|
92
|
+
- lib/rmtools/dev/present.rb
|
93
|
+
- lib/rmtools/dev/blackhole.rb
|
94
|
+
- lib/rmtools/dev/observing.rb
|
95
|
+
- lib/rmtools/dev/traceback.rb
|
96
|
+
- lib/rmtools/dev/binding.rb
|
97
|
+
- lib/rmtools/dev/logging.rb
|
98
|
+
- lib/rmtools/dev/trace_format.rb
|
99
|
+
- lib/rmtools/dev/highlight.rb
|
100
|
+
- lib/rmtools/dev/timer.rb
|
101
|
+
- lib/rmtools/dev/code_reader.rb
|
92
102
|
- lib/rmtools/xml/xpath.rb
|
93
103
|
- lib/rmtools/xml/string.rb
|
94
104
|
- lib/rmtools/xml/libxml.rb
|
@@ -109,7 +119,7 @@ files:
|
|
109
119
|
- lib/rmtools/core/regexp.rb
|
110
120
|
- lib/rmtools/core/class.rb
|
111
121
|
- lib/rmtools/core/proc.rb
|
112
|
-
- lib/rmtools/lang/
|
122
|
+
- lib/rmtools/lang/helpers.rb
|
113
123
|
- lib/rmtools/lang/ansi.rb
|
114
124
|
- lib/rmtools/lang/regexp.rb
|
115
125
|
- lib/rmtools/lang/cyrillic.rb
|
@@ -120,8 +130,10 @@ files:
|
|
120
130
|
- lib/rmtools/text/string_simple.rb
|
121
131
|
- lib/rmtools/text/string_scanner.rb
|
122
132
|
- lib/rmtools/text/textilize.rb
|
133
|
+
- lib/rmtools/text/string_rtl.rb
|
123
134
|
- lib/rmtools/text/string_split.rb
|
124
135
|
- lib/rmtools/text/string_parse.rb
|
136
|
+
- lib/rmtools/text/regexp.rb
|
125
137
|
- lib/rmtools/time/russian.rb
|
126
138
|
- lib/rmtools/time/global.rb
|
127
139
|
- lib/rmtools/rand.rb
|
@@ -130,20 +142,11 @@ files:
|
|
130
142
|
- lib/rmtools/console/highlight.rb
|
131
143
|
- lib/rmtools/core.rb
|
132
144
|
- lib/rmtools/db.rb
|
133
|
-
- lib/rmtools/debug/present.rb
|
134
|
-
- lib/rmtools/debug/observing.rb
|
135
|
-
- lib/rmtools/debug/traceback.rb
|
136
|
-
- lib/rmtools/debug/binding.rb
|
137
|
-
- lib/rmtools/debug/logging.rb
|
138
|
-
- lib/rmtools/debug/trace_format.rb
|
139
|
-
- lib/rmtools/debug/highlight.rb
|
140
|
-
- lib/rmtools/debug/timer.rb
|
141
145
|
- lib/rmtools/fs.rb
|
142
146
|
- lib/rmtools/ip.rb
|
143
147
|
- lib/rmtools/lang.rb
|
144
148
|
- lib/rmtools/functional.rb
|
145
149
|
- lib/rmtools/load.rb
|
146
|
-
- lib/rmtools/experimental.rb
|
147
150
|
- lib/rmtools/install.rb
|
148
151
|
- lib/rmtools/functional/decorate.rb
|
149
152
|
- lib/rmtools/functional/fold.rb
|
@@ -151,8 +154,7 @@ files:
|
|
151
154
|
- lib/rmtools/text.rb
|
152
155
|
- lib/rmtools/console.rb
|
153
156
|
- lib/rmtools/time.rb
|
154
|
-
- lib/rmtools/
|
155
|
-
- lib/rmtools/debug.rb
|
157
|
+
- lib/rmtools/dev.rb
|
156
158
|
- lib/rmtools/enumerable/common.rb
|
157
159
|
- lib/rmtools/enumerable/range.rb
|
158
160
|
- lib/rmtools/enumerable/hash.rb
|
@@ -160,21 +162,14 @@ files:
|
|
160
162
|
- lib/rmtools/enumerable/object_space.rb
|
161
163
|
- lib/rmtools/enumerable/array_iterators.rb
|
162
164
|
- lib/rmtools/require.rb
|
163
|
-
- lib/rmtools/experimental/numeric.rb
|
164
|
-
- lib/rmtools/experimental/string.rb
|
165
|
-
- lib/rmtools/experimental/blackhole.rb
|
166
|
-
- lib/rmtools/experimental/tree.rb
|
167
|
-
- lib/rmtools/experimental/dumps.rb
|
168
|
-
- lib/rmtools/experimental/rails_backtrace.rb
|
169
165
|
- lib/rmtools/xml.rb
|
170
166
|
- lib/rmtools/conversions.rb
|
171
167
|
- lib/rmtools/conversions/string.rb
|
172
168
|
- lib/rmtools/conversions/enum.rb
|
173
169
|
- lib/rmtools/conversions/int.rb
|
174
170
|
- lib/rmtools/enumerable.rb
|
175
|
-
- lib/
|
176
|
-
- lib/
|
177
|
-
- lib/rmtools_nodebug.rb
|
171
|
+
- lib/rmtools/dev_min.rb
|
172
|
+
- lib/rmtools_dev.rb
|
178
173
|
- ./Rakefile
|
179
174
|
- ./Manifest.txt
|
180
175
|
- ./License.txt
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
class Object
|
3
|
-
|
4
|
-
def present
|
5
|
-
[true, false, nil, Numeric, String, Regexp].each {|klass| return puts inspect if klass === self}
|
6
|
-
Hash[readable_variables.map {|v| [":#{v}", __send__(v)]}].present
|
7
|
-
end
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
class Array
|
12
|
-
|
13
|
-
def present(inspect_string=nil)
|
14
|
-
res = "[ "
|
15
|
-
indent = (size-1).to_s.size
|
16
|
-
res << map_with_index {|k,i|
|
17
|
-
"#{i.to_s.rjust(indent)}: #{(k.is String and !inspect_string) ? k : k.inspect}"
|
18
|
-
}*"\n "
|
19
|
-
res << "]"
|
20
|
-
puts res
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
class Hash
|
26
|
-
|
27
|
-
def present(inspect_string=nil)
|
28
|
-
str = "{ "
|
29
|
-
sorted = sort rescue to_a.sort_by_to_s
|
30
|
-
str << sorted.map {|k,v|
|
31
|
-
"#{(k.is String and !inspect_string) ? k : k.inspect} => #{(v.is String and !inspect_string) ? v : v.inspect},"
|
32
|
-
}*"\n "
|
33
|
-
str << "}"
|
34
|
-
puts str
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
|
39
|
-
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
class Array
|
3
|
-
|
4
|
-
def dump(depth=5)
|
5
|
-
res = "[ "
|
6
|
-
res << map_with_index {|j, i|
|
7
|
-
j = 'nil' if j.nil?
|
8
|
-
"%0*d: %s、"%[i, (size-1).to_s.size, dump_recurse(j,0,depth)]
|
9
|
-
}*"\n "
|
10
|
-
res << "]\n"
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
class Hash
|
16
|
-
|
17
|
-
def dump(depth=5)
|
18
|
-
res = "{ "
|
19
|
-
res << map {|i, j|
|
20
|
-
i = 'nil' if i.nil?
|
21
|
-
j = 'nil' if j.nil?
|
22
|
-
"%0*s => %s、\n"%[i, keys.to_ss.max, dump_recurse(j,0,depth)]
|
23
|
-
}*"\n "
|
24
|
-
res << "}\n"
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
class Float
|
3
|
-
|
4
|
-
def partial(range=100)
|
5
|
-
return to_i.to_s if to_i == self
|
6
|
-
a = abs
|
7
|
-
(2..range-1).each {|i| (1..range).each {|j|
|
8
|
-
n = j.to_f/i
|
9
|
-
break if n > a
|
10
|
-
return "#{'-' if self != a}#{j}/#{i}" if n == a
|
11
|
-
} }
|
12
|
-
self
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
class Integer
|
18
|
-
|
19
|
-
def digits
|
20
|
-
nums = []
|
21
|
-
while (int ||= self) > 0
|
22
|
-
nums << int%10
|
23
|
-
int /= 10
|
24
|
-
end
|
25
|
-
nums
|
26
|
-
end
|
27
|
-
|
28
|
-
def each_bit # descending order
|
29
|
-
to_s(2).each_byte {|b| yield(b == 49)}
|
30
|
-
end
|
31
|
-
|
32
|
-
def to_array(base=10)
|
33
|
-
int = self
|
34
|
-
ary = []
|
35
|
-
begin
|
36
|
-
a = int.divmod base
|
37
|
-
ary << a[1]
|
38
|
-
int = a[0]
|
39
|
-
end while int != 0
|
40
|
-
ary.reverse!
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
class Array
|
46
|
-
|
47
|
-
def compile_int(base=10)
|
48
|
-
int = 0
|
49
|
-
pos = size
|
50
|
-
each {|i| int += base**(pos -= 1) * i}
|
51
|
-
int
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module RMTools
|
3
|
-
def highlighted_line_html file, line
|
4
|
-
if File.file?(file)
|
5
|
-
" >> <a style=\"color:#0A0; text-decoration: none;\"#{
|
6
|
-
" href=\"http://#{
|
7
|
-
defined?(DEBUG_SERVER) ? DEBUG_SERVER : 'localhost:8888'
|
8
|
-
}/code/#{CGI.escape CGI.escape(file).gsub('.', '%2E')}/#{line}\""
|
9
|
-
}>#{read_lines(file, line.to_i).chop}</a>"
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def format_trace_html a
|
14
|
-
bt, calls, i = [], [], 0
|
15
|
-
m = a[0].match(/^(.+):(\d+)(?::in `([^']+)')?$/)
|
16
|
-
while i < a.size
|
17
|
-
m2 = a[i+1] && a[i+1].match(/^(.+):(\d+)(?::in `([^']+)')?$/)
|
18
|
-
if m and m[3] and m2 and m[1..2] == m2[1..2]
|
19
|
-
calls.unshift " <- `#{m[3]}'"
|
20
|
-
elsif m and m[1] !~ /\.gemspec$/ and line = highlighted_line_html(*m[1..2])
|
21
|
-
bt << "#{a[i]}#{calls.join}\n#{line}"
|
22
|
-
calls = []
|
23
|
-
else bt << a[i]
|
24
|
-
end
|
25
|
-
i += 1
|
26
|
-
m = m2
|
27
|
-
end
|
28
|
-
bt
|
29
|
-
end
|
30
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
class String
|
3
|
-
|
4
|
-
def bytes
|
5
|
-
arr = []
|
6
|
-
each_byte {|b| arr << b.hex}
|
7
|
-
arr
|
8
|
-
end
|
9
|
-
|
10
|
-
def to_limited len=100
|
11
|
-
LimitedString.new self, len
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
class Indent < String
|
17
|
-
attr_reader :indent
|
18
|
-
|
19
|
-
def initialize(indent=' ')
|
20
|
-
@indent = indent
|
21
|
-
super ''
|
22
|
-
end
|
23
|
-
|
24
|
-
def +@
|
25
|
-
self << @indent
|
26
|
-
end
|
27
|
-
|
28
|
-
def -@
|
29
|
-
self.chomp! @indent
|
30
|
-
end
|
31
|
-
|
32
|
-
def i(&block)
|
33
|
-
+self
|
34
|
-
res = yield
|
35
|
-
-self
|
36
|
-
res
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
# Compact string inspect
|
42
|
-
class LimitedString < String
|
43
|
-
attr_reader :len
|
44
|
-
__init__
|
45
|
-
|
46
|
-
def initialize str="", len=100
|
47
|
-
@len = len
|
48
|
-
super str
|
49
|
-
end
|
50
|
-
|
51
|
-
def inspect
|
52
|
-
@len ||= 100
|
53
|
-
size > @len ? String.new(self[0...@len]+"…").inspect : super
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
class Array
|
3
|
-
|
4
|
-
def to_tree(set_keys=false)
|
5
|
-
ary = Tree.new dup
|
6
|
-
ary.set_keys! if set_keys
|
7
|
-
ary
|
8
|
-
end
|
9
|
-
|
10
|
-
protected
|
11
|
-
def set_keys!(i=-1)
|
12
|
-
each {|e| Array === e && e.unshift(i+=1).set_keys!}
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
module RMTools
|
18
|
-
|
19
|
-
class Tree < Array
|
20
|
-
|
21
|
-
def self.from(*obj) new(*obj) end
|
22
|
-
|
23
|
-
def initialize(obj, to_ary_method=nil)
|
24
|
-
super(to_ary_method ? recurse_build(obj, to_ary_method) : obj.to_a)
|
25
|
-
end
|
26
|
-
|
27
|
-
def recurse_build(obj, to_ary_method)
|
28
|
-
to_ary_method = [to_ary_method] unless Array === to_ary_method
|
29
|
-
if to_ary_method = to_ary_method.find {|m| obj.respond_to?(m) && Array === (ary = obj.send m) && ary.size > 0}
|
30
|
-
obj.send(to_ary_method).map {|branch|
|
31
|
-
[branch, recurse_build(branch, to_ary_method)]
|
32
|
-
}
|
33
|
-
else
|
34
|
-
[self]
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def trace_leaf(a, c, cont=[])
|
39
|
-
return unless Array === a
|
40
|
-
return (a[0] == c && cont) if a.size == 1
|
41
|
-
y = nil
|
42
|
-
a[1..-1].each_with_index.find {|_, i|
|
43
|
-
y = trace_leaf(_, c, cont+[[a[0], i]])
|
44
|
-
}; y
|
45
|
-
end
|
46
|
-
|
47
|
-
def trace_branch(a, c, cont=[])
|
48
|
-
return unless Array === a
|
49
|
-
return cont if a[0] == c
|
50
|
-
y = nil
|
51
|
-
a[1..-1].each_with_index.find {|_, i|
|
52
|
-
y = trace_branch(_, c, cont+[[a[0], i]])
|
53
|
-
}; y
|
54
|
-
end
|
55
|
-
|
56
|
-
def leaves
|
57
|
-
y=[]
|
58
|
-
each {|_| Array === node && (node.size>1 ? y.concat(node.leaves) : y.concat(node))}
|
59
|
-
y
|
60
|
-
end
|
61
|
-
|
62
|
-
def get_branch_by_key(a, key, value)
|
63
|
-
return unless Array === a
|
64
|
-
return a if a[0][key] == value
|
65
|
-
y = nil
|
66
|
-
a[1..-1].find {|record| y = get_branch_by_key(record, key, value)}
|
67
|
-
y
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
71
|
-
|
72
|
-
end
|
data/lib/rmtools/experimental.rb
DELETED
data/lib/rmtools_nodebug.rb
DELETED
data/lib/rmtools_notrace.rb
DELETED
data/lib/rmtools_safe.rb
DELETED