rmtools 1.2.10 → 1.2.11
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/README.txt +8 -0
- data/Rakefile +2 -2
- data/lib/rmtools/console/coloring.rb +12 -1
- data/lib/rmtools/core/module.rb +1 -1
- data/lib/rmtools/core/proc.rb +3 -3
- data/lib/rmtools/db/active_record.rb +92 -78
- data/lib/rmtools/dev/blackhole.rb +3 -0
- data/lib/rmtools/dev/present.rb +2 -2
- data/lib/rmtools/dev/trace_format.rb +3 -2
- data/lib/rmtools/dev/traceback.rb +6 -3
- data/lib/rmtools/enumerable/array.rb +4 -0
- data/lib/rmtools/enumerable/array_iterators.rb +2 -2
- data/lib/rmtools/xml/libxml.rb +1 -1
- metadata +78 -76
data/README.txt
CHANGED
@@ -4,10 +4,18 @@ Copyright (c) 2010-2012
|
|
4
4
|
This work is licensed under the same license as Ruby language.
|
5
5
|
|
6
6
|
== RMTools
|
7
|
+
https://github.com/tinbka/rmtools
|
7
8
|
Methods for basic classes addon collection.
|
8
9
|
|
9
10
|
== CHANGES
|
10
11
|
|
12
|
+
== Version 1.2.11
|
13
|
+
|
14
|
+
* Added Array#select_by and #reject_by pattern-iterators
|
15
|
+
* Fixed ActiveRecord::Base.select_rand
|
16
|
+
* Restricted RMTools.format_trace to use with Rails because of hard slowdown
|
17
|
+
* Updated Proc constants for ruby 1.9
|
18
|
+
|
11
19
|
== Version 1.2.10
|
12
20
|
|
13
21
|
* Update String#parse:caller to parse ruby 1.9 "block level". Now block level processes in RMLogger and RMTools.format_trace
|
data/Rakefile
CHANGED
@@ -31,6 +31,16 @@ module RMTools
|
|
31
31
|
method_defined? :b and undef_method :b
|
32
32
|
method_defined? :p and undef_method :p
|
33
33
|
|
34
|
+
def demo(str, pattern=nil)
|
35
|
+
%w[black red green yellow blue purple cyan gray].xprod(%w[bold underline graybg boldbg]).each {|color, effect|
|
36
|
+
if pattern
|
37
|
+
puts ghl(str, pattern, "#{color}_#{effect}")
|
38
|
+
else
|
39
|
+
puts paint(str, transparent, color, effect)
|
40
|
+
end
|
41
|
+
}
|
42
|
+
end
|
43
|
+
|
34
44
|
def paint(str, transparent, num=nil, effect=nil)
|
35
45
|
# default cmd.exe cannot into ANSI
|
36
46
|
str = str.to_s
|
@@ -40,7 +50,7 @@ module RMTools
|
|
40
50
|
if !num
|
41
51
|
effect = Effects[num]
|
42
52
|
elsif num.is Array
|
43
|
-
num, effect = num
|
53
|
+
num, effect = num
|
44
54
|
end
|
45
55
|
end
|
46
56
|
effect = Effects[effect] if effect.is String
|
@@ -57,6 +67,7 @@ module RMTools
|
|
57
67
|
end
|
58
68
|
end
|
59
69
|
|
70
|
+
# Without +transparent+ Painter stops coloring once it find colored substring
|
60
71
|
# puts "words have one #{Painter.red_bold 'highlighted'} among them"
|
61
72
|
# <default>words have one <red>highlighted</red> among them</default>
|
62
73
|
# puts Painter.gray "words have one #{Painter.red_bold 'highlighted'} among them"
|
data/lib/rmtools/core/module.rb
CHANGED
data/lib/rmtools/core/proc.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
class Proc
|
3
|
-
NULL = lambda {} unless defined? Proc::NULL
|
4
|
-
TRUE = lambda {true} unless defined? Proc::TRUE
|
5
|
-
FALSE = lambda {false} unless defined? Proc::FALSE
|
3
|
+
NULL = lambda {|*x|} unless defined? Proc::NULL
|
4
|
+
TRUE = lambda {|*x| true} unless defined? Proc::TRUE
|
5
|
+
FALSE = lambda {|*x| false} unless defined? Proc::FALSE
|
6
6
|
attr_accessor :string
|
7
7
|
|
8
8
|
def when
|
@@ -19,9 +19,98 @@ module ActiveRecord
|
|
19
19
|
|
20
20
|
class Base
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
class << self
|
23
|
+
|
24
|
+
def establish_connection_with config
|
25
|
+
ActiveRecord.establish_connection_with config
|
26
|
+
end
|
27
|
+
|
28
|
+
def merge_conditions(*conditions)
|
29
|
+
segments = conditions.map {|condition|
|
30
|
+
sanitize_sql condition
|
31
|
+
}.reject {|condition|
|
32
|
+
condition.blank?
|
33
|
+
}
|
34
|
+
"(#{segments.join(') AND (')})" unless segments.empty?
|
35
|
+
end
|
36
|
+
|
37
|
+
def execute_sanitized(sql)
|
38
|
+
connection.execute sanitize_sql sql
|
39
|
+
end
|
40
|
+
|
41
|
+
# requires primary key
|
42
|
+
def forced_create(hash)
|
43
|
+
names = columns.names
|
44
|
+
id = (hash[primary_key.to_sym] ||= maximum(primary_key)+1)
|
45
|
+
execute_sanitized([
|
46
|
+
"INSERT INTO #{quoted_table_name} VALUES (:#{names*', :'})",
|
47
|
+
Hash[names.map {|name| [name.to_sym, nil]}].merge(hash)
|
48
|
+
])
|
49
|
+
find_by_sql(["SELECT * FROM #{quoted_table_name} WHERE #{primary_key} = ?", id])[0]
|
50
|
+
end
|
51
|
+
|
52
|
+
# values must be 2-tuple array [[column1, value1], [column2, value2], ...] and columns must be in order they've been created
|
53
|
+
def insert_unless_exist(table, values)
|
54
|
+
table = connection.quote_table_name table
|
55
|
+
if execute_sanitized(["SELECT COUNT(*) FROM #{table} WHERE #{vaues.firsts.map {|v| "#{connection.quote_column_name v}=?"}*' AND '} LIMIT 1", *values.lasts]).to_a.flatten > 0
|
56
|
+
false
|
57
|
+
else
|
58
|
+
execute_sanitized ["INSERT INTO #{table} VALUES (#{['?']*values.size*','})", *values.lasts]
|
59
|
+
true
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def select_rand(limit, options={})
|
64
|
+
cnt = options.delete :cnt
|
65
|
+
_where = options.delete :where
|
66
|
+
cnt_where = options.delete(:cnt_where) || _where
|
67
|
+
if !cnt and !cnt_where
|
68
|
+
ids = options[:ids] || pluck(:id)
|
69
|
+
if fields = options[:fields]
|
70
|
+
return select(fields).where(id: ids.randsample(limit)).all
|
71
|
+
else
|
72
|
+
return where(id: ids.randsample(limit)).all
|
73
|
+
end
|
74
|
+
#cnt = options[:ids].size
|
75
|
+
#where ||= "#{table_name}.id IN (:ids)"
|
76
|
+
end
|
77
|
+
discnt = options.delete :discnt
|
78
|
+
tables = options.delete(:tables) || table_name
|
79
|
+
cnt_tables = options.delete(:cnt_tables) || tables
|
80
|
+
fields = (options.delete(:fields) || %w[*])*','
|
81
|
+
|
82
|
+
find_by_sql(["SELECT * FROM (
|
83
|
+
SELECT @cnt:=#{cnt ? cnt.to_i : 'COUNT(*)'}+1#{-discnt.to_i if discnt}, @lim:=#{limit.to_i}#{" FROM #{cnt_tables} WHERE #{cnt_where}" if !cnt}
|
84
|
+
) vars
|
85
|
+
STRAIGHT_JOIN (
|
86
|
+
SELECT #{fields}, @lim:=@lim-1 FROM #{tables} WHERE (@cnt:=@cnt-1) AND RAND() < @lim/@cnt#{" AND (#{_where})" if _where}
|
87
|
+
) i", options])
|
88
|
+
end
|
89
|
+
|
90
|
+
class_attribute :enums
|
91
|
+
def enum hash
|
92
|
+
key = hash.keys.first
|
93
|
+
(self.enums ||= {}).merge! hash
|
94
|
+
define_attribute_methods if !attribute_methods_generated?
|
95
|
+
class_eval %{
|
96
|
+
def #{key}
|
97
|
+
missing_attribute('#{key}', caller) unless @attributes.has_key?('#{key}')
|
98
|
+
self.class.enums[:#{key}][@attributes['#{key}']]
|
99
|
+
end
|
100
|
+
def #{key}=(val)
|
101
|
+
write_attribute('#{key}', Fixnum === val ? val : self.class.enums[:#{key}].index val.to_s
|
102
|
+
end
|
103
|
+
}
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
# fix for thinking_sphinx equation in #instances_from_class:
|
109
|
+
# ids.collect {|obj_id| instances.detect do |obj| obj.primary_key_for_sphinx == obj_id end}
|
110
|
+
# where obj_id is Array
|
111
|
+
#def primary_key_for_sphinx
|
112
|
+
# [read_attribute(self.class.primary_key_for_sphinx)]
|
113
|
+
#end
|
25
114
|
|
26
115
|
def to_hash
|
27
116
|
return attributes if respond_to? :attributes
|
@@ -50,85 +139,10 @@ module ActiveRecord
|
|
50
139
|
self.class.destroy_all(attributes)
|
51
140
|
end
|
52
141
|
|
53
|
-
def self.merge_conditions(*conditions)
|
54
|
-
segments = conditions.map {|condition|
|
55
|
-
sanitize_sql condition
|
56
|
-
}.reject {|condition|
|
57
|
-
condition.blank?
|
58
|
-
}
|
59
|
-
"(#{segments.join(') AND (')})" unless segments.empty?
|
60
|
-
end
|
61
|
-
|
62
|
-
def self.execute_sanitized(sql)
|
63
|
-
connection.execute sanitize_sql sql
|
64
|
-
end
|
65
|
-
|
66
|
-
# requires primary key
|
67
|
-
def self.forced_create(hash)
|
68
|
-
names = columns.names
|
69
|
-
id = (hash[primary_key.to_sym] ||= maximum(primary_key)+1)
|
70
|
-
execute_sanitized([
|
71
|
-
"INSERT INTO #{quoted_table_name} VALUES (:#{names*', :'})",
|
72
|
-
Hash[names.map {|name| [name.to_sym, nil]}].merge(hash)
|
73
|
-
])
|
74
|
-
find_by_sql(["SELECT * FROM #{quoted_table_name} WHERE #{primary_key} = ?", id])[0]
|
75
|
-
end
|
76
|
-
|
77
|
-
# values must be 2-tuple array [[column1, value1], [column2, value2], ...] and columns must be in order they've been created
|
78
|
-
def self.insert_unless_exist(table, values)
|
79
|
-
table = connection.quote_table_name table
|
80
|
-
if execute_sanitized(["SELECT COUNT(*) FROM #{table} WHERE #{vaues.firsts.map {|v| "#{connection.quote_column_name v}=?"}*' AND '} LIMIT 1", *values.lasts]).to_a.flatten > 0
|
81
|
-
false
|
82
|
-
else
|
83
|
-
execute_sanitized ["INSERT INTO #{table} VALUES (#{['?']*values.size*','})", *values.lasts]
|
84
|
-
true
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
142
|
def resource_path
|
89
143
|
"#{self.class.name.tableize}/#{id}"
|
90
144
|
end
|
91
145
|
|
92
|
-
def self.select_rand(limit, options={})
|
93
|
-
cnt = options.delete :cnt
|
94
|
-
discnt = options.delete :discnt
|
95
|
-
where = options.delete :where
|
96
|
-
cnt_where = options.delete :cnt_where
|
97
|
-
tables = options.delete :tables
|
98
|
-
cnt_tables = options.delete :cnt_tables
|
99
|
-
fields = options.delete :fields
|
100
|
-
|
101
|
-
find_by_sql(["SELECT * FROM (
|
102
|
-
SELECT @cnt:=#{cnt ? cnt.to_i : 'COUNT(*)'}+1#{-discnt.to_i if discnt}, @lim:=#{limit.to_i}#{"FROM #{options[:cnt_tables] || table_name} WHERE #{cnt_where}" if !cnt}
|
103
|
-
) vars
|
104
|
-
STRAIGHT_JOIN (
|
105
|
-
SELECT #{fields || table_name+'.*'}, @lim:=@lim-1 FROM #{tables || table_name} WHERE (@cnt:=@cnt-1) AND RAND() < @lim/@cnt#{" AND (#{where})" if where}
|
106
|
-
) i", options])
|
107
|
-
end
|
108
|
-
|
109
|
-
class_attribute :enums
|
110
|
-
def self.enum hash
|
111
|
-
key = hash.keys.first
|
112
|
-
(self.enums ||= {}).merge! hash
|
113
|
-
define_attribute_methods if !attribute_methods_generated?
|
114
|
-
class_eval %{
|
115
|
-
def #{key}
|
116
|
-
missing_attribute('#{key}', caller) unless @attributes.has_key?('#{key}')
|
117
|
-
self.class.enums[:#{key}][@attributes['#{key}']]
|
118
|
-
end
|
119
|
-
def #{key}=(val)
|
120
|
-
write_attribute('#{key}', Fixnum === val ? val : self.class.enums[:#{key}].index val.to_s
|
121
|
-
end
|
122
|
-
}
|
123
|
-
end
|
124
|
-
|
125
|
-
# fix for thinking_sphinx equation in #instances_from_class:
|
126
|
-
# ids.collect {|obj_id| instances.detect do |obj| obj.primary_key_for_sphinx == obj_id end}
|
127
|
-
# where obj_id is Array
|
128
|
-
#def primary_key_for_sphinx
|
129
|
-
# [read_attribute(self.class.primary_key_for_sphinx)]
|
130
|
-
#end
|
131
|
-
|
132
146
|
end
|
133
147
|
|
134
148
|
class Relation
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
class BlackHole
|
3
|
+
__init__
|
3
4
|
|
4
5
|
# abc = BlackHole.new
|
5
6
|
# (abc.first.get {|_| !_}.something << 'blah blah')[123].raise!
|
@@ -15,6 +16,8 @@ class BlackHole
|
|
15
16
|
end
|
16
17
|
end
|
17
18
|
|
19
|
+
def b; false end
|
20
|
+
|
18
21
|
if RUBY_VERSION < '1.9'
|
19
22
|
undef id
|
20
23
|
end
|
data/lib/rmtools/dev/present.rb
CHANGED
@@ -14,7 +14,7 @@ class Array
|
|
14
14
|
res = "[ "
|
15
15
|
indent = (size-1).to_s.size
|
16
16
|
res << map_with_index {|k,i|
|
17
|
-
"#{i.to_s.rjust(indent)}: #{(k.is String and !inspect_string) ? k : k.inspect}"
|
17
|
+
"#{RMTools::Painter.w(i.to_s.rjust(indent))}: #{(k.is String and !inspect_string) ? k : k.inspect}"
|
18
18
|
}*"\n "
|
19
19
|
res << "]"
|
20
20
|
puts res
|
@@ -52,7 +52,7 @@ class Hash
|
|
52
52
|
str = "{ "
|
53
53
|
sorted = sort rescue to_a.sort_by_to_s
|
54
54
|
str << sorted.map {|k,v|
|
55
|
-
"#{(k.is String and !inspect_string) ? k : k.inspect} => #{(v.is String and !inspect_string) ? v : v.inspect},"
|
55
|
+
"#{RMTools::Painter.w((k.is String and !inspect_string) ? k : k.inspect)} => #{(v.is String and !inspect_string) ? v : v.inspect},"
|
56
56
|
}*"\n "
|
57
57
|
str << "}"
|
58
58
|
puts str
|
@@ -25,10 +25,11 @@ module RMTools
|
|
25
25
|
def format_trace(a)
|
26
26
|
bt, steps, i = [], [], 0
|
27
27
|
m = a[0].parse:caller
|
28
|
-
|
28
|
+
# seems like that bug is fixed for now
|
29
|
+
#m.line -= 1 if m and m.file =~ /\.haml$/
|
29
30
|
while i < a.size
|
30
31
|
m2 = a[i+1] && a[i+1].parse(:caller)
|
31
|
-
m2.line -= 1 if m2 and m2.file =~ /\.haml$/
|
32
|
+
#m2.line -= 1 if m2 and m2.file =~ /\.haml$/
|
32
33
|
if !m or m.path =~ IgnoreFiles
|
33
34
|
nil
|
34
35
|
else
|
@@ -2,8 +2,11 @@
|
|
2
2
|
RMTools::require 'dev/trace_format'
|
3
3
|
require 'active_support/core_ext/class/attribute'
|
4
4
|
|
5
|
-
#
|
6
|
-
#
|
5
|
+
# As for rmtools-1.1.0, 1.9.1 may hung up processing IO while generating traceback
|
6
|
+
# As for 1.2.10 with 1.9.3 with readline support it isn't hung up anymore
|
7
|
+
# Still it's not suitable for Rails, too many raises inside the engine slow all the wor in 5-10 times.
|
8
|
+
# I need a way to format backtrace only in case it is actually about to be printed onto log or console/
|
9
|
+
unless ENV['RAILS_ENV']
|
7
10
|
class Exception
|
8
11
|
alias :set_bt :set_backtrace
|
9
12
|
class_attribute :__trace_format
|
@@ -35,4 +38,4 @@ require 'active_support/core_ext/class/attribute'
|
|
35
38
|
class SystemStackError
|
36
39
|
trace_format false
|
37
40
|
end
|
38
|
-
|
41
|
+
end
|
@@ -14,7 +14,7 @@ unless defined? RMTools::Iterators
|
|
14
14
|
# => [[1, 2, 3], [3, 4, 6]]
|
15
15
|
class Array
|
16
16
|
alias :throw_no :method_missing
|
17
|
-
RMTools::Iterators = %r{^(#{(instance_methods.grep(/_by$/)+%w{every no select reject partition find_all find sum foldr find_by select_by})*'|'})_([\w\d\_]+[!?]?)}
|
17
|
+
RMTools::Iterators = %r{^(#{(instance_methods.grep(/_by$/)+%w{every no select reject partition find_all find sum foldr find_by select_by reject_by})*'|'})_([\w\d\_]+[!?]?)}
|
18
18
|
|
19
19
|
def method_missing(method, *args, &block)
|
20
20
|
if match = (meth = method.to_s).match(RMTools::Iterators)
|
@@ -26,7 +26,7 @@ unless defined? RMTools::Iterators
|
|
26
26
|
end
|
27
27
|
return case iterator
|
28
28
|
when :sum; sum(args.shift) {|i| i.__send__ meth, *args, &block}
|
29
|
-
when :find_by;
|
29
|
+
when :find_by, :select_by, :reject_by; __send__(iterator, meth, *args)
|
30
30
|
else __send__(iterator) {|i| i.__send__ meth, *args, &block}
|
31
31
|
end
|
32
32
|
rescue NoMethodError => e
|
data/lib/rmtools/xml/libxml.rb
CHANGED
metadata
CHANGED
@@ -1,81 +1,92 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rmtools
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.2.11
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 2
|
9
|
-
- 10
|
10
|
-
version: 1.2.10
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Sergey Baev
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-08-07 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: rake
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 49
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
- 8
|
32
|
-
- 7
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
33
21
|
version: 0.8.7
|
34
22
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: activesupport
|
38
23
|
prerelease: false
|
39
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.8.7
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: activesupport
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
40
33
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
hash: 19
|
45
|
-
segments:
|
46
|
-
- 2
|
47
|
-
- 3
|
48
|
-
- 8
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
49
37
|
version: 2.3.8
|
50
38
|
type: :runtime
|
51
|
-
version_requirements: *id002
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
name: hoe
|
54
39
|
prerelease: false
|
55
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.3.8
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rdoc
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '3.10'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
56
57
|
none: false
|
57
|
-
requirements:
|
58
|
+
requirements:
|
58
59
|
- - ~>
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.10'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: hoe
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '3.0'
|
65
70
|
type: :development
|
66
|
-
|
67
|
-
|
68
|
-
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '3.0'
|
78
|
+
description: Applied library primarily for debug and text/arrays/files processing
|
79
|
+
purposes.
|
80
|
+
email:
|
69
81
|
- tinbka@gmail.com
|
70
82
|
executables: []
|
71
|
-
|
72
|
-
extensions:
|
83
|
+
extensions:
|
73
84
|
- ext/extconf.rb
|
74
|
-
extra_rdoc_files:
|
85
|
+
extra_rdoc_files:
|
75
86
|
- ./Manifest.txt
|
76
87
|
- ./License.txt
|
77
88
|
- ./README.txt
|
78
|
-
files:
|
89
|
+
files:
|
79
90
|
- ext/extconf.rb
|
80
91
|
- ext/rmtools.h
|
81
92
|
- ext/rmtools.cpp
|
@@ -173,39 +184,30 @@ files:
|
|
173
184
|
- ./Manifest.txt
|
174
185
|
- ./License.txt
|
175
186
|
- ./README.txt
|
176
|
-
homepage:
|
187
|
+
homepage: https://github.com/tinbka/rmtools
|
177
188
|
licenses: []
|
178
|
-
|
179
189
|
post_install_message:
|
180
|
-
rdoc_options:
|
190
|
+
rdoc_options:
|
181
191
|
- --main
|
182
192
|
- README.txt
|
183
|
-
require_paths:
|
193
|
+
require_paths:
|
184
194
|
- lib
|
185
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
195
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
186
196
|
none: false
|
187
|
-
requirements:
|
188
|
-
- -
|
189
|
-
- !ruby/object:Gem::Version
|
190
|
-
|
191
|
-
|
192
|
-
- 0
|
193
|
-
version: "0"
|
194
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
197
|
+
requirements:
|
198
|
+
- - ! '>='
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: '0'
|
201
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
202
|
none: false
|
196
|
-
requirements:
|
197
|
-
- -
|
198
|
-
- !ruby/object:Gem::Version
|
199
|
-
|
200
|
-
segments:
|
201
|
-
- 0
|
202
|
-
version: "0"
|
203
|
+
requirements:
|
204
|
+
- - ! '>='
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '0'
|
203
207
|
requirements: []
|
204
|
-
|
205
208
|
rubyforge_project: rmtools
|
206
|
-
rubygems_version: 1.8.
|
209
|
+
rubygems_version: 1.8.24
|
207
210
|
signing_key:
|
208
211
|
specification_version: 3
|
209
212
|
summary: Yet another Ruby applied lib
|
210
213
|
test_files: []
|
211
|
-
|