flash_extensions 3.0.0 → 3.1.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.
- checksums.yaml +4 -4
- data/README.md +63 -9
- data/flash_extensions.gemspec +2 -2
- data/lib/flash_extensions/extensions/enumerable_extension.rb +50 -5
- data/lib/flash_extensions/version.rb +1 -1
- data/spec/lib/enumerable_extension_spec.rb +97 -18
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 229c104e7e71c8cfad52dfdaa45cad36e08cb883
|
4
|
+
data.tar.gz: 29eff6d52d6c7e47aa890ddd049f1e438d22bf7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30ee2e9968417e5e148f518bc4356eebf0a1b6b14336eb627c1b0b0d04c34a89ef16eb89fd0f253f0dc2c35fbdeacf916f2b69d6f2b427465f5c6be86d5691e0
|
7
|
+
data.tar.gz: 9d0ea5d0c42ff3ae27f24603b2a73003631ef6e5c99696dcea6262ad45531ee793b36b3cb5c3c9caf93172f3e40ea8b71a2ca9c891b71d020d4216b86ae41cb3
|
data/README.md
CHANGED
@@ -57,15 +57,6 @@ Use the `remove_last` method removes the last element from an array. Like Array.
|
|
57
57
|
|
58
58
|
### EnumerableExtensions
|
59
59
|
|
60
|
-
####Average:####
|
61
|
-
Use the `average` method to return the average of a collection of numbers.
|
62
|
-
|
63
|
-
```ruby
|
64
|
-
[1,2,3].average #=> 2
|
65
|
-
[].average #=> 0
|
66
|
-
[].average(nil) #=> nil
|
67
|
-
```
|
68
|
-
|
69
60
|
####Drop Last:####
|
70
61
|
Use the `drop_last` method to drops the last number of elements of a collection.
|
71
62
|
|
@@ -91,6 +82,69 @@ Use the `excatly?` method to return if there are exactly the number of an elemen
|
|
91
82
|
[].exactly?(1) #=> false
|
92
83
|
```
|
93
84
|
|
85
|
+
####Frequencies:####
|
86
|
+
Use the `frequencies` method to return a hash of the number of times a value in an array appears.
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
[1, :symbol, 'string', 3, :symbol, 1].frequencies #=> { 1 => 2, :symbol => 2, 'string' => 1, 3 => 1 }
|
90
|
+
[].frequencies #=> {}
|
91
|
+
```
|
92
|
+
####Max:####
|
93
|
+
Use the `max` method to return the largest value of a collection of numbers.
|
94
|
+
|
95
|
+
```ruby
|
96
|
+
[2,3,1].max #=> 3
|
97
|
+
[].max #=> 0
|
98
|
+
[].max(nil) #=> nil
|
99
|
+
```
|
100
|
+
|
101
|
+
####Min:####
|
102
|
+
Use the `min` method to return the smallest value of a collection of numbers.
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
[2,3,1].min #=> 3
|
106
|
+
[].min #=> 0
|
107
|
+
[].min(nil) #=> nil
|
108
|
+
```
|
109
|
+
|
110
|
+
####Mean:####
|
111
|
+
Use the `mean` method to return the average of a collection of numbers.
|
112
|
+
|
113
|
+
```ruby
|
114
|
+
[1,2,3].mean #=> 2
|
115
|
+
[].mean #=> 0
|
116
|
+
[].mean(nil) #=> nil
|
117
|
+
```
|
118
|
+
|
119
|
+
####Median:####
|
120
|
+
Use the `median` method to return the middle value of a collection of numbers.
|
121
|
+
|
122
|
+
```ruby
|
123
|
+
[1,2,6].median #=> 2
|
124
|
+
[1,2,3,6].median #=> 2.5
|
125
|
+
[].median #=> 0
|
126
|
+
[].median(nil) #=> nil
|
127
|
+
```
|
128
|
+
|
129
|
+
####Mode:####
|
130
|
+
Use the `mode` method to return the most frequent value of a collection of numbers.
|
131
|
+
|
132
|
+
```ruby
|
133
|
+
[1,1,2,46].mode #=> 1
|
134
|
+
[1,2,3].mode #=> nil
|
135
|
+
[].mode #=> 0
|
136
|
+
[].mode(nil) #=> nil
|
137
|
+
```
|
138
|
+
|
139
|
+
####Range:####
|
140
|
+
Use the `range` method to return the difference between the smallest and largest value of a collection of numbers.
|
141
|
+
|
142
|
+
```ruby
|
143
|
+
[1,2,6].range #=> 5
|
144
|
+
[].range #=> 0
|
145
|
+
[].range(nil) #=> nil
|
146
|
+
```
|
147
|
+
|
94
148
|
####Several:####
|
95
149
|
Use the `several?` method to return if there are several types of an element.
|
96
150
|
|
data/flash_extensions.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
22
22
|
spec.add_development_dependency "coveralls"
|
23
23
|
spec.add_development_dependency "rake"
|
24
|
-
spec.add_development_dependency "rspec", "~> 3.
|
24
|
+
spec.add_development_dependency "rspec", "~> 3.1.0"
|
25
25
|
end
|
@@ -6,11 +6,6 @@ module Enumerable
|
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
def average(identity=0)
|
10
|
-
collection_size = to_a.size
|
11
|
-
collection_size > 0 ? inject(&:+) / collection_size.to_f : identity
|
12
|
-
end
|
13
|
-
|
14
9
|
def drop_last(n)
|
15
10
|
array = to_a
|
16
11
|
|
@@ -53,6 +48,56 @@ module Enumerable
|
|
53
48
|
each_with_object(Hash.new(0)) { |e, a| a[e] += 1 }
|
54
49
|
end
|
55
50
|
|
51
|
+
def max(identity=0)
|
52
|
+
size > 0 ? sort.last : identity
|
53
|
+
end
|
54
|
+
|
55
|
+
def min(identity=0)
|
56
|
+
size > 0 ? sort.first : identity
|
57
|
+
end
|
58
|
+
|
59
|
+
def mean(identity=0)
|
60
|
+
collection_size = size
|
61
|
+
collection_size > 0 ? inject(&:+) / collection_size.to_f : identity
|
62
|
+
end
|
63
|
+
|
64
|
+
def median(identity=0)
|
65
|
+
collection_size = size
|
66
|
+
collection_sorted = sort
|
67
|
+
|
68
|
+
if collection_size > 0
|
69
|
+
if collection_size % 2 == 0
|
70
|
+
(collection_sorted[(collection_size / 2) -1] + collection_sorted[collection_size / 2]) / 2.0
|
71
|
+
else
|
72
|
+
collection_sorted[collection_size / 2]
|
73
|
+
end
|
74
|
+
else
|
75
|
+
identity
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def mode(identity=0)
|
80
|
+
if size > 0
|
81
|
+
frequency_distribution = inject(Hash.new(0)) { |h, v| h[v] += 1; h }
|
82
|
+
top_2 = frequency_distribution.sort { |a, b| b[1] <=> a[1] }.take(2)
|
83
|
+
|
84
|
+
if top_2.length == 1
|
85
|
+
top_2.first.first
|
86
|
+
elsif top_2.first.last == top_2.last.last
|
87
|
+
nil
|
88
|
+
else
|
89
|
+
top_2.first.first
|
90
|
+
end
|
91
|
+
else
|
92
|
+
identity
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def range(identity=0)
|
97
|
+
collection_sorted = sort
|
98
|
+
size > 0 ? collection_sorted.last - collection_sorted.first : identity
|
99
|
+
end
|
100
|
+
|
56
101
|
def several?
|
57
102
|
found_count = 0
|
58
103
|
|
@@ -2,24 +2,6 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Enumerable do
|
4
4
|
|
5
|
-
describe "#average" do
|
6
|
-
it "to be 0" do
|
7
|
-
expect([].average).to eq(0)
|
8
|
-
end
|
9
|
-
|
10
|
-
it "to be nil" do
|
11
|
-
expect([].average(nil)).to eq(nil)
|
12
|
-
end
|
13
|
-
|
14
|
-
it "to be 2" do
|
15
|
-
expect([1, 2, 3].average).to eq(2)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "to be 2.5" do
|
19
|
-
expect([1, 2, 3, 4].average).to eq(2.5)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
5
|
describe "#drop_last" do
|
24
6
|
it "to be [2, 3]" do
|
25
7
|
expect([1, 2, 3].drop_last(1)).to eq([1, 2])
|
@@ -66,6 +48,103 @@ describe Enumerable do
|
|
66
48
|
end
|
67
49
|
end
|
68
50
|
|
51
|
+
describe "#max" do
|
52
|
+
it "to be 0" do
|
53
|
+
expect([].max).to eq(0)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "to be nil" do
|
57
|
+
expect([].max(nil)).to eq(nil)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "to be 3" do
|
61
|
+
expect([2, 3, 1].max).to eq(3)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "#min" do
|
66
|
+
it "to be 0" do
|
67
|
+
expect([].min).to eq(0)
|
68
|
+
end
|
69
|
+
|
70
|
+
it "to be nil" do
|
71
|
+
expect([].min(nil)).to eq(nil)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "to be 3" do
|
75
|
+
expect([2, 3, 1].min).to eq(1)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "#mean" do
|
80
|
+
it "to be 0" do
|
81
|
+
expect([].mean).to eq(0)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "to be nil" do
|
85
|
+
expect([].mean(nil)).to eq(nil)
|
86
|
+
end
|
87
|
+
|
88
|
+
it "to be 2" do
|
89
|
+
expect([1, 2, 3].mean).to eq(2)
|
90
|
+
end
|
91
|
+
|
92
|
+
it "to be 2.5" do
|
93
|
+
expect([1, 2, 3, 4].mean).to eq(2.5)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe '#median' do
|
98
|
+
it 'to be 0' do
|
99
|
+
expect([].median).to eq(0)
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'to be nil' do
|
103
|
+
expect([].median(nil)).to eq(nil)
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'to be 2' do
|
107
|
+
expect([1,2,6].median).to eq(2)
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'to be 2.5' do
|
111
|
+
expect([1,2,3,6].median).to eq(2.5)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe '#mode' do
|
116
|
+
it 'to be 0' do
|
117
|
+
expect([].mode).to eq(0)
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'to be nil' do
|
121
|
+
expect([].mode(nil)).to eq(nil)
|
122
|
+
expect([1,2,3].mode).to eq(nil)
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'to be 1' do
|
126
|
+
expect([1,1,2,46].mode).to eq(1)
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'to be 3.5' do
|
130
|
+
expect([3.5].mode).to eq(3.5)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe '#range' do
|
135
|
+
it 'to be 0' do
|
136
|
+
expect([].range).to eq(0)
|
137
|
+
end
|
138
|
+
|
139
|
+
it 'to be nil' do
|
140
|
+
expect([].range(nil)).to eq(nil)
|
141
|
+
end
|
142
|
+
|
143
|
+
it 'to be 5' do
|
144
|
+
expect([1,2,6].range).to eq(5)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
69
148
|
describe "#several?" do
|
70
149
|
it "to be true" do
|
71
150
|
expect([1, 2, 3].several?).to eq(true)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flash_extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Gomez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.6'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: coveralls
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 3.
|
61
|
+
version: 3.1.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 3.
|
68
|
+
version: 3.1.0
|
69
69
|
description: Class extensions of commonly used object helpers.
|
70
70
|
email:
|
71
71
|
- j.gomez@drexed.com
|
@@ -119,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
119
|
version: '0'
|
120
120
|
requirements: []
|
121
121
|
rubyforge_project:
|
122
|
-
rubygems_version: 2.4.
|
122
|
+
rubygems_version: 2.4.2
|
123
123
|
signing_key:
|
124
124
|
specification_version: 4
|
125
125
|
summary: Commonly used object helpers
|