flash_extensions 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
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