nobiru 0.0.1 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6c407b104d05c31a2d377952f3058e5d1f960c30
4
- data.tar.gz: 70d85fb387eef1e3c564a9bbdf4f4a51819ce4e2
3
+ metadata.gz: 70c345d373e4f0f14a2e40aee818e2d1e28a6f4f
4
+ data.tar.gz: 0ce183109d6578d588518b3124befaad51c87d74
5
5
  SHA512:
6
- metadata.gz: c86e86eb57497bf5a4e82b9e2b7fce4edf37921dd8dc0c673d143d7b67e23377dfbf6c2f8670efc7e39194b12186e23e371c17dc8018f29fabbbb7f8b86570cf
7
- data.tar.gz: 232553a7408de75c317c0062cbc0c4d21dd74e37f147e601b219597ac143db098937e7ddbf97ede793209201001320ce505f107d422feaa040bf2b30c3a1e578
6
+ metadata.gz: 0f1f89c481901ccdcbc62fc347e15644208254d908cfdc1f91061745eb531224b78140108243a0b03b2163b3a5f201412ba855696f50c0c3ef149bf499477a7f
7
+ data.tar.gz: 1d0e43867268bad43ba45303bc16ae02b48c13a69779eb17761604e11da391b56feda1d96246640ee042545c3f293d6161e289df293deffd29b8ff2838dadf20
data/README.md CHANGED
@@ -3,9 +3,8 @@
3
3
  [![Gem Version](https://badge.fury.io/rb/nobiru.svg)](http://badge.fury.io/rb/nobiru)
4
4
  [![Build Status](https://travis-ci.org/drexed/nobiru.svg?branch=master)](https://travis-ci.org/drexed/nobiru)
5
5
  [![Coverage Status](https://coveralls.io/repos/drexed/nobiru/badge.png)](https://coveralls.io/r/drexed/nobiru)
6
- [![Code Climate](https://codeclimate.com/github/drexed/nobiru.png)](https://codeclimate.com/github/drexed/nobiru)
7
6
 
8
- Nobiru is a collection of commonly used object helpers in a ruby based project. It currently includes extensions for: arrays, enumerables, hashes, numerics, objects, strings, and time.
7
+ Nobiru (japanese: extend) is a collection of commonly used object helpers in a ruby based project. It currently includes extensions for: arrays, enumerables, hashes, numerics, objects, strings, and time.
9
8
 
10
9
  `Rails Safe` = methods extracted from rails but that do not override that rails method.
11
10
 
@@ -57,6 +56,23 @@ Use the `remove_last` method removes the last element from an array. Like Array.
57
56
 
58
57
  ### EnumerableExtensions
59
58
 
59
+ ####Difference:####
60
+ Use the `difference` method to return the difference of a collection of numbers.
61
+
62
+ ```ruby
63
+ [1,2,3].difference #=> -4
64
+ [].difference #=> 0
65
+ [].difference(nil) #=> nil
66
+ ```
67
+
68
+ Use the `divisible` method to return the division of a collection of numbers.
69
+
70
+ ```ruby
71
+ [16,4,2].divisible #=> 2
72
+ [].divisible #=> 0
73
+ [].divisible(nil) #=> nil
74
+ ```
75
+
60
76
  ####Drop Last:####
61
77
  Use the `drop_last` method to drops the last number of elements of a collection.
62
78
 
@@ -82,6 +98,14 @@ Use the `exactly?` method to return if there are exactly the number of an elemen
82
98
  [].exactly?(1) #=> false
83
99
  ```
84
100
 
101
+ Use the `exponential` method to return the exponential of a collection of numbers.
102
+
103
+ ```ruby
104
+ [2,3,4].exponential #=> 4096
105
+ [].exponential #=> 0
106
+ [].exponential(nil) #=> nil
107
+ ```
108
+
85
109
  ####Frequencies:####
86
110
  Use the `frequencies` method to return a hash of the number of times a value in an array appears.
87
111
 
@@ -130,12 +154,20 @@ Use the `median` method to return the middle value of a collection of numbers.
130
154
  Use the `mode` method to return the most frequent value of a collection of numbers.
131
155
 
132
156
  ```ruby
133
- [1,1,2,46].mode #=> 1
157
+ [1,1,2,6].mode #=> 1
134
158
  [1,2,3].mode #=> nil
135
159
  [].mode #=> 0
136
160
  [].mode(nil) #=> nil
137
161
  ```
138
162
 
163
+ Use the `multiple` method to return the multiplication of a collection of numbers.
164
+
165
+ ```ruby
166
+ [1,2,3].multiple #=> 6
167
+ [].multiple #=> 0
168
+ [].multiple(nil) #=> nil
169
+ ```
170
+
139
171
  ####Range:####
140
172
  Use the `range` method to return the difference between the smallest and largest value of a collection of numbers.
141
173
 
@@ -163,11 +195,10 @@ Use the `standard_deviation` method to return the standard deviation of elements
163
195
  ```
164
196
 
165
197
  ####Sum:####
166
- Use the `sum` method to to return the sum of a collection of numbers.
198
+ Use the `sum` method to return the sum of a collection of numbers.
167
199
 
168
200
  ```ruby
169
- [1,2,3].sum #=> 2
170
- [1,2,3,4].sum #=> 2.5
201
+ [1,2,3].sum #=> 6
171
202
  [].sum #=> 0
172
203
  [].sum(nil) #=> nil
173
204
  ```
@@ -291,6 +322,27 @@ Use the `try` method on a object to try that method with out raising an error. `
291
322
 
292
323
  ### NumericExtensions
293
324
 
325
+ ####Add:####
326
+ Use the `add` method to add two numbers.
327
+
328
+ ```ruby
329
+ 4.add(2) #=> 6
330
+ ```
331
+
332
+ ####Divide:####
333
+ Use the `divide` method to divide two numbers.
334
+
335
+ ```ruby
336
+ 4.divide(2) #=> 2
337
+ ```
338
+
339
+ ####Multiply:####
340
+ Use the `multiply` method to multiply two numbers.
341
+
342
+ ```ruby
343
+ 4.multiply(2) #=> 8
344
+ ```
345
+
294
346
  ####Multiple Of:####
295
347
  Use the `multiple_of?` method to check if a number is the multiple of another. `Rails Safe`
296
348
 
@@ -315,6 +367,20 @@ Use the `positive?` method to check if a number is positive.
315
367
  -1.positive? #=> false
316
368
  ```
317
369
 
370
+ ####Power:####
371
+ Use the `power` method to return the power of two numbers.
372
+
373
+ ```ruby
374
+ 4.power(2) #=> 16
375
+ ```
376
+
377
+ ####Subtract:####
378
+ Use the `subtract` method to subtract two numbers.
379
+
380
+ ```ruby
381
+ 4.subtract(2) #=> 2
382
+ ```
383
+
318
384
  ####To Byte:####
319
385
  Use the `to_byte` method to convert a byte size from one unit to another unit.
320
386
 
@@ -6,15 +6,23 @@ module Enumerable
6
6
  end
7
7
  end
8
8
 
9
+ def difference(identity=0)
10
+ inject(:-) || identity
11
+ end
12
+
13
+ def divisible(identity=0)
14
+ inject(:/) || identity
15
+ end
16
+
9
17
  def drop_last(n)
10
18
  array = to_a
11
19
 
12
- return array if n > array.size
20
+ return(array) if n > array.size
13
21
  array[0...(array.size - n)]
14
22
  end
15
23
 
16
24
  def drop_last_while
17
- return to_enum(:drop_last_while) unless block_given?
25
+ return(to_enum(:drop_last_while)) unless block_given?
18
26
 
19
27
  result = []
20
28
  dropping = true
@@ -28,18 +36,18 @@ module Enumerable
28
36
  found_count = 0
29
37
 
30
38
  if block_given?
31
- each do |*o|
32
- found_count += 1 if yield(*o)
33
- end
39
+ each { |*o| found_count += 1 if yield(*o) }
34
40
  else
35
- each do |o|
36
- found_count += 1 if o
37
- end
41
+ each { |o| found_count += 1 if o }
38
42
  end
39
43
 
40
44
  (found_count > n) ? false : n == found_count
41
45
  end
42
46
 
47
+ def exponential(identity=0)
48
+ inject(:**) || identity
49
+ end
50
+
43
51
  def frequencies
44
52
  each_with_object(Hash.new(0)) { |e, a| a[e] += 1 }
45
53
  end
@@ -62,10 +70,10 @@ module Enumerable
62
70
  collection_sorted = sort
63
71
 
64
72
  if collection_size > 0
65
- if collection_size % 2 == 0
66
- (collection_sorted[(collection_size / 2) -1] + collection_sorted[collection_size / 2]) / 2.0
73
+ if (collection_size % 2).zero?
74
+ (collection_sorted[(collection_size / 2.0) -1.0] + collection_sorted[collection_size / 2.0]) / 2.0
67
75
  else
68
- collection_sorted[collection_size / 2]
76
+ collection_sorted[collection_size / 2.0]
69
77
  end
70
78
  else
71
79
  identity
@@ -75,20 +83,24 @@ module Enumerable
75
83
  def mode(identity=0)
76
84
  if size > 0
77
85
  frequency_distribution = inject(Hash.new(0)) { |h, v| h[v] += 1; h }
78
- frequency_top_2 = frequency_distribution.sort { |a, b| b[1] <=> a[1] }.take(2)
86
+ frequency_top_two = frequency_distribution.sort { |a, b| b[1] <=> a[1] }.take(2)
79
87
 
80
- if frequency_top_2.length == 1
81
- frequency_top_2.first.first
82
- elsif frequency_top_2.first.last == frequency_top_2.last.last
88
+ if frequency_top_two.length == 1
89
+ frequency_top_two.first.first
90
+ elsif frequency_top_two.first.last == frequency_top_two.last.last
83
91
  nil
84
92
  else
85
- frequency_top_2.first.first
93
+ frequency_top_two.first.first
86
94
  end
87
95
  else
88
96
  identity
89
97
  end
90
98
  end
91
99
 
100
+ def multiple(identity=0)
101
+ inject(:*) || identity
102
+ end
103
+
92
104
  def range(identity=0)
93
105
  collection_sorted = sort
94
106
  size > 0 ? collection_sorted.last - collection_sorted.first : identity
@@ -98,32 +110,28 @@ module Enumerable
98
110
  found_count = 0
99
111
 
100
112
  if block_given?
101
- each do |*o|
102
- found_count += 1 if yield(*o)
103
- end
113
+ each { |*o| found_count += 1 if yield(*o) }
104
114
  else
105
- each do |o|
106
- found_count += 1 if o
107
- end
115
+ each { |o| found_count += 1 if o }
108
116
  end
109
117
 
110
118
  (found_count > 1) ? true : false
111
119
  end
112
120
 
113
121
  def standard_deviation
114
- return 0 if length < 2
122
+ return(0) if length < 2
115
123
  Math.sqrt(variance)
116
124
  end
117
125
 
118
126
  def take_last(n)
119
127
  array = to_a
120
128
 
121
- return array if n > array.size
129
+ return(array) if n > array.size
122
130
  array[(array.size - n)..-1]
123
131
  end
124
132
 
125
133
  def take_last_while
126
- return to_enum(:take_last_while) unless block_given?
134
+ return(to_enum(:take_last_while)) unless block_given?
127
135
 
128
136
  result = []
129
137
  reverse_each { |e| yield(e) ? result.unshift(e) : break }
@@ -133,9 +141,9 @@ module Enumerable
133
141
  def variance
134
142
  collection_length = length
135
143
 
136
- return 0 if collection_length <= 1
137
- sum = inject(0) { |accumulator, value| accumulator + (value - mean) ** 2 }
138
- sum / (collection_length.to_f - 1)
144
+ return(0) if collection_length <= 1
145
+ sum = inject(0.0) { |accumulator, value| accumulator + (value - mean) ** 2.0 }
146
+ sum / (collection_length.to_f - 1.0)
139
147
  end
140
148
 
141
149
  end
@@ -1,5 +1,17 @@
1
1
  class Numeric
2
2
 
3
+ def add(n)
4
+ self + n
5
+ end
6
+
7
+ def divide(n)
8
+ self / n
9
+ end
10
+
11
+ def multiply(n)
12
+ self * n
13
+ end
14
+
3
15
  unless method_defined?(:multiple_of?)
4
16
  def multiple_of?(number)
5
17
  number != 0 ? modulo(number).zero? : zero?
@@ -14,6 +26,14 @@ class Numeric
14
26
  self > 0
15
27
  end
16
28
 
29
+ def power(n)
30
+ self ** n
31
+ end
32
+
33
+ def subtract(n)
34
+ self - n
35
+ end
36
+
17
37
  def to_byte(from=:b, to=:kb)
18
38
  scalers = { b: 1, kb: 1024 ** 1, mb: 1024 ** 2, gb: 1024 ** 3, tb: 1024 ** 4, pb: 1024 ** 5, eb: 1024 ** 6 }
19
39
 
@@ -1,3 +1,3 @@
1
1
  module Nobiru
2
- VERSION = "0.0.1"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -2,6 +2,34 @@ require 'spec_helper'
2
2
 
3
3
  describe Enumerable do
4
4
 
5
+ describe "#difference" do
6
+ it "to be 0" do
7
+ expect([].difference).to eq(0)
8
+ end
9
+
10
+ it "to be nil" do
11
+ expect([].difference(nil)).to eq(nil)
12
+ end
13
+
14
+ it "to be -4" do
15
+ expect([1, 2, 3].difference).to eq(-4)
16
+ end
17
+ end
18
+
19
+ describe "#divisible" do
20
+ it "to be 0" do
21
+ expect([].divisible).to eq(0)
22
+ end
23
+
24
+ it "to be nil" do
25
+ expect([].divisible(nil)).to eq(nil)
26
+ end
27
+
28
+ it "to be 2" do
29
+ expect([16, 4, 2].divisible).to eq(2)
30
+ end
31
+ end
32
+
5
33
  describe "#drop_last" do
6
34
  it "to be [2, 3]" do
7
35
  expect([1, 2, 3].drop_last(1)).to eq([1, 2])
@@ -38,6 +66,20 @@ describe Enumerable do
38
66
  end
39
67
  end
40
68
 
69
+ describe "#exponential" do
70
+ it "to be 0" do
71
+ expect([].exponential).to eq(0)
72
+ end
73
+
74
+ it "to be nil" do
75
+ expect([].exponential(nil)).to eq(nil)
76
+ end
77
+
78
+ it "to be 4096" do
79
+ expect([2, 3, 4].exponential).to eq(4096)
80
+ end
81
+ end
82
+
41
83
  describe "#frequencies" do
42
84
  it "to be {}" do
43
85
  expect([].frequencies).to eq({})
@@ -131,6 +173,20 @@ describe Enumerable do
131
173
  end
132
174
  end
133
175
 
176
+ describe "#multiple" do
177
+ it "to be 0" do
178
+ expect([].multiple).to eq(0)
179
+ end
180
+
181
+ it "to be nil" do
182
+ expect([].multiple(nil)).to eq(nil)
183
+ end
184
+
185
+ it "to be 6" do
186
+ expect([1, 2, 3].multiple).to eq(6)
187
+ end
188
+ end
189
+
134
190
  describe '#range' do
135
191
  it 'to be 0' do
136
192
  expect([].range).to eq(0)
@@ -2,6 +2,24 @@ require 'spec_helper'
2
2
 
3
3
  describe Numeric do
4
4
 
5
+ describe "#add" do
6
+ it "to be 3" do
7
+ expect(4.add(2)).to eq(6)
8
+ end
9
+ end
10
+
11
+ describe "#divide" do
12
+ it "to be 3" do
13
+ expect(4.divide(2)).to eq(2)
14
+ end
15
+ end
16
+
17
+ describe "#multiply" do
18
+ it "to be 3" do
19
+ expect(4.multiply(2)).to eq(8)
20
+ end
21
+ end
22
+
5
23
  describe "#multiple_of?" do
6
24
  it "to be true" do
7
25
  expect(9.multiple_of?(3)).to eq(true)
@@ -32,6 +50,18 @@ describe Numeric do
32
50
  end
33
51
  end
34
52
 
53
+ describe "#power" do
54
+ it "to be 6" do
55
+ expect(4.power(2)).to eq(16)
56
+ end
57
+ end
58
+
59
+ describe "#subtract" do
60
+ it "to be 2" do
61
+ expect(4.subtract(2)).to eq(2)
62
+ end
63
+ end
64
+
35
65
  describe "#to_byte" do
36
66
  it "to be 1" do
37
67
  expect(1024.to_byte).to eq(1)
@@ -1,4 +1,4 @@
1
1
  require 'coveralls'
2
- require 'flash_extensions'
2
+ require 'nobiru'
3
3
 
4
4
  Coveralls.wear!
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nobiru
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.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: 2015-02-09 00:00:00.000000000 Z
11
+ date: 2015-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -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.5
122
+ rubygems_version: 2.4.6
123
123
  signing_key:
124
124
  specification_version: 4
125
125
  summary: Commonly used ruby object helpers.