ruby_extended 1.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 +7 -0
- data/.gitignore +10 -0
- data/.rspec +3 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +45 -0
- data/badges/coverage.svg +1 -0
- data/badges/license.svg +1 -0
- data/badges/ruby.svg +1 -0
- data/documentation/array.md +226 -0
- data/documentation/hash.md +22 -0
- data/documentation/number.md +39 -0
- data/documentation/object.md +17 -0
- data/documentation/readme.md +7 -0
- data/documentation/string.md +156 -0
- data/lib/ruby_extended.rb +5 -0
- data/lib/ruby_extended/array.rb +197 -0
- data/lib/ruby_extended/hash.rb +30 -0
- data/lib/ruby_extended/number.rb +54 -0
- data/lib/ruby_extended/object.rb +32 -0
- data/lib/ruby_extended/string.rb +59 -0
- data/lib/ruby_extended/version.rb +3 -0
- data/readme.md +24 -0
- data/ruby_extended.gemspec +24 -0
- data/spec/ruby_extend_array_spec.rb +412 -0
- data/spec/ruby_extend_hash_spec.rb +37 -0
- data/spec/ruby_extend_number_spec.rb +114 -0
- data/spec/ruby_extend_object_spec.rb +49 -0
- data/spec/ruby_extend_string_spec.rb +147 -0
- data/spec/spec_helper.rb +8 -0
- metadata +88 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6713d9529df421372812b0a1d21c647eb6e4cbc2928d9d544ccfa1b4bef5ad0b
|
4
|
+
data.tar.gz: 4400debd57858bbbbf006c2004ad6812c91baec26c1180a202f56bc5f5c9a8a5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4766701ba03173a2ae2e07e88f0ff7ebe7e14bedf14ec78a5d622258f4c2b2521b8cdc790380e6b376050696ad60d1a2a27c700f1ee5a76c0fe4cc6396d669b5
|
7
|
+
data.tar.gz: c8c9a8193876f82888c3163a4cc24469b396fc98e5c0002a09e2767d8f23b4ef036ec7cad87a284c68859a0d757bac5a85f31c63af3d11adfc4beea26c3433cc
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
codecov (0.2.12)
|
5
|
+
json
|
6
|
+
simplecov
|
7
|
+
coderay (1.1.3)
|
8
|
+
diff-lcs (1.4.4)
|
9
|
+
docile (1.3.2)
|
10
|
+
json (2.3.1)
|
11
|
+
method_source (1.0.0)
|
12
|
+
pry (0.13.1)
|
13
|
+
coderay (~> 1.1)
|
14
|
+
method_source (~> 1.0)
|
15
|
+
rspec (3.10.0)
|
16
|
+
rspec-core (~> 3.10.0)
|
17
|
+
rspec-expectations (~> 3.10.0)
|
18
|
+
rspec-mocks (~> 3.10.0)
|
19
|
+
rspec-core (3.10.0)
|
20
|
+
rspec-support (~> 3.10.0)
|
21
|
+
rspec-expectations (3.10.0)
|
22
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
23
|
+
rspec-support (~> 3.10.0)
|
24
|
+
rspec-mocks (3.10.0)
|
25
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
26
|
+
rspec-support (~> 3.10.0)
|
27
|
+
rspec-support (3.10.0)
|
28
|
+
simplecov (0.19.1)
|
29
|
+
docile (~> 1.1)
|
30
|
+
simplecov-html (~> 0.11)
|
31
|
+
simplecov-html (0.12.3)
|
32
|
+
unicode_utils (1.4.0)
|
33
|
+
|
34
|
+
PLATFORMS
|
35
|
+
ruby
|
36
|
+
|
37
|
+
DEPENDENCIES
|
38
|
+
codecov
|
39
|
+
pry
|
40
|
+
rspec
|
41
|
+
simplecov-html
|
42
|
+
unicode_utils
|
43
|
+
|
44
|
+
BUNDLED WITH
|
45
|
+
2.1.2
|
data/badges/coverage.svg
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="104" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="104" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h61v20H0z"/><path fill="#4c1" d="M61 0h43v20H61z"/><path fill="url(#b)" d="M0 0h104v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="315" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">coverage</text><text x="315" y="140" transform="scale(.1)" textLength="510">coverage</text><text x="815" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="330">100%</text><text x="815" y="140" transform="scale(.1)" textLength="330">100%</text></g> </svg>
|
data/badges/license.svg
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="112" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="112" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h47v20H0z"/><path fill="#4c1" d="M47 0h65v20H47z"/><path fill="url(#b)" d="M0 0h112v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="245" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="370">license</text><text x="245" y="140" transform="scale(.1)" textLength="370">license</text><text x="785" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="550">CC BY 4.0</text><text x="785" y="140" transform="scale(.1)" textLength="550">CC BY 4.0</text></g> </svg>
|
data/badges/ruby.svg
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="84" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="84" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h37v20H0z"/><path fill="#007ec6" d="M37 0h47v20H37z"/><path fill="url(#b)" d="M0 0h84v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="195" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="270">Ruby</text><text x="195" y="140" transform="scale(.1)" textLength="270">Ruby</text><text x="595" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="370">1.9.3+</text><text x="595" y="140" transform="scale(.1)" textLength="370">1.9.3+</text></g> </svg>
|
@@ -0,0 +1,226 @@
|
|
1
|
+
# Ruby Extend - Array
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
### `.sort_lv`
|
6
|
+
Sorts Array respecting latvian characters, like `Ā`, `Č`, etc..
|
7
|
+
```ruby
|
8
|
+
%w[a b c ā z č].sort_lv # => ['a', 'ā', 'b', 'c', 'č', 'z']
|
9
|
+
```
|
10
|
+
Method accepts block, so it can be used on hash arrays.
|
11
|
+
```ruby
|
12
|
+
[
|
13
|
+
{ n: 'a' },
|
14
|
+
{ n: 'c' },
|
15
|
+
{ n: 'ā' },
|
16
|
+
{ n: 'č' },
|
17
|
+
{ n: 'z' }
|
18
|
+
].sort_lv { |x| x[:n] } # => [ { n: 'a' }, { n: 'ā' }, { n: 'c' }, { n: 'č' }, { n: 'z' } ]
|
19
|
+
```
|
20
|
+
|
21
|
+
|
22
|
+
### `.tabulate`
|
23
|
+
Split and transpose array horizontally or vertically.
|
24
|
+
```ruby
|
25
|
+
%w[a b c d e f g].tabulate(2, split_by: :columns, direction: :horizontal)
|
26
|
+
# => [ [a,b], [c,d], [e,f], [g,nil] ]
|
27
|
+
#
|
28
|
+
# visualized example:
|
29
|
+
# [ a ] [ b ]
|
30
|
+
# [ c ] [ d ]
|
31
|
+
# [ e ] [ f ]
|
32
|
+
# [ g ] [nil]
|
33
|
+
```
|
34
|
+
```ruby
|
35
|
+
%w[a b c d e f g].tabulate(2, split_by: :rows, direction: :horizontal)
|
36
|
+
# => [ [a,b,c,d], [e,f,g,nil] ]
|
37
|
+
#
|
38
|
+
# visualized example:
|
39
|
+
# [ a ] [ b ] [ c ] [ d ]
|
40
|
+
# [ e ] [ f ] [ g ] [nil]
|
41
|
+
```
|
42
|
+
```ruby
|
43
|
+
%w[a b c d e f g].tabulate(2, split_by: :columns, direction: :vertical)
|
44
|
+
# => [ [a,b,c,d], [e,f,g,nil] ]
|
45
|
+
#
|
46
|
+
# visualized example:
|
47
|
+
# [ a ] [ e ]
|
48
|
+
# [ b ] [ f ]
|
49
|
+
# [ c ] [ g ]
|
50
|
+
# [ d ] [nil]
|
51
|
+
```
|
52
|
+
```ruby
|
53
|
+
%w[a b c d e f g].tabulate(2, split_by: :rows, direction: :vertical)
|
54
|
+
# => [ [a,c,e,g], [b,d,f,nil] ]
|
55
|
+
#
|
56
|
+
# visualized example:
|
57
|
+
# [ a ] [ c ] [ e ] [ g ]
|
58
|
+
# [ b ] [ d ] [ f ] [nil]
|
59
|
+
```
|
60
|
+
|
61
|
+
|
62
|
+
### `.sample_index`
|
63
|
+
Returns uniq array of hashes, based on one key.
|
64
|
+
```ruby
|
65
|
+
[
|
66
|
+
{a: 1, b: '123'},
|
67
|
+
{a: 1, b: 'abc'},
|
68
|
+
{a: 2, b: 'cde'}
|
69
|
+
].uniq_by_key(:a) # => [ {a: 1, b: '123'}, {a: 2, b: 'cde'} ]
|
70
|
+
```
|
71
|
+
Returns original array if key not found
|
72
|
+
```ruby
|
73
|
+
[
|
74
|
+
{a: 1, b: '123'},
|
75
|
+
{a: 1, b: 'abc'},
|
76
|
+
{a: 2, b: 'cde'}
|
77
|
+
].uniq_by_key(:x) # => [ {a: 1, b: '123'}, {a: 1, b: 'abc'}, {a: 2, b: 'cde'} ]
|
78
|
+
```
|
79
|
+
|
80
|
+
|
81
|
+
### `.duplicates`
|
82
|
+
Returns duplicates from array
|
83
|
+
```ruby
|
84
|
+
['a', 'a', 2, 2, 2, 2, 3, 'b', nil, nil].duplicates # => ['a', 2, nil]
|
85
|
+
```
|
86
|
+
Returns duplicates from array with count
|
87
|
+
```ruby
|
88
|
+
['a', 'a', 2, 2, 2, 2, 3, 'b', nil, nil].duplicates(full: true)
|
89
|
+
# => [
|
90
|
+
# {item: 'a', count: 2},
|
91
|
+
# {item: 2, count: 4},
|
92
|
+
# {item: nil, count: 2}
|
93
|
+
# ]
|
94
|
+
```
|
95
|
+
|
96
|
+
|
97
|
+
### `.sum` (overwrites & extends existing method)
|
98
|
+
```ruby
|
99
|
+
[1, 2, 3].sum # => 6
|
100
|
+
[0.1, 0.2, 1].sum # => 1.3
|
101
|
+
%w[a b].sum # => 'ab'
|
102
|
+
['a', 'b', 2, 1.5, nil].sum # => ab21.5
|
103
|
+
```
|
104
|
+
If only numbers in array need to be summed:
|
105
|
+
```ruby
|
106
|
+
['a', 1, 1.5, nil].sum(only_numbers: true) # => 2.5
|
107
|
+
```
|
108
|
+
Possible to sum by hash key:
|
109
|
+
```ruby
|
110
|
+
[ {a: 1}, {a: 'a'}, {a: 3} ].sum(key: :a, only_numbers: true) # => 4
|
111
|
+
[ {a: 1}, {a: 'a'}, {b: 3} ].sum(key: :a, only_numbers: true) # => 1
|
112
|
+
```
|
113
|
+
If the key is not found in any of the array hash items, will return `nil`
|
114
|
+
```ruby
|
115
|
+
[ {a: 1}, {a: 'a'}, {a: 3} ].sum(key: :b) # => nil
|
116
|
+
```
|
117
|
+
|
118
|
+
|
119
|
+
### `.to_tree`
|
120
|
+
Converts hash array with parent_id to embed array with children.
|
121
|
+
```ruby
|
122
|
+
[
|
123
|
+
{id: 1, parent_id: nil, any_other_key: 'a'},
|
124
|
+
{id: 2, parent_id: 1, any_other_key: 'b'},
|
125
|
+
{id: 3, parent_id: 2, any_other_key: 'c'},
|
126
|
+
].to_tree
|
127
|
+
```
|
128
|
+
to
|
129
|
+
```json
|
130
|
+
[
|
131
|
+
{
|
132
|
+
"id": 1,
|
133
|
+
"parent_id": null,
|
134
|
+
"any_other_key": "a",
|
135
|
+
"children": [
|
136
|
+
{
|
137
|
+
"id": 2,
|
138
|
+
"parent_id": 1,
|
139
|
+
"any_other_key": "b",
|
140
|
+
"children": [
|
141
|
+
{
|
142
|
+
"id": 3,
|
143
|
+
"parent_id": 2,
|
144
|
+
"any_other_key": "c"
|
145
|
+
}
|
146
|
+
]
|
147
|
+
}
|
148
|
+
]
|
149
|
+
}
|
150
|
+
]
|
151
|
+
```
|
152
|
+
It's also possible to convert it to hash
|
153
|
+
```ruby
|
154
|
+
[
|
155
|
+
{id: 1, parent_id: nil, any_other_key: 'a'},
|
156
|
+
{id: 2, parent_id: 1, any_other_key: 'b'},
|
157
|
+
{id: 3, parent_id: 2, any_other_key: 'c'},
|
158
|
+
].to_tree(to_hash: true)
|
159
|
+
```
|
160
|
+
```json
|
161
|
+
{
|
162
|
+
"1": {
|
163
|
+
"id": 1,
|
164
|
+
"any_other_key": "a",
|
165
|
+
"children": {
|
166
|
+
"2": {
|
167
|
+
"id": 2,
|
168
|
+
"any_other_key": "b",
|
169
|
+
"children": {
|
170
|
+
"3": {
|
171
|
+
"id": 3,
|
172
|
+
"any_other_key": "c"
|
173
|
+
}
|
174
|
+
}
|
175
|
+
}
|
176
|
+
}
|
177
|
+
}
|
178
|
+
}
|
179
|
+
```
|
180
|
+
All available options
|
181
|
+
<table border="1">
|
182
|
+
<thead>
|
183
|
+
<tr>
|
184
|
+
<td>Option</td>
|
185
|
+
<td>Description</td>
|
186
|
+
<td>Default</td>
|
187
|
+
</tr>
|
188
|
+
</thead>
|
189
|
+
<tbody>
|
190
|
+
<tr>
|
191
|
+
<td>id_key</td>
|
192
|
+
<td>Specify the id key</td>
|
193
|
+
<td>id</td>
|
194
|
+
</tr>
|
195
|
+
<tr>
|
196
|
+
<td>parent_id_key</td>
|
197
|
+
<td>Specify parent_id key</td>
|
198
|
+
<td>parent_id</td>
|
199
|
+
</tr>
|
200
|
+
<tr>
|
201
|
+
<td>children_key</td>
|
202
|
+
<td>Specify children key</td>
|
203
|
+
<td>children</td>
|
204
|
+
</tr>
|
205
|
+
<tr>
|
206
|
+
<td>include_parent_id</td>
|
207
|
+
<td>Include parent_id</td>
|
208
|
+
<td>false</td>
|
209
|
+
</tr>
|
210
|
+
<tr>
|
211
|
+
<td>include_empty_children</td>
|
212
|
+
<td>includes empty children key if no children present</td>
|
213
|
+
<td>false</td>
|
214
|
+
</tr>
|
215
|
+
<tr>
|
216
|
+
<td>to_hash</td>
|
217
|
+
<td>Convert to hash instead of array</td>
|
218
|
+
<td>false</td>
|
219
|
+
</tr>
|
220
|
+
<tr>
|
221
|
+
<td>include_id</td>
|
222
|
+
<td>Include id key when converting to hash</td>
|
223
|
+
<td>true</td>
|
224
|
+
</tr>
|
225
|
+
</tbody>
|
226
|
+
</table>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# Ruby Extend - Hash
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
### `.deep_find`
|
6
|
+
Returns key value in any hash level and return full path to it
|
7
|
+
```ruby
|
8
|
+
{
|
9
|
+
a: {
|
10
|
+
d: 'foo value 1',
|
11
|
+
b: [
|
12
|
+
{c: 1},
|
13
|
+
{d: 'foo value 2'}
|
14
|
+
]
|
15
|
+
}
|
16
|
+
}.deep_find(:d)
|
17
|
+
# =>
|
18
|
+
# [
|
19
|
+
# {value: 'foo value 1', path: [:a, :d]},
|
20
|
+
# {value: 'foo value 2', path: [:a, b, 1, :d]}
|
21
|
+
# ]
|
22
|
+
```
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# Ruby Extend - Number (Integer, Float, BigDecimal, Complex, Rational)
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
### `.no_zeros`
|
6
|
+
Converts any number to string, that has no zeroes
|
7
|
+
```ruby
|
8
|
+
(1.0).no_zero # => '1'
|
9
|
+
(1.10).no_zero # => '1.1'
|
10
|
+
```
|
11
|
+
|
12
|
+
|
13
|
+
### `.to_money`
|
14
|
+
Converts any number to string formatted in money format
|
15
|
+
```ruby
|
16
|
+
(1.0).to_money # => '1.00'
|
17
|
+
```
|
18
|
+
|
19
|
+
|
20
|
+
### `.percent_of`
|
21
|
+
Get percent value from number
|
22
|
+
```ruby
|
23
|
+
(10).percent_of(100) # => 10
|
24
|
+
```
|
25
|
+
Possible to get decimal value as well
|
26
|
+
```ruby
|
27
|
+
(10).percent_of(111, decimal: true) # => 11.100000000000001
|
28
|
+
```
|
29
|
+
|
30
|
+
|
31
|
+
### `.get_percent_from`
|
32
|
+
Get percent from two numbers
|
33
|
+
```ruby
|
34
|
+
(2).get_percent_from(6) # => 33
|
35
|
+
```
|
36
|
+
Possible to get decimal value as well
|
37
|
+
```ruby
|
38
|
+
(2).get_percent_from(6, decimal: true) # => 33.33333333333333
|
39
|
+
```
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# Ruby Extend - Object (Array & Hash)
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
### `.dig`
|
6
|
+
Navigate hash or array without getting error, in case item is not found.
|
7
|
+
```ruby
|
8
|
+
{a: {b: 'value'}}.dig(:a, :b) # => 'value'
|
9
|
+
[{a: [{b: 'value'}]}].dig(0, :a, 0, :b) # => 'value'
|
10
|
+
```
|
11
|
+
Note: the difference from the dig method, included from Ruby 2.3, is that
|
12
|
+
in this version it's possible to use array as value, which is not possible
|
13
|
+
to do in original dig method.
|
14
|
+
```ruby
|
15
|
+
{a: {b: 'value'}}.dig([:a, :b]) # => 'value'
|
16
|
+
[{a: [{b: 'value'}]}].dig([0, :a, 0, :b]) # => 'value'
|
17
|
+
```
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# Ruby Extend Documentation
|
2
|
+
|
3
|
+
* [Array](/documentation/array.md)
|
4
|
+
* [Hash](/documentation/hash.md)
|
5
|
+
* [Object](/documentation/object.md) (Array & Hash)
|
6
|
+
* [Number](/documentation/object.md) (Integer, Float, BigDecimal, Complex, Rational)
|
7
|
+
* [String](/documentation/string.md)
|
@@ -0,0 +1,156 @@
|
|
1
|
+
# Ruby Extend - String
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
### `.similarity_percent`
|
6
|
+
Returns percentage on how similar are two strings
|
7
|
+
```ruby
|
8
|
+
'ab'.similarity_percent('a') # => 50.0
|
9
|
+
'ab'.similarity_percent('ax') # => 50.0
|
10
|
+
'abdefghijk'.similarity_percent('abdefghij0') # => 90.0
|
11
|
+
|
12
|
+
a = 'The quick brown fox jumps over the lazy dog'
|
13
|
+
b = 'The quick brown fox jumps over the lazy cat'
|
14
|
+
a.similarity_percent(b) # => 93.02325581395348
|
15
|
+
```
|
16
|
+
|
17
|
+
|
18
|
+
### `.index_of`
|
19
|
+
Return array of indexes found in string
|
20
|
+
```ruby
|
21
|
+
'abc123abc'.index_of('abc') # => [0, 6]
|
22
|
+
```
|
23
|
+
|
24
|
+
|
25
|
+
### `.strip_newline`
|
26
|
+
Remove new line characters
|
27
|
+
```ruby
|
28
|
+
"\n\r".strip_newline # => ''
|
29
|
+
```
|
30
|
+
|
31
|
+
|
32
|
+
### `.strip_whitespace`
|
33
|
+
Remove multiple different whitespace characters
|
34
|
+
```ruby
|
35
|
+
' '.strip_whitespace # => ''
|
36
|
+
```
|
37
|
+
Whitespace characters that are removed:
|
38
|
+
<table border="1">
|
39
|
+
<thead>
|
40
|
+
<tr>
|
41
|
+
<td>Name</td>
|
42
|
+
<td>Code</td>
|
43
|
+
</td>
|
44
|
+
</thead>
|
45
|
+
<tbody>
|
46
|
+
<tr>
|
47
|
+
<td>SPACE</td>
|
48
|
+
<td>(U+0020)</td>
|
49
|
+
<tr>
|
50
|
+
<tr>
|
51
|
+
<td>NO-BREAK SPACE</td>
|
52
|
+
<td>(U+00A0)</td>
|
53
|
+
<tr>
|
54
|
+
<tr>
|
55
|
+
<td>OGHAM SPACE MARK</td>
|
56
|
+
<td>(U+1680)</td>
|
57
|
+
<tr>
|
58
|
+
<tr>
|
59
|
+
<td>MONGOLIAN VOWEL SEPARATOR</td>
|
60
|
+
<td>(U+180E)</td>
|
61
|
+
<tr>
|
62
|
+
<tr>
|
63
|
+
<td>EN QUAD</td>
|
64
|
+
<td>(U+2000)</td>
|
65
|
+
<tr>
|
66
|
+
<tr>
|
67
|
+
<td>EN SPACE (nut)</td>
|
68
|
+
<td>(U+2002)</td>
|
69
|
+
<tr>
|
70
|
+
<tr>
|
71
|
+
<td>EM SPACE (mutton)</td>
|
72
|
+
<td>(U+2003)</td>
|
73
|
+
<tr>
|
74
|
+
<tr>
|
75
|
+
<td>THREE-PER-EM SPACE (thick space)</td>
|
76
|
+
<td>(U+2004)</td>
|
77
|
+
<tr>
|
78
|
+
<tr>
|
79
|
+
<td>FOUR-PER-EM SPACE (mid space)</td>
|
80
|
+
<td>(U+2005)</td>
|
81
|
+
<tr>
|
82
|
+
<tr>
|
83
|
+
<td>SIX-PER-EM SPACE</td>
|
84
|
+
<td>(U+2006)</td>
|
85
|
+
<tr>
|
86
|
+
<tr>
|
87
|
+
<td>FIGURE SPACE</td>
|
88
|
+
<td>(U+2007)</td>
|
89
|
+
<tr>
|
90
|
+
<tr>
|
91
|
+
<td>PUNCTUATION SPACE</td>
|
92
|
+
<td>(U+2008)</td>
|
93
|
+
<tr>
|
94
|
+
<tr>
|
95
|
+
<td>THIN SPACE</td>
|
96
|
+
<td>(U+2009)</td>
|
97
|
+
<tr>
|
98
|
+
<tr>
|
99
|
+
<td>HAIR SPACE</td>
|
100
|
+
<td>(U+200A)</td>
|
101
|
+
<tr>
|
102
|
+
<tr>
|
103
|
+
<td>ZERO WIDTH SPACE</td>
|
104
|
+
<td>(U+200B)</td>
|
105
|
+
<tr>
|
106
|
+
<tr>
|
107
|
+
<td>NARROW NO-BREAK SPACE</td>
|
108
|
+
<td>(U+200F)</td>
|
109
|
+
<tr>
|
110
|
+
<tr>
|
111
|
+
<td>MEDIUM MATHEMATICAL SPACE</td>
|
112
|
+
<td>(U+205F)</td>
|
113
|
+
<tr>
|
114
|
+
<tr>
|
115
|
+
<td>IDEOGRAPHIC SPACE</td>
|
116
|
+
<td>(U+3000)</td>
|
117
|
+
<tr>
|
118
|
+
<tr>
|
119
|
+
<td>ZERO WIDTH NO-BREAK SPACE</td>
|
120
|
+
<td>(U+FEFF)</td>
|
121
|
+
<tr>
|
122
|
+
</tbody>
|
123
|
+
</table>
|
124
|
+
|
125
|
+
Possible to also remove visual space characters, by
|
126
|
+
passing `visible` option.
|
127
|
+
```ruby
|
128
|
+
'␣'.strip_whitespace(visible: true) # => ''
|
129
|
+
```
|
130
|
+
Visual characters removed
|
131
|
+
<table>
|
132
|
+
<thead>
|
133
|
+
<tr>
|
134
|
+
<td>Name</td>
|
135
|
+
<td>Code</td>
|
136
|
+
<td>Character</td>
|
137
|
+
</tr>
|
138
|
+
</thead>
|
139
|
+
<tbody>
|
140
|
+
<tr>
|
141
|
+
<td>OPEN BOX</td>
|
142
|
+
<td>U+2423</td>
|
143
|
+
<td>␣</td>
|
144
|
+
</tr>
|
145
|
+
<tr>
|
146
|
+
<td>BLANK SYMBOL</td>
|
147
|
+
<td>U+2422</td>
|
148
|
+
<td>␢</td>
|
149
|
+
</tr>
|
150
|
+
<tr>
|
151
|
+
<td>SYMBOL FOR SPACE</td>
|
152
|
+
<td>U+2420</td>
|
153
|
+
<td>␠</td>
|
154
|
+
</tr>
|
155
|
+
</tbody>
|
156
|
+
</table>
|