itrigga-core_ext 0.3.0 → 1.0.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/.rvmrc +1 -0
- data/Gemfile +4 -8
- data/Gemfile.lock +5 -2
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/itrigga-core_ext.gemspec +13 -31
- data/lib/itrigga/core_ext.rb +1 -0
- data/lib/itrigga/core_ext/array.rb +29 -7
- data/lib/itrigga/core_ext/hash.rb +13 -1
- data/lib/itrigga/core_ext/nil.rb +2 -1
- data/lib/itrigga/core_ext/object.rb +2 -1
- data/lib/itrigga/core_ext/string.rb +44 -5
- data/spec/hash_spec.rb +2 -1
- data/spec/spec_helper.rb +1 -0
- metadata +48 -131
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use ruby-1.9.2-p290@itrigga-core_ext --create
|
data/Gemfile
CHANGED
@@ -5,19 +5,15 @@ source "http://rubygems.org"
|
|
5
5
|
|
6
6
|
# Add dependencies to develop your gem here.
|
7
7
|
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
gem "fastercsv", ">= 1.5.4"
|
9
|
+
gem "bundler", "~> 1.0.0"
|
10
|
+
|
8
11
|
group :development do
|
9
|
-
gem "rspec", "1.3.0"
|
10
|
-
gem "rspec-rails", "1.3.2"
|
11
|
-
gem "bundler", "~> 1.0.0"
|
12
12
|
gem "jeweler", "~> 1.6.4"
|
13
|
-
gem "rcov", ">= 0"
|
14
|
-
gem "fastercsv", ">= 1.5.4"
|
15
13
|
end
|
16
14
|
|
17
15
|
group :test do
|
18
16
|
gem "rspec", "1.3.0"
|
19
17
|
gem "rspec-rails", "1.3.2"
|
20
|
-
gem
|
21
|
-
gem "rcov", ">= 0"
|
22
|
-
gem "fastercsv", ">= 1.5.4"
|
18
|
+
gem 'test-unit', '1.2.3' # needed by rspec if using ruby 1.9.X
|
23
19
|
end
|
data/Gemfile.lock
CHANGED
@@ -3,17 +3,20 @@ GEM
|
|
3
3
|
specs:
|
4
4
|
fastercsv (1.5.4)
|
5
5
|
git (1.2.5)
|
6
|
+
hoe (2.12.4)
|
7
|
+
rake (~> 0.8)
|
6
8
|
jeweler (1.6.4)
|
7
9
|
bundler (~> 1.0)
|
8
10
|
git (>= 1.2.5)
|
9
11
|
rake
|
10
12
|
rack (1.1.0)
|
11
13
|
rake (0.8.7)
|
12
|
-
rcov (0.9.9)
|
13
14
|
rspec (1.3.0)
|
14
15
|
rspec-rails (1.3.2)
|
15
16
|
rack (>= 1.0.0)
|
16
17
|
rspec (>= 1.3.0)
|
18
|
+
test-unit (1.2.3)
|
19
|
+
hoe (>= 1.5.1)
|
17
20
|
|
18
21
|
PLATFORMS
|
19
22
|
ruby
|
@@ -22,6 +25,6 @@ DEPENDENCIES
|
|
22
25
|
bundler (~> 1.0.0)
|
23
26
|
fastercsv (>= 1.5.4)
|
24
27
|
jeweler (~> 1.6.4)
|
25
|
-
rcov
|
26
28
|
rspec (= 1.3.0)
|
27
29
|
rspec-rails (= 1.3.2)
|
30
|
+
test-unit (= 1.2.3)
|
data/Rakefile
CHANGED
@@ -23,7 +23,7 @@ Jeweler::Tasks.new do |gem|
|
|
23
23
|
- symbolize_keys
|
24
24
|
- recursive_symbolize_keys
|
25
25
|
Array:
|
26
|
-
- to_csv (requires FasterCSV gem)
|
26
|
+
- to_csv (requires FasterCSV gem if ruby 1.8)
|
27
27
|
- select_with_index
|
28
28
|
- to_auto_complete_list
|
29
29
|
- active_record_type_condition_rendering
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
1.0.0
|
data/itrigga-core_ext.gemspec
CHANGED
@@ -4,28 +4,20 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.
|
7
|
+
s.name = "itrigga-core_ext"
|
8
|
+
s.version = "1.0.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Al Davidson", "Anson Kelly"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
|
15
|
-
- symbolize_keys
|
16
|
-
- recursive_symbolize_keys
|
17
|
-
Array:
|
18
|
-
- to_csv (requires FasterCSV gem)
|
19
|
-
- select_with_index
|
20
|
-
- to_auto_complete_list
|
21
|
-
- active_record_type_condition_rendering
|
22
|
-
}
|
23
|
-
s.email = %q{aldavidson@itrigga.com}
|
12
|
+
s.date = "2011-12-07"
|
13
|
+
s.description = "Adds methods for \n Hash: \n - symbolize_keys\n - recursive_symbolize_keys\n Array:\n - to_csv (requires FasterCSV gem if ruby 1.8)\n - select_with_index\n - to_auto_complete_list\n - active_record_type_condition_rendering\n "
|
14
|
+
s.email = "aldavidson@itrigga.com"
|
24
15
|
s.extra_rdoc_files = [
|
25
16
|
"LICENSE.txt",
|
26
17
|
"README.rdoc"
|
27
18
|
]
|
28
19
|
s.files = [
|
20
|
+
".rvmrc",
|
29
21
|
"Gemfile",
|
30
22
|
"Gemfile.lock",
|
31
23
|
"LICENSE.txt",
|
@@ -46,38 +38,28 @@ Gem::Specification.new do |s|
|
|
46
38
|
"spec/spec.opts",
|
47
39
|
"spec/spec_helper.rb"
|
48
40
|
]
|
49
|
-
s.homepage =
|
41
|
+
s.homepage = "http://gems.itrigga.com/trigga-core_ext"
|
50
42
|
s.licenses = ["MIT"]
|
51
43
|
s.require_paths = ["lib", "lib/itrigga", "lib/itrigga"]
|
52
|
-
s.rubygems_version =
|
53
|
-
s.summary =
|
44
|
+
s.rubygems_version = "1.8.10"
|
45
|
+
s.summary = "extensions for core classes Hash, Array"
|
54
46
|
|
55
47
|
if s.respond_to? :specification_version then
|
56
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
57
48
|
s.specification_version = 3
|
58
49
|
|
59
50
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
60
|
-
s.
|
61
|
-
s.
|
62
|
-
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
51
|
+
s.add_runtime_dependency(%q<fastercsv>, [">= 1.5.4"])
|
52
|
+
s.add_runtime_dependency(%q<bundler>, ["~> 1.0.0"])
|
63
53
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
64
|
-
s.add_development_dependency(%q<rcov>, [">= 0"])
|
65
|
-
s.add_development_dependency(%q<fastercsv>, [">= 1.5.4"])
|
66
54
|
else
|
67
|
-
s.add_dependency(%q<
|
68
|
-
s.add_dependency(%q<rspec-rails>, ["= 1.3.2"])
|
55
|
+
s.add_dependency(%q<fastercsv>, [">= 1.5.4"])
|
69
56
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
70
57
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
71
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
72
|
-
s.add_dependency(%q<fastercsv>, [">= 1.5.4"])
|
73
58
|
end
|
74
59
|
else
|
75
|
-
s.add_dependency(%q<
|
76
|
-
s.add_dependency(%q<rspec-rails>, ["= 1.3.2"])
|
60
|
+
s.add_dependency(%q<fastercsv>, [">= 1.5.4"])
|
77
61
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
78
62
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
79
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
80
|
-
s.add_dependency(%q<fastercsv>, [">= 1.5.4"])
|
81
63
|
end
|
82
64
|
end
|
83
65
|
|
data/lib/itrigga/core_ext.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require 'fastercsv' if Gem::Version.new(''+RUBY_VERSION) < Gem::Version.new("1.9.0") # only for ruby 1.8
|
2
3
|
|
3
4
|
class Array
|
4
5
|
|
@@ -7,16 +8,37 @@ class Array
|
|
7
8
|
# each column is described by a label/property pair
|
8
9
|
# eg [["Published","created_at"]] generates a column with label "Published" and the data value being the created_at field
|
9
10
|
#
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
# Because ruby 1.9 includes FasterCSV in the core we should use that if we can
|
12
|
+
def to_csv_with_columns(columns)
|
13
|
+
|
14
|
+
if Gem::Version.new(''+RUBY_VERSION) >= Gem::Version.new("1.9.0")
|
15
|
+
# 1.9 version
|
16
|
+
CSV.generate do |csv|
|
17
|
+
csv << columns.collect{|c| c.to_a.first }
|
18
|
+
self.each do |result|
|
19
|
+
csv << columns.collect{|c| c.to_a.last }.collect{|c| result.send(c) }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
else
|
23
|
+
# 1.8 version
|
24
|
+
FasterCSV.generate do |csv|
|
25
|
+
csv << columns.collect{|c| c.to_a.first }
|
26
|
+
self.each do |result|
|
27
|
+
csv << columns.collect{|c| c.to_a.last }.collect{|c| result.send(c) }
|
28
|
+
end
|
15
29
|
end
|
30
|
+
|
16
31
|
end
|
17
32
|
|
18
33
|
end
|
19
34
|
|
35
|
+
# for backwards compatability
|
36
|
+
# this method gets overritten by to_csv in 1.9 core so will only be used by ruby 1.8 apps
|
37
|
+
# TODO: remove Array.to_csv method when ruby 1.8 no longer needed
|
38
|
+
def to_csv(columns)
|
39
|
+
to_csv_with_columns(columns)
|
40
|
+
end
|
41
|
+
|
20
42
|
|
21
43
|
def select_with_index(&block)
|
22
44
|
selected = []
|
@@ -67,4 +89,4 @@ class Array
|
|
67
89
|
end
|
68
90
|
end
|
69
91
|
|
70
|
-
end
|
92
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
class Hash
|
2
3
|
|
3
4
|
def symbolize_keys!
|
@@ -42,4 +43,15 @@ class Hash
|
|
42
43
|
conds
|
43
44
|
end
|
44
45
|
|
45
|
-
|
46
|
+
|
47
|
+
#
|
48
|
+
# The way bindings work in ruby 1.9+ has changed so add this to work for both
|
49
|
+
# 1.8 and 1.9
|
50
|
+
#
|
51
|
+
def get_binding
|
52
|
+
return binding
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
end
|
data/lib/itrigga/core_ext/nil.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
class String
|
2
3
|
|
3
4
|
def remove_whitespace
|
@@ -21,15 +22,53 @@ class String
|
|
21
22
|
|
22
23
|
def to_active_record_condition
|
23
24
|
"%#{self.trim.gsub(/[[:space:]]+/, '%')}%"
|
24
|
-
end
|
25
25
|
|
26
|
-
|
27
|
-
self !~ /\S/
|
26
|
+
end
|
28
27
|
|
28
|
+
# need to force encoding for ruby 1.9 otherwise regex fails when comparing string of 2 different encodings
|
29
|
+
# TODO : String.blank? - do we need to do force encoding? is UTF-8 a good default?
|
30
|
+
def blank?
|
31
|
+
begin
|
32
|
+
if Gem::Version.new(''+RUBY_VERSION) >= Gem::Version.new("1.9.0") # only for ruby 1.9+
|
33
|
+
self.dup.force_encoding("UTF-8") !~ /\S/
|
34
|
+
else
|
35
|
+
self !~ /\S/
|
36
|
+
end
|
29
37
|
rescue ArgumentError => e
|
30
38
|
if e.message =~ /^(invalid\ byte\ sequence|incompatible\ character\ encodings)/
|
31
39
|
empty?
|
32
40
|
else
|
33
41
|
raise e
|
34
|
-
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# converts the encoding to UTF-8 regardless of current encoding
|
47
|
+
def to_utf8
|
48
|
+
text = self.dup
|
49
|
+
# shiny new ruby 1.9 way
|
50
|
+
return text if text.encoding.name == "UTF-8" && text.valid_encoding? # already utf-8 yay!
|
51
|
+
|
52
|
+
encodings = [
|
53
|
+
"UTF-8",
|
54
|
+
"ISO-8859-1",
|
55
|
+
"UTF-16BE",
|
56
|
+
"UTF-16LE",
|
57
|
+
"UTF-32BE",
|
58
|
+
"UTF-32LE",
|
59
|
+
"Windows-1251",
|
60
|
+
"UTF-7",
|
61
|
+
"US-ASCII",
|
62
|
+
"ASCII-8BIT"
|
63
|
+
]
|
64
|
+
|
65
|
+
encodings.each do |encoding|
|
66
|
+
if (text.force_encoding(encoding).valid_encoding? rescue false)
|
67
|
+
return text.force_encoding(encoding).encode("UTF-8")
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# ok so we are out of suggestions. Just return the string and hope that its ok
|
72
|
+
text
|
73
|
+
|
35
74
|
end
|
36
75
|
|
37
|
-
end
|
76
|
+
end
|
data/spec/hash_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,135 +1,61 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: itrigga-core_ext
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 0
|
10
|
-
segments_generated: true
|
11
|
-
version: 0.3.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
12
6
|
platform: ruby
|
13
|
-
authors:
|
7
|
+
authors:
|
14
8
|
- Al Davidson
|
15
9
|
- Anson Kelly
|
16
10
|
autorequire:
|
17
11
|
bindir: bin
|
18
12
|
cert_chain: []
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
prerelease: false
|
25
|
-
name: rspec
|
26
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
27
|
-
none: false
|
28
|
-
requirements:
|
29
|
-
- - "="
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
hash: 27
|
32
|
-
segments:
|
33
|
-
- 1
|
34
|
-
- 3
|
35
|
-
- 0
|
36
|
-
segments_generated: true
|
37
|
-
version: 1.3.0
|
38
|
-
requirement: *id001
|
39
|
-
type: :development
|
40
|
-
- !ruby/object:Gem::Dependency
|
41
|
-
prerelease: false
|
42
|
-
name: rspec-rails
|
43
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
13
|
+
date: 2011-12-07 00:00:00.000000000Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: fastercsv
|
17
|
+
requirement: &76326950 !ruby/object:Gem::Requirement
|
44
18
|
none: false
|
45
|
-
requirements:
|
46
|
-
- -
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
|
49
|
-
|
50
|
-
- 1
|
51
|
-
- 3
|
52
|
-
- 2
|
53
|
-
segments_generated: true
|
54
|
-
version: 1.3.2
|
55
|
-
requirement: *id002
|
56
|
-
type: :development
|
57
|
-
- !ruby/object:Gem::Dependency
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.5.4
|
23
|
+
type: :runtime
|
58
24
|
prerelease: false
|
25
|
+
version_requirements: *76326950
|
26
|
+
- !ruby/object:Gem::Dependency
|
59
27
|
name: bundler
|
60
|
-
|
28
|
+
requirement: &76326710 !ruby/object:Gem::Requirement
|
61
29
|
none: false
|
62
|
-
requirements:
|
30
|
+
requirements:
|
63
31
|
- - ~>
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
hash: 23
|
66
|
-
segments:
|
67
|
-
- 1
|
68
|
-
- 0
|
69
|
-
- 0
|
70
|
-
segments_generated: true
|
32
|
+
- !ruby/object:Gem::Version
|
71
33
|
version: 1.0.0
|
72
|
-
|
73
|
-
type: :development
|
74
|
-
- !ruby/object:Gem::Dependency
|
34
|
+
type: :runtime
|
75
35
|
prerelease: false
|
36
|
+
version_requirements: *76326710
|
37
|
+
- !ruby/object:Gem::Dependency
|
76
38
|
name: jeweler
|
77
|
-
|
39
|
+
requirement: &76326470 !ruby/object:Gem::Requirement
|
78
40
|
none: false
|
79
|
-
requirements:
|
41
|
+
requirements:
|
80
42
|
- - ~>
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
hash: 7
|
83
|
-
segments:
|
84
|
-
- 1
|
85
|
-
- 6
|
86
|
-
- 4
|
87
|
-
segments_generated: true
|
43
|
+
- !ruby/object:Gem::Version
|
88
44
|
version: 1.6.4
|
89
|
-
requirement: *id004
|
90
45
|
type: :development
|
91
|
-
- !ruby/object:Gem::Dependency
|
92
46
|
prerelease: false
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
- - ">="
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
hash: 3
|
100
|
-
segments:
|
101
|
-
- 0
|
102
|
-
segments_generated: true
|
103
|
-
version: "0"
|
104
|
-
requirement: *id005
|
105
|
-
type: :development
|
106
|
-
- !ruby/object:Gem::Dependency
|
107
|
-
prerelease: false
|
108
|
-
name: fastercsv
|
109
|
-
version_requirements: &id006 !ruby/object:Gem::Requirement
|
110
|
-
none: false
|
111
|
-
requirements:
|
112
|
-
- - ">="
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
hash: 11
|
115
|
-
segments:
|
116
|
-
- 1
|
117
|
-
- 5
|
118
|
-
- 4
|
119
|
-
segments_generated: true
|
120
|
-
version: 1.5.4
|
121
|
-
requirement: *id006
|
122
|
-
type: :development
|
123
|
-
description: "Adds methods for \n Hash: \n - symbolize_keys\n - recursive_symbolize_keys\n Array:\n - to_csv (requires FasterCSV gem)\n - select_with_index\n - to_auto_complete_list\n - active_record_type_condition_rendering\n "
|
47
|
+
version_requirements: *76326470
|
48
|
+
description: ! "Adds methods for \n Hash: \n - symbolize_keys\n - recursive_symbolize_keys\n
|
49
|
+
\ Array:\n - to_csv (requires FasterCSV gem if ruby 1.8)\n - select_with_index\n
|
50
|
+
\ - to_auto_complete_list\n - active_record_type_condition_rendering\n "
|
124
51
|
email: aldavidson@itrigga.com
|
125
52
|
executables: []
|
126
|
-
|
127
53
|
extensions: []
|
128
|
-
|
129
|
-
extra_rdoc_files:
|
54
|
+
extra_rdoc_files:
|
130
55
|
- LICENSE.txt
|
131
56
|
- README.rdoc
|
132
|
-
files:
|
57
|
+
files:
|
58
|
+
- .rvmrc
|
133
59
|
- Gemfile
|
134
60
|
- Gemfile.lock
|
135
61
|
- LICENSE.txt
|
@@ -149,43 +75,34 @@ files:
|
|
149
75
|
- spec/hash_spec.rb
|
150
76
|
- spec/spec.opts
|
151
77
|
- spec/spec_helper.rb
|
152
|
-
has_rdoc: true
|
153
78
|
homepage: http://gems.itrigga.com/trigga-core_ext
|
154
|
-
licenses:
|
79
|
+
licenses:
|
155
80
|
- MIT
|
156
81
|
post_install_message:
|
157
82
|
rdoc_options: []
|
158
|
-
|
159
|
-
require_paths:
|
83
|
+
require_paths:
|
160
84
|
- lib
|
161
85
|
- lib/itrigga
|
162
86
|
- lib/itrigga
|
163
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
164
88
|
none: false
|
165
|
-
requirements:
|
166
|
-
- -
|
167
|
-
- !ruby/object:Gem::Version
|
168
|
-
|
169
|
-
segments:
|
89
|
+
requirements:
|
90
|
+
- - ! '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
segments:
|
170
94
|
- 0
|
171
|
-
|
172
|
-
|
173
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
|
+
hash: -124005361
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
97
|
none: false
|
175
|
-
requirements:
|
176
|
-
- -
|
177
|
-
- !ruby/object:Gem::Version
|
178
|
-
|
179
|
-
segments:
|
180
|
-
- 0
|
181
|
-
segments_generated: true
|
182
|
-
version: "0"
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
183
102
|
requirements: []
|
184
|
-
|
185
103
|
rubyforge_project:
|
186
|
-
rubygems_version: 1.
|
104
|
+
rubygems_version: 1.8.10
|
187
105
|
signing_key:
|
188
106
|
specification_version: 3
|
189
107
|
summary: extensions for core classes Hash, Array
|
190
108
|
test_files: []
|
191
|
-
|