more_core_extensions 1.1.2 → 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/lib/more_core_extensions/all.rb +2 -0
- data/lib/more_core_extensions/core_ext/array/duplicates.rb +3 -1
- data/lib/more_core_extensions/core_ext/array/element_counts.rb +12 -0
- data/lib/more_core_extensions/core_ext/array.rb +1 -0
- data/lib/more_core_extensions/core_ext/module/namespace.rb +13 -0
- data/lib/more_core_extensions/core_ext/module.rb +1 -0
- data/lib/more_core_extensions/core_ext/object/namespace.rb +27 -0
- data/lib/more_core_extensions/core_ext/object.rb +1 -0
- data/lib/more_core_extensions/version.rb +1 -1
- data/spec/core_ext/array/element_counts_spec.rb +10 -0
- data/spec/core_ext/object/namespace_spec.rb +46 -0
- metadata +13 -4
|
@@ -2,4 +2,6 @@ require 'more_core_extensions/version'
|
|
|
2
2
|
|
|
3
3
|
require 'more_core_extensions/core_ext/array'
|
|
4
4
|
require 'more_core_extensions/core_ext/hash'
|
|
5
|
+
require 'more_core_extensions/core_ext/module'
|
|
6
|
+
require 'more_core_extensions/core_ext/object'
|
|
5
7
|
require 'more_core_extensions/core_ext/string'
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'more_core_extensions/core_ext/array/element_counts'
|
|
2
|
+
|
|
1
3
|
module MoreCoreExtensions
|
|
2
4
|
module ArrayDuplicates
|
|
3
5
|
#
|
|
@@ -5,7 +7,7 @@ module MoreCoreExtensions
|
|
|
5
7
|
#
|
|
6
8
|
# [1, 2, 3, 4, 2, 4].duplicates #=> [2, 4]
|
|
7
9
|
def duplicates
|
|
8
|
-
|
|
10
|
+
element_counts.reject { |k, v| v == 1 }.keys
|
|
9
11
|
end
|
|
10
12
|
end
|
|
11
13
|
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module MoreCoreExtensions
|
|
2
|
+
module ArrayElementCounts
|
|
3
|
+
# Returns a Hash of each element to the count of those elements.
|
|
4
|
+
#
|
|
5
|
+
# [1, 2, 3, 1, 3, 1].counts # => {1 => 3, 2 => 1, 3 => 2}
|
|
6
|
+
def element_counts
|
|
7
|
+
each_with_object(Hash.new(0)) { |i, h| h[i] += 1 }
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
Array.send(:include, MoreCoreExtensions::ArrayElementCounts)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'more_core_extensions/core_ext/array/deletes'
|
|
2
2
|
require 'more_core_extensions/core_ext/array/duplicates'
|
|
3
|
+
require 'more_core_extensions/core_ext/array/element_counts'
|
|
3
4
|
require 'more_core_extensions/core_ext/array/inclusions'
|
|
4
5
|
require 'more_core_extensions/core_ext/array/nested'
|
|
5
6
|
require 'more_core_extensions/core_ext/array/random'
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module MoreCoreExtensions
|
|
2
|
+
module ModuleNamespace
|
|
3
|
+
#
|
|
4
|
+
# Returns an Array with the namespace to the current Module.
|
|
5
|
+
#
|
|
6
|
+
# Aaa::Bbb::Ccc::Ddd.namespace #=> ["Aaa", "Bbb", "Ccc", "Ddd"]
|
|
7
|
+
def namespace
|
|
8
|
+
name.to_s.split("::")
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
Module.send(:include, MoreCoreExtensions::ModuleNamespace)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'more_core_extensions/core_ext/module/namespace'
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'more_core_extensions/core_ext/module/namespace'
|
|
2
|
+
|
|
3
|
+
module MoreCoreExtensions
|
|
4
|
+
module ObjectNamespace
|
|
5
|
+
#
|
|
6
|
+
# Returns whether or not the object is in the given namespace.
|
|
7
|
+
#
|
|
8
|
+
# Aaa::Bbb::Ccc::Ddd.in_namespace?(Aaa::Bbb) #=> true
|
|
9
|
+
# Aaa::Bbb::Ccc::Ddd.new.in_namespace?(Aaa::Bbb) #=> true
|
|
10
|
+
# Aaa::Bbb::Ccc::Eee.in_namespace?("Aaa::Bbb") #=> true
|
|
11
|
+
# Aaa::Bbb::Ccc::Eee.in_namespace?(Aaa::Bbb::Ccc::Ddd) #=> false
|
|
12
|
+
def in_namespace?(val)
|
|
13
|
+
val_ns = val.to_s.split("::")
|
|
14
|
+
val_ns == namespace[0, val_ns.length]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
#
|
|
18
|
+
# Returns an Array with the namespace to an Instance.
|
|
19
|
+
#
|
|
20
|
+
# Aaa::Bbb::Ccc::Ddd.new.namespace #=> ["Aaa", "Bbb", "Ccc", "Ddd"]
|
|
21
|
+
def namespace
|
|
22
|
+
self.class.namespace
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
Object.send(:include, MoreCoreExtensions::ObjectNamespace)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'more_core_extensions/core_ext/object/namespace'
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Array do
|
|
4
|
+
it "#element_counts" do
|
|
5
|
+
[].element_counts.should == {}
|
|
6
|
+
[1].element_counts.should == {1 => 1}
|
|
7
|
+
[nil].element_counts.should == {nil => 1}
|
|
8
|
+
[1, 2, 3, 1, 3, 1].element_counts.should == {1 => 3, 2 => 1, 3 => 2}
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Class do
|
|
4
|
+
before do
|
|
5
|
+
module Aaa
|
|
6
|
+
module Bbb
|
|
7
|
+
module Ccc
|
|
8
|
+
class Ddd; end
|
|
9
|
+
module Eee; end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
context "in_namespace?" do
|
|
16
|
+
it "Class in Module" do
|
|
17
|
+
Aaa::Bbb::Ccc::Ddd.in_namespace?(Aaa::Bbb).should be_true
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "Module in Module" do
|
|
21
|
+
Aaa::Bbb::Ccc::Eee.in_namespace?("Aaa::Bbb").should be_true
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "Instance of Class" do
|
|
25
|
+
Aaa::Bbb::Ccc::Ddd.new.in_namespace?(Aaa::Bbb).should be_true
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "Not in namespace" do
|
|
29
|
+
Aaa::Bbb::Ccc::Eee.in_namespace?(Aaa::Bbb::Ccc::Ddd).should be_false
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
context "namespace" do
|
|
34
|
+
it "Class in Module" do
|
|
35
|
+
expect(Aaa::Bbb::Ccc::Ddd.namespace).to eq(["Aaa", "Bbb", "Ccc", "Ddd"])
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "Module in Module" do
|
|
39
|
+
expect(Aaa::Bbb::Ccc::Eee.namespace).to eq(["Aaa", "Bbb", "Ccc", "Eee"])
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "Instance of a Class" do
|
|
43
|
+
expect(Aaa::Bbb::Ccc::Ddd.new.namespace).to eq(["Aaa", "Bbb", "Ccc", "Ddd"])
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: more_core_extensions
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2014-01-22 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bundler
|
|
@@ -111,6 +111,7 @@ files:
|
|
|
111
111
|
- lib/more_core_extensions/core_ext/array.rb
|
|
112
112
|
- lib/more_core_extensions/core_ext/array/deletes.rb
|
|
113
113
|
- lib/more_core_extensions/core_ext/array/duplicates.rb
|
|
114
|
+
- lib/more_core_extensions/core_ext/array/element_counts.rb
|
|
114
115
|
- lib/more_core_extensions/core_ext/array/inclusions.rb
|
|
115
116
|
- lib/more_core_extensions/core_ext/array/nested.rb
|
|
116
117
|
- lib/more_core_extensions/core_ext/array/random.rb
|
|
@@ -119,6 +120,10 @@ files:
|
|
|
119
120
|
- lib/more_core_extensions/core_ext/hash.rb
|
|
120
121
|
- lib/more_core_extensions/core_ext/hash/deletes.rb
|
|
121
122
|
- lib/more_core_extensions/core_ext/hash/nested.rb
|
|
123
|
+
- lib/more_core_extensions/core_ext/module.rb
|
|
124
|
+
- lib/more_core_extensions/core_ext/module/namespace.rb
|
|
125
|
+
- lib/more_core_extensions/core_ext/object.rb
|
|
126
|
+
- lib/more_core_extensions/core_ext/object/namespace.rb
|
|
122
127
|
- lib/more_core_extensions/core_ext/shared/nested.rb
|
|
123
128
|
- lib/more_core_extensions/core_ext/string.rb
|
|
124
129
|
- lib/more_core_extensions/core_ext/string/formats.rb
|
|
@@ -127,6 +132,7 @@ files:
|
|
|
127
132
|
- more_core_extensions.gemspec
|
|
128
133
|
- spec/core_ext/array/deletes_spec.rb
|
|
129
134
|
- spec/core_ext/array/duplicates_spec.rb
|
|
135
|
+
- spec/core_ext/array/element_counts_spec.rb
|
|
130
136
|
- spec/core_ext/array/inclusions_spec.rb
|
|
131
137
|
- spec/core_ext/array/nested_spec.rb
|
|
132
138
|
- spec/core_ext/array/random_spec.rb
|
|
@@ -134,6 +140,7 @@ files:
|
|
|
134
140
|
- spec/core_ext/array/tableize_spec.rb
|
|
135
141
|
- spec/core_ext/hash/deletes_spec.rb
|
|
136
142
|
- spec/core_ext/hash/nested_spec.rb
|
|
143
|
+
- spec/core_ext/object/namespace_spec.rb
|
|
137
144
|
- spec/core_ext/string/formats_spec.rb
|
|
138
145
|
- spec/core_ext/string/hex_dump_spec.rb
|
|
139
146
|
- spec/spec_helper.rb
|
|
@@ -152,7 +159,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
152
159
|
version: '0'
|
|
153
160
|
segments:
|
|
154
161
|
- 0
|
|
155
|
-
hash:
|
|
162
|
+
hash: -2354551733193230348
|
|
156
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
164
|
none: false
|
|
158
165
|
requirements:
|
|
@@ -161,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
161
168
|
version: '0'
|
|
162
169
|
segments:
|
|
163
170
|
- 0
|
|
164
|
-
hash:
|
|
171
|
+
hash: -2354551733193230348
|
|
165
172
|
requirements: []
|
|
166
173
|
rubyforge_project:
|
|
167
174
|
rubygems_version: 1.8.23
|
|
@@ -172,6 +179,7 @@ summary: MoreCoreExtensions are a set of core extensions beyond those provided b
|
|
|
172
179
|
test_files:
|
|
173
180
|
- spec/core_ext/array/deletes_spec.rb
|
|
174
181
|
- spec/core_ext/array/duplicates_spec.rb
|
|
182
|
+
- spec/core_ext/array/element_counts_spec.rb
|
|
175
183
|
- spec/core_ext/array/inclusions_spec.rb
|
|
176
184
|
- spec/core_ext/array/nested_spec.rb
|
|
177
185
|
- spec/core_ext/array/random_spec.rb
|
|
@@ -179,6 +187,7 @@ test_files:
|
|
|
179
187
|
- spec/core_ext/array/tableize_spec.rb
|
|
180
188
|
- spec/core_ext/hash/deletes_spec.rb
|
|
181
189
|
- spec/core_ext/hash/nested_spec.rb
|
|
190
|
+
- spec/core_ext/object/namespace_spec.rb
|
|
182
191
|
- spec/core_ext/string/formats_spec.rb
|
|
183
192
|
- spec/core_ext/string/hex_dump_spec.rb
|
|
184
193
|
- spec/spec_helper.rb
|