rubyhelper 1.1 → 1.1.1
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
- checksums.yaml.gz.sig +3 -2
- data/README.md +13 -7
- data/lib/rubyhelper/array.rb +29 -3
- data/lib/rubyhelper/gem-version.rb +1 -1
- data/lib/rubyhelper/numeric.rb +6 -0
- data/lib/rubyhelper/string.rb +64 -14
- data/test/test_array.rb +0 -1
- data/test/test_string.rb +7 -7
- data.tar.gz.sig +0 -0
- metadata +1 -1
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6851b40a4cf69a6d0a3754db488f38a3e5f7938
|
4
|
+
data.tar.gz: 53db33d7c1fa2860abdf3f63c3561f92d93872f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6cc4317fb023e6e2c0026c3fb50e7b37d56d13242fb27337fc9f4bba49dbf63ae2614d3d21a1b40c9a83ef415b3dff853633191798d902b925b1aa2d405c354
|
7
|
+
data.tar.gz: e7ff30b52e7a1f85692993e871359c533b5dc9d87a1ecfd10345d6242cfb0bd96675fd05d2a2e8a1f12441c33eae7eb3fe285cf166f6d898b296e9234eecf553
|
checksums.yaml.gz.sig
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
��y��
|
2
|
+
��u�ϊ�[%�
|
3
|
+
�]�i����PE��B�(����1�}d�t�X˨�Q���Eg�pg��3/PNzn�J��.�.e���(��Q���m���w'�"���믷��ZJ�<�b�(jZ
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
Gem [](http://badge.fury.io/rb/rubyhelper)
|
4
4
|
Dev [](http://badge.fury.io/gh/pouleta%2Frubyhelper)
|
5
5
|
|
6
|
-
You can see the documentation here :
|
6
|
+
You can see the documentation here : http://rubydoc.info/gems/rubyhelper/
|
7
7
|
|
8
8
|
## How is it works ?
|
9
9
|
See the [wtf] section too know what is exactly this stuff.
|
@@ -55,15 +55,21 @@ is a little messy. Don't look back 1.1 ;)
|
|
55
55
|
|
56
56
|
|
57
57
|
# TODO
|
58
|
-
|
58
|
+
## Benchmark
|
59
|
+
- Hash.except with
|
59
60
|
```
|
60
61
|
h.delete_if{|k| [:a].include? k}
|
61
62
|
```
|
62
|
-
|
63
|
-
|
64
|
-
-
|
63
|
+
|
64
|
+
## Improve VersionHelper
|
65
|
+
- Add test
|
66
|
+
- Add more documentation
|
67
|
+
|
68
|
+
## Improve main tests
|
69
|
+
- Add few tests for untested features
|
70
|
+
- Improve existing tests (mainly on StringHelper)
|
65
71
|
|
66
72
|
# Contributors
|
67
73
|
- poulet_a : Creator and main developper. Feel free to ask me a question by email.
|
68
|
-
email : arthur.poulet AT cryptolab.net
|
69
|
-
|
74
|
+
email : arthur.poulet AT cryptolab.net [OpenPGP : 0x6D9EA34A]
|
75
|
+
|
data/lib/rubyhelper/array.rb
CHANGED
@@ -25,21 +25,37 @@ module ArrayHelper
|
|
25
25
|
# Do the sum of an array of integer.
|
26
26
|
# if there is not integer, it will do a to_s.to_i of the element to try
|
27
27
|
# find an integer in the element. else, replace by a simple 0
|
28
|
+
# == Params:
|
29
|
+
# none
|
30
|
+
# == Returns:
|
31
|
+
# sum: (Integer) the sum of each element (converted via .to_s.to_i)
|
28
32
|
def sum
|
29
33
|
return (self.size > 0) ? (self.map{|e| e.to_s.to_i}.reduce(:+)) : (0)
|
30
34
|
end
|
31
35
|
|
32
36
|
# lke sum by with a to_f instead of to_i
|
37
|
+
# == Params:
|
38
|
+
# none
|
39
|
+
# == Returns:
|
40
|
+
# sum: (Float) the sum of each element (converted via .to_s.to_f)
|
33
41
|
def sumf
|
34
42
|
return (self.size > 0) ? (self.map{|e| e.to_s.to_f}.reduce(:+)) : (0.0)
|
35
43
|
end
|
36
44
|
|
37
|
-
# Use the sum and divide by the size of the array.
|
45
|
+
# Use the sum and divide by the size of the array.
|
46
|
+
# == Params:
|
47
|
+
# none
|
48
|
+
# == Returns:
|
49
|
+
# average: (Integer) self.sum / self.size. 0 if no elements
|
38
50
|
def average
|
39
51
|
return (self.size > 0) ? (self.sum / self.size) : (0)
|
40
52
|
end
|
41
53
|
|
42
54
|
# Same than average but use to_f instead of to_i
|
55
|
+
# == Params:
|
56
|
+
# none
|
57
|
+
# == Returns:
|
58
|
+
# average: (Float) self.sumf / self.size. 0.0 if no elements
|
43
59
|
def averagef
|
44
60
|
return (self.size > 0) ? (self.sumf / self.size.to_f) : (0.0)
|
45
61
|
end
|
@@ -47,11 +63,12 @@ module ArrayHelper
|
|
47
63
|
# get the n higher values of the array
|
48
64
|
# == Errors:
|
49
65
|
# - ArgumentError : if n in not an integer
|
66
|
+
# - ArgumentError : if n is lesser than 1
|
50
67
|
# == Params:
|
51
68
|
# - n: (Integer) number of elements
|
52
69
|
def maxs(n=1)
|
53
70
|
raise ArgumentError, 'Argument is not an integer' unless n.is_a? Integer
|
54
|
-
|
71
|
+
raise ArgumentError, 'Argument is lesser than 1' unless n >= 1
|
55
72
|
n = self.size if n > self.size
|
56
73
|
return Array(self.sort[(-n)..(-1)])
|
57
74
|
end
|
@@ -59,19 +76,28 @@ module ArrayHelper
|
|
59
76
|
# get the n lower values of the array
|
60
77
|
# == Errors:
|
61
78
|
# - ArgumentError : if n in not an integer
|
79
|
+
# - ArgumentError : if n is lesser than 1
|
62
80
|
# == Params:
|
63
81
|
# - n: (Integer) number of elements
|
64
82
|
def mins(n=1)
|
65
83
|
raise ArgumentError, 'Argument is not an integer' unless n.is_a? Integer
|
84
|
+
raise ArgumentError, 'Argument is lesser than 1' unless n >= 1
|
66
85
|
n = 1 if n < 1
|
67
86
|
n = self.size if n > self.size
|
68
87
|
return Array(self.sort[0..(n-1)])
|
69
88
|
end
|
70
89
|
|
71
90
|
# The Same as compact but remove empty string too
|
91
|
+
# see #compact
|
92
|
+
# == Params:
|
93
|
+
# none
|
94
|
+
# == Returns:
|
95
|
+
# compacti: (Array) compacted array
|
72
96
|
def compacti
|
73
|
-
return self.map{|e| e
|
97
|
+
return self.map{|e| e == "" ? nil : e}.compact
|
74
98
|
end
|
99
|
+
|
100
|
+
# see #compacti
|
75
101
|
def compacti!
|
76
102
|
return self.replace(self.compacti)
|
77
103
|
end
|
data/lib/rubyhelper/numeric.rb
CHANGED
@@ -4,10 +4,15 @@
|
|
4
4
|
module NumericHelper
|
5
5
|
|
6
6
|
# get - or + function of the sign of the integer
|
7
|
+
# == Params:
|
8
|
+
# none
|
9
|
+
# == Returns:
|
10
|
+
# none
|
7
11
|
def sign
|
8
12
|
return (self < 0) ? ("-") : ("+")
|
9
13
|
end
|
10
14
|
|
15
|
+
# Get the self value or minimum_value if greater than self
|
11
16
|
# == Errors:
|
12
17
|
# - ArgumentError : if the passed value is not an integer
|
13
18
|
# == Returns:
|
@@ -20,6 +25,7 @@ module NumericHelper
|
|
20
25
|
return self.replace(self.min(minimum_value))
|
21
26
|
end
|
22
27
|
|
28
|
+
# Get the self value or maximum_value if lesser than self
|
23
29
|
# == Errors:
|
24
30
|
# - ArgumentError : if the passed value is not an integer
|
25
31
|
# == Returns:
|
data/lib/rubyhelper/string.rb
CHANGED
@@ -5,26 +5,42 @@ require 'digest'
|
|
5
5
|
|
6
6
|
module StringHelper
|
7
7
|
|
8
|
+
# Force utf-8 encoding (shortcut ;) ! )
|
8
9
|
# == Params:
|
9
10
|
# - replace: (String) replace invalids chars by other chas
|
11
|
+
# == Returns:
|
12
|
+
# - self: (String) utf-8 string
|
10
13
|
def utf8 replace=''
|
11
14
|
return self.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: replace)
|
12
15
|
end
|
16
|
+
|
17
|
+
# see #utf8
|
13
18
|
def utf8!
|
14
19
|
return self.replace(self.utf8)
|
15
20
|
end
|
16
21
|
|
17
|
-
# UTF-8 encoding and replace invalid chars
|
22
|
+
# UTF-8 encoding and replace invalid chars.
|
23
|
+
# Remove accents from the string (convert to ASCII chars !)
|
24
|
+
# And then, change the case as first argument if not nil
|
18
25
|
# == Params:
|
19
26
|
# - case_mod: nil (not changement), :upcase, :capitalize or :downcase
|
20
27
|
# - replace: (String) if a char is not utf8 valid, character will replace it
|
28
|
+
# == Returns:
|
29
|
+
# - self: (String)
|
21
30
|
def to_plain(case_mod = nil, replace='')
|
22
31
|
return self.p(replace).utf8(replace).to_case(case_mod)
|
23
32
|
end
|
24
33
|
|
34
|
+
# see #to_plain
|
35
|
+
def to_plain!(case_mod = nil, replace='')
|
36
|
+
return self.replace(self.to_plain(case_mod, replace))
|
37
|
+
end
|
38
|
+
|
25
39
|
# Remove accents from the string, and replace it by the same letter in ASCII
|
26
40
|
# == Params:
|
27
41
|
# - replace: (String) replace by character default case
|
42
|
+
# == Returns:
|
43
|
+
# - self: (String)
|
28
44
|
def p(replace='')
|
29
45
|
begin
|
30
46
|
return self.tr("ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž",
|
@@ -33,8 +49,10 @@ module StringHelper
|
|
33
49
|
return self.utf8(replace)
|
34
50
|
end
|
35
51
|
end
|
36
|
-
|
37
|
-
|
52
|
+
|
53
|
+
# see #p
|
54
|
+
def p!(replace='')
|
55
|
+
return self.replace(self.p(replace))
|
38
56
|
end
|
39
57
|
|
40
58
|
# permit to do upcase/downcase/capitalize easier with a simple param
|
@@ -52,6 +70,8 @@ module StringHelper
|
|
52
70
|
return self
|
53
71
|
end
|
54
72
|
end
|
73
|
+
|
74
|
+
# see #to_case
|
55
75
|
def to_case!(case_mod = :downcase)
|
56
76
|
return self.replace(self.to_case(case_mod))
|
57
77
|
end
|
@@ -61,6 +81,8 @@ module StringHelper
|
|
61
81
|
# == Params:
|
62
82
|
# - replace: a caracter to replace non-ascii chars
|
63
83
|
# - case_mod: nil (not changement), :upcase, :capitalize or :downcase
|
84
|
+
# == Returns:
|
85
|
+
# - self: (String)
|
64
86
|
def to_ascii(replace="", case_mod = nil)
|
65
87
|
s = String.new
|
66
88
|
self.p.each_char do |c|
|
@@ -70,21 +92,28 @@ module StringHelper
|
|
70
92
|
end
|
71
93
|
|
72
94
|
# improvement of to_f to count "," caracter as "."
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
return
|
95
|
+
# == Params:
|
96
|
+
# none
|
97
|
+
# == Returns:
|
98
|
+
# - float: (Float)
|
99
|
+
def to_fi
|
100
|
+
return self.gsub(',', '.').to_f
|
79
101
|
end
|
80
102
|
|
81
|
-
# to_i with delimiter
|
103
|
+
# to_i with delimiter to remove
|
82
104
|
# Example : "12.000.000".to_ii => 12000000
|
105
|
+
# == Params:
|
106
|
+
# - char: char to delete (default : ' ')
|
107
|
+
# == Returns:
|
108
|
+
# - integer: (Integer)
|
109
|
+
# == Errors:
|
110
|
+
# ArgumentError: If (param char) is not a String
|
83
111
|
def to_ii(char=' ')
|
84
|
-
|
112
|
+
raise ArgumentError, "Argument is not a String" unless char.is_a? String
|
113
|
+
self.delete(char).to_i
|
85
114
|
end
|
86
115
|
|
87
|
-
#CRYXOR (one time pad dirt application)
|
116
|
+
# CRYXOR (one time pad dirt application)
|
88
117
|
def ^(k)
|
89
118
|
str = ""
|
90
119
|
self.size.times do |i|
|
@@ -93,10 +122,13 @@ module StringHelper
|
|
93
122
|
return str
|
94
123
|
end
|
95
124
|
|
96
|
-
#SHA2 shortcuts
|
125
|
+
# SHA2 shortcuts
|
126
|
+
# see #Digest::SHA2.hexdigest
|
97
127
|
def sha2
|
98
128
|
Digest::SHA2.hexdigest(self)
|
99
129
|
end
|
130
|
+
|
131
|
+
# see #sha2
|
100
132
|
def sha2!
|
101
133
|
return self.replace(self.sha2)
|
102
134
|
end
|
@@ -139,6 +171,10 @@ module StringHelper
|
|
139
171
|
end
|
140
172
|
|
141
173
|
#Returns true or false if the string if "true" or "false". else nil
|
174
|
+
# == Params:
|
175
|
+
# none
|
176
|
+
# == Returns:
|
177
|
+
# - true/false
|
142
178
|
def to_t
|
143
179
|
case self
|
144
180
|
when "true"
|
@@ -153,10 +189,14 @@ module StringHelper
|
|
153
189
|
#get only the digits and symbols in the string
|
154
190
|
# == Params:
|
155
191
|
# - sign: (true/false) if true, keep the - and + signs
|
192
|
+
# == Return:
|
193
|
+
# epured_string: (String)
|
156
194
|
def get_int(sign = true)
|
157
195
|
return self.gsub(/[^\-\+\d]/, "") if sign == true
|
158
196
|
return self.gsub(/[^\d]/, "")
|
159
197
|
end
|
198
|
+
|
199
|
+
# see #get_int
|
160
200
|
def get_int!(sign = true)
|
161
201
|
return self.replace(self.get_int(sign))
|
162
202
|
end
|
@@ -164,18 +204,28 @@ module StringHelper
|
|
164
204
|
#as get_int but with . and ,
|
165
205
|
# == Params:
|
166
206
|
# - sign: (true/false) if true, keep the - and + signs
|
207
|
+
# == Returns:
|
208
|
+
# epured_string: (String)
|
167
209
|
def get_float(sign = true)
|
168
210
|
return self.gsub(/[^\-\+\d\.\,]/, "") if sign == true
|
169
211
|
return self.gsub(/[^\d\.\,]/, "") if sign == true
|
170
212
|
end
|
213
|
+
|
214
|
+
# see #get_float
|
171
215
|
def get_float!(sign = true)
|
172
216
|
return self.replace(self.get_float(sign))
|
173
217
|
end
|
174
218
|
|
175
|
-
# Capitalize a sequence
|
219
|
+
# Capitalize a sequence (each word)
|
220
|
+
# == Params:
|
221
|
+
# none
|
222
|
+
# == Returns:
|
223
|
+
# capitalized_string: (String)
|
176
224
|
def scapitalize
|
177
225
|
return self.split.map(&:capitalize).join(' ')
|
178
226
|
end
|
227
|
+
|
228
|
+
# see #scapitalize
|
179
229
|
def scapitalize!
|
180
230
|
return self.replace(self.scapitalize)
|
181
231
|
end
|
data/test/test_array.rb
CHANGED
@@ -29,7 +29,6 @@ class ArrayHelperTest < Minitest::Test
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def test_maxs
|
32
|
-
assert_equal([44], [2,3,1,14,44,-1,1,2].maxs(0))
|
33
32
|
assert_equal([44], [2,3,1,14,44,-1,1,2].maxs(1))
|
34
33
|
assert_equal([14,44], [2,3,1,14,44,-1,1,2].maxs(2))
|
35
34
|
assert_equal([-1,1,1,2,2,3,14,44], [2,3,1,14,44,-1,1,2].maxs(100))
|
data/test/test_string.rb
CHANGED
@@ -32,13 +32,13 @@ class StringHelperTest < Minitest::Test
|
|
32
32
|
assert_equal("bonjour€".to_ascii("."), "bonjour.")
|
33
33
|
end
|
34
34
|
|
35
|
-
def
|
36
|
-
assert_equal("bonjour".
|
37
|
-
assert_equal("bonj1our".
|
38
|
-
assert_equal("1.1.1".
|
39
|
-
assert_equal("1.1".
|
40
|
-
assert_equal("1,1".
|
41
|
-
assert_equal(",1,1".
|
35
|
+
def test_to_fi
|
36
|
+
assert_equal("bonjour".to_fi, 0.0)
|
37
|
+
assert_equal("bonj1our".to_fi, 0.0)
|
38
|
+
assert_equal("1.1.1".to_fi, 1.1)
|
39
|
+
assert_equal("1.1".to_fi, 1.1)
|
40
|
+
assert_equal("1,1".to_fi, 1.1)
|
41
|
+
assert_equal(",1,1".to_fi, 0.1)
|
42
42
|
end
|
43
43
|
|
44
44
|
def test_to_ii
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
metadata.gz.sig
CHANGED
Binary file
|