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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7455deab1af47127d78e60d860746fb77b069e3b
4
- data.tar.gz: 2ffbf14a2ffd107255b51235b7a573e2009c52f5
3
+ metadata.gz: 229c104e7e71c8cfad52dfdaa45cad36e08cb883
4
+ data.tar.gz: 29eff6d52d6c7e47aa890ddd049f1e438d22bf7f
5
5
  SHA512:
6
- metadata.gz: 502975d2310a0ceb9c473c3fc90f3745ab1f8a1eb7e8a88a4a9deee85499ef01662fa593398d1a8517d908bfc262960617777f0409d935bf65197d0953e92835
7
- data.tar.gz: fec59ac5db5027a705817e34eeb9120fbc19b840a452be91081758e68e20823fde2639723a7d0886673747a2fa29adefc29e85b22528cf8c5c45dc7220d9c932
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
 
@@ -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.5"
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.0.0"
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
 
@@ -1,3 +1,3 @@
1
1
  module FlashExtensions
2
- VERSION = "3.0.0"
2
+ VERSION = "3.1.0"
3
3
  end
@@ -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.0.0
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-09-06 00:00:00.000000000 Z
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.5'
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.5'
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.0.0
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.0.0
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.1
122
+ rubygems_version: 2.4.2
123
123
  signing_key:
124
124
  specification_version: 4
125
125
  summary: Commonly used object helpers