rubyhelper 1.1 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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 [![Gem Version](https://badge.fury.io/rb/rubyhelper.svg)](http://badge.fury.io/rb/rubyhelper)
|
4
4
|
Dev [![GitHub version](https://badge.fury.io/gh/pouleta%2Frubyhelper.svg)](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
|