nobiru 0.0.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 +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +14 -0
- data/.rspec +4 -0
- data/.travis.yml +13 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +646 -0
- data/Rakefile +1 -0
- data/lib/nobiru/extensions/array_extension.rb +15 -0
- data/lib/nobiru/extensions/enumerable_extension.rb +141 -0
- data/lib/nobiru/extensions/hash_extension.rb +70 -0
- data/lib/nobiru/extensions/numeric_extension.rb +102 -0
- data/lib/nobiru/extensions/object_extension.rb +29 -0
- data/lib/nobiru/extensions/string_extension.rb +183 -0
- data/lib/nobiru/extensions/time_extension.rb +166 -0
- data/lib/nobiru/version.rb +3 -0
- data/lib/nobiru.rb +8 -0
- data/nobiru.gemspec +25 -0
- data/spec/lib/array_extension_spec.rb +27 -0
- data/spec/lib/enumerable_extension_spec.rb +219 -0
- data/spec/lib/hash_extension_spec.rb +80 -0
- data/spec/lib/numeric_extension_spec.rb +171 -0
- data/spec/lib/object_extension_spec.rb +79 -0
- data/spec/lib/string_extension_spec.rb +271 -0
- data/spec/lib/time_extension_spec.rb +471 -0
- data/spec/spec_helper.rb +4 -0
- metadata +134 -0
data/README.md
ADDED
@@ -0,0 +1,646 @@
|
|
1
|
+
# Nobiru
|
2
|
+
|
3
|
+
[](http://badge.fury.io/rb/nobiru)
|
4
|
+
[](https://travis-ci.org/drexed/nobiru)
|
5
|
+
[](https://coveralls.io/r/drexed/nobiru)
|
6
|
+
[](https://codeclimate.com/github/drexed/nobiru)
|
7
|
+
|
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.
|
9
|
+
|
10
|
+
`Rails Safe` = methods extracted from rails but that do not override that rails method.
|
11
|
+
|
12
|
+
Highly recommended extensions:
|
13
|
+
* **Hash:** Hashie - https://github.com/intridea/hashie
|
14
|
+
* **String:** Escape Utils - https://github.com/brianmario/escape_utils
|
15
|
+
* **String:** Fast Blank - https://github.com/SamSaffron/fast_blank
|
16
|
+
* **Translation:** Fast Gettext - https://github.com/grosser/fast_gettext
|
17
|
+
|
18
|
+
## Installation
|
19
|
+
|
20
|
+
Add this line to your application's Gemfile:
|
21
|
+
|
22
|
+
gem 'nobiru'
|
23
|
+
|
24
|
+
And then execute:
|
25
|
+
|
26
|
+
$ bundle
|
27
|
+
|
28
|
+
Or install it yourself as:
|
29
|
+
|
30
|
+
$ gem install nobiru
|
31
|
+
|
32
|
+
## Usage
|
33
|
+
|
34
|
+
### ArrayExtensions
|
35
|
+
|
36
|
+
####Remove Blanks:####
|
37
|
+
Use the `remove_blanks` method removes blank elements from an array.
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
["this", "", "that", nil].remove_blanks #=> ["this", "that"]
|
41
|
+
"this is a test".split(" ").remove_blanks #=> ["this", "is", "a", "test"]
|
42
|
+
```
|
43
|
+
|
44
|
+
####Remove First Element:####
|
45
|
+
Use the `remove_first` method removes the first element from an array. Like Array.shift, but returns the array instead of the removed element.
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
["1", "2", "3"].remove_first #=> ["2", "3"]
|
49
|
+
```
|
50
|
+
|
51
|
+
####Remove Last Element:####
|
52
|
+
Use the `remove_last` method removes the last element from an array. Like Array.pop, but returns the array instead of the removed element.
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
["1", "2", "3"].remove_last #=> ["1", "2"]
|
56
|
+
```
|
57
|
+
|
58
|
+
### EnumerableExtensions
|
59
|
+
|
60
|
+
####Drop Last:####
|
61
|
+
Use the `drop_last` method to drops the last number of elements of a collection.
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
[1,2,3].drop_last(1) #=> [1,2]
|
65
|
+
[].drop_last(3) #=> []
|
66
|
+
```
|
67
|
+
|
68
|
+
####Drop Last While:####
|
69
|
+
Use the `drop_last_while` method to drops the last number of elements of a collection while it meets a criteria.
|
70
|
+
|
71
|
+
```ruby
|
72
|
+
[1,2,3].drop_last_while(&:odd?) #=> [1,2]
|
73
|
+
[].drop_last_while(&:odd?) #=> []
|
74
|
+
```
|
75
|
+
|
76
|
+
####Exactly:####
|
77
|
+
Use the `exactly?` method to return if there are exactly the number of an element type.
|
78
|
+
|
79
|
+
```ruby
|
80
|
+
[1,2,3].excatly?(3) #=> true
|
81
|
+
[1,1,3,3].exactly?(2, &:even?) #=> false
|
82
|
+
[].exactly?(1) #=> false
|
83
|
+
```
|
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
|
+
|
148
|
+
####Several:####
|
149
|
+
Use the `several?` method to return if there are several types of an element.
|
150
|
+
|
151
|
+
```ruby
|
152
|
+
[1,2,3].several? #=> true
|
153
|
+
[1,1,3,3].several?(&:even?) #=> false
|
154
|
+
[].several? #=> false
|
155
|
+
```
|
156
|
+
|
157
|
+
####Standard Deviation:####
|
158
|
+
Use the `standard_deviation` method to return the standard deviation of elements of a collection.
|
159
|
+
|
160
|
+
```ruby
|
161
|
+
[1,2,6].standard_deviation #=> 2.6457513110645907
|
162
|
+
[].standard_deviation #=> nil
|
163
|
+
```
|
164
|
+
|
165
|
+
####Sum:####
|
166
|
+
Use the `sum` method to to return the sum of a collection of numbers.
|
167
|
+
|
168
|
+
```ruby
|
169
|
+
[1,2,3].sum #=> 2
|
170
|
+
[1,2,3,4].sum #=> 2.5
|
171
|
+
[].sum #=> 0
|
172
|
+
[].sum(nil) #=> nil
|
173
|
+
```
|
174
|
+
|
175
|
+
####Take Last:####
|
176
|
+
Use the `take_last` method to return the last number of elements of a collection.
|
177
|
+
|
178
|
+
```ruby
|
179
|
+
[1,2,3].take_last(2) #=> [2,3]
|
180
|
+
[].take_last(3) #=> []
|
181
|
+
```
|
182
|
+
|
183
|
+
####Take Last While:####
|
184
|
+
Use the `take_last_while` method to return the last number of elements of a collection while it meets a criteria.
|
185
|
+
|
186
|
+
```ruby
|
187
|
+
[1,2,3,5].take_last_while(&:odd?) #=> [5, 5]
|
188
|
+
[].take_last_while(&:odd?) #=> []
|
189
|
+
```
|
190
|
+
|
191
|
+
####Variance:####
|
192
|
+
Use the `variance` method to return the variance of elements of a collection.
|
193
|
+
|
194
|
+
```ruby
|
195
|
+
[1,2,6].variance #=> 7
|
196
|
+
[].variance #=> nil
|
197
|
+
```
|
198
|
+
|
199
|
+
### HashExtensions
|
200
|
+
|
201
|
+
####Except:####
|
202
|
+
Use the `except` method to return only key/value pairs not matching certain keys. `Rails Safe`
|
203
|
+
|
204
|
+
```ruby
|
205
|
+
{ foo: 'foo', baz: 'baz', bar: 'bar' }.except(:foo) #=> { baz: 'baz', bar: 'bar' }
|
206
|
+
{ :foo => 'foo', :baz => 'baz', :bar => 'bar' }.except(:baz, :bar) #=> { :foo => 'foo' }
|
207
|
+
{}.except(:foo) #=> {}
|
208
|
+
```
|
209
|
+
|
210
|
+
####Only:####
|
211
|
+
Use the `only` method to return only key/value pairs matching certain keys. `Rails Safe`
|
212
|
+
|
213
|
+
```ruby
|
214
|
+
{ foo: 'foo', baz: 'baz', bar: 'bar' }.only(:foo) #=> { foo: 'foo' }
|
215
|
+
{ :foo => 'foo', :baz => 'baz', :bar => 'bar' }.only(:baz, :bar) #=> { :baz => 'baz', :bar => 'bar' }
|
216
|
+
{}.only(:foo) #=> {}
|
217
|
+
```
|
218
|
+
|
219
|
+
####Rename Keys:####
|
220
|
+
Use the `rename_keys` and `rename_keys!` method to rename the keys of a hash.
|
221
|
+
|
222
|
+
```ruby
|
223
|
+
{ foo: 'foo', baz: 'baz' }.rename_keys(foo: :bar) #=> { bar: 'foo', baz: 'baz' }
|
224
|
+
{ foo: 'foo', 'baz' => 'baz' }.rename_keys(foo: :bar, 'baz' => 'tick') #=> { bar: 'foo', tick: 'baz' }
|
225
|
+
```
|
226
|
+
|
227
|
+
####Stringify Keys:####
|
228
|
+
Use the `stringify_keys` and `stringify_keys!` method to convert the hash keys to strings. `Rails Safe`
|
229
|
+
|
230
|
+
```ruby
|
231
|
+
{ foo: 'foo', 'bar' => 'bar' }.stringify_keys #=> { 'foo' => 'foo', 'baz' => 'baz' }
|
232
|
+
```
|
233
|
+
|
234
|
+
####Symbolize Keys:####
|
235
|
+
Use the `symbolize_keys` and `symbolize_keys!` method to convert the hash keys to symbols. `Rails Safe`
|
236
|
+
|
237
|
+
```ruby
|
238
|
+
{ foo: 'foo', 'bar' => 'bar' }.symbolize_keys #=> { foo: 'foo', baz: 'baz' }
|
239
|
+
```
|
240
|
+
|
241
|
+
####Symbolize and Underscore Keys:####
|
242
|
+
Use the `symbolize_and_underscore_keys` and `symbolize_and_underscore_keys!` method to symbolize and underscore keys.
|
243
|
+
|
244
|
+
```ruby
|
245
|
+
{ 'firstName' => 'example', lastName: 'string' }.symbolize_and_underscore_keys #=> { first_name: 'foo', last_name: 'test' }
|
246
|
+
```
|
247
|
+
|
248
|
+
### ObjectExtensions
|
249
|
+
|
250
|
+
####Blank:####
|
251
|
+
Use the `blank?` method on a object to determine if it is empty or nil. `Rails Safe`
|
252
|
+
|
253
|
+
```ruby
|
254
|
+
"".blank? #=> true
|
255
|
+
"Awesome Sting".blank? #=> false
|
256
|
+
```
|
257
|
+
|
258
|
+
####Present:####
|
259
|
+
Use the `present?` method on a object to determine if it is not empty or nil. `Rails Safe`
|
260
|
+
|
261
|
+
```ruby
|
262
|
+
"Awesome Sting".blank? #=> true
|
263
|
+
"".present? #=> false
|
264
|
+
```
|
265
|
+
|
266
|
+
####Numeric:####
|
267
|
+
Use the `numeric?` method to determine whether an object's to_s value is numeric.
|
268
|
+
|
269
|
+
```ruby
|
270
|
+
"-32.50".numeric? #=> true
|
271
|
+
"$2.55".numeric? #=> false
|
272
|
+
```
|
273
|
+
|
274
|
+
####Palindrome:####
|
275
|
+
Use the `palindrome?` method to determine if an object is a palindrome.
|
276
|
+
|
277
|
+
```ruby
|
278
|
+
"racecar".palindrome? #=> true
|
279
|
+
12321.palindrome? #=> true
|
280
|
+
"example".palindrome? #=> false
|
281
|
+
12345.palindrome? #=> false
|
282
|
+
```
|
283
|
+
|
284
|
+
####Try:####
|
285
|
+
Use the `try` method on a object to try that method with out raising an error. `Rails Safe`
|
286
|
+
|
287
|
+
```ruby
|
288
|
+
"example".try(:upcase) #=> "EXAMPLE"
|
289
|
+
"example".try(:fake_method) #=> nil
|
290
|
+
```
|
291
|
+
|
292
|
+
### NumericExtensions
|
293
|
+
|
294
|
+
####Multiple Of:####
|
295
|
+
Use the `multiple_of?` method to check if a number is the multiple of another. `Rails Safe`
|
296
|
+
|
297
|
+
```ruby
|
298
|
+
9.multiple_of?(3) #=> true
|
299
|
+
7.multiple_of?(3) #=> false
|
300
|
+
```
|
301
|
+
|
302
|
+
####Negative:####
|
303
|
+
Use the `negative?` method to check if a number is negative.
|
304
|
+
|
305
|
+
```ruby
|
306
|
+
-1.negative? #=> true
|
307
|
+
1.negative? #=> false
|
308
|
+
```
|
309
|
+
|
310
|
+
####Positive:####
|
311
|
+
Use the `positive?` method to check if a number is positive.
|
312
|
+
|
313
|
+
```ruby
|
314
|
+
1.positive? #=> true
|
315
|
+
-1.positive? #=> false
|
316
|
+
```
|
317
|
+
|
318
|
+
####To Byte:####
|
319
|
+
Use the `to_byte` method to convert a byte size from one unit to another unit.
|
320
|
+
|
321
|
+
```ruby
|
322
|
+
1024.to_byte #=> 1 #KB
|
323
|
+
5120.to_byte(:kb, :mb) #=> 5 #MB
|
324
|
+
1.to_byte(:mb, :kb) #=> 1024 #KB
|
325
|
+
80.to_byte(:mb, :gb) #=> 0.1 #GB
|
326
|
+
```
|
327
|
+
|
328
|
+
####To Length:####
|
329
|
+
Use the `to_length` method to convert a length from one unit to another unit.
|
330
|
+
|
331
|
+
```ruby
|
332
|
+
1.to_length #=> 0.039370078740157 #IN
|
333
|
+
10.to_length(:mm, :cm) #=> 1 #CM
|
334
|
+
2.to_length(:mi, :yd) #=> 3520 #IN
|
335
|
+
```
|
336
|
+
|
337
|
+
####To Time Unit:####
|
338
|
+
Use the `to_time_unit` method to convert a time unit from one unit to another unit.
|
339
|
+
|
340
|
+
```ruby
|
341
|
+
120.to_time_unit #=> 2 #MIN
|
342
|
+
2.to_time_unite(:day, :sec) #=> 172800 #SEC
|
343
|
+
```
|
344
|
+
|
345
|
+
####To Temperature:####
|
346
|
+
Use the `to_temperature` method to convert a temperature from one unit to another unit.
|
347
|
+
|
348
|
+
```ruby
|
349
|
+
100.to_temperature #=> 212 #F
|
350
|
+
212.to_temperature(:f, :c) #=> 100 #C
|
351
|
+
212.to_temperature(:fahrenheit, :kelvin) #=> 373.15 #K
|
352
|
+
```
|
353
|
+
|
354
|
+
####To Weight:####
|
355
|
+
Use the `to_weight` method to convert a weight from one unit to another unit.
|
356
|
+
|
357
|
+
```ruby
|
358
|
+
1.to_weight #=> 0.035273961949580004 #OZ
|
359
|
+
2.to_weight(:kg, :lb) #=> 4.4092452436976 #LB
|
360
|
+
3.to_weight(:lb, :kg) #=> 1.3607771100000001 #LB
|
361
|
+
```
|
362
|
+
|
363
|
+
### StringExtensions
|
364
|
+
|
365
|
+
####Camelize:####
|
366
|
+
Use the `camelize` and `camelize!` method to transfrom a string to camelcase. `Rails Safe`
|
367
|
+
|
368
|
+
```ruby
|
369
|
+
"example_string".camelize #=> "ExampleString"
|
370
|
+
"example_string".camelize(:lower) #=> "exampleString"
|
371
|
+
```
|
372
|
+
|
373
|
+
####Ends With:####
|
374
|
+
Use the `ends_with?` method to determine whether a string ends with a certain value. `Rails Safe`
|
375
|
+
|
376
|
+
```ruby
|
377
|
+
"example string".ends_with?("g") #=> true
|
378
|
+
"example string".ends_with?("ng") #=> true
|
379
|
+
"example string".ends_with?("e") #=> false
|
380
|
+
```
|
381
|
+
|
382
|
+
####Starts With:####
|
383
|
+
Use the `starts_with?` method to determine whether a string starts with a certain value. `Rails Safe`
|
384
|
+
|
385
|
+
```ruby
|
386
|
+
"example string".starts_with?("e") #=> true
|
387
|
+
"example string".starts_with?("ex") #=> true
|
388
|
+
"example string".starts_with?("g") #=> false
|
389
|
+
```
|
390
|
+
|
391
|
+
####Humanize:####
|
392
|
+
Use the `humanize` and `humanize!` method to transform a string to a human readable string. `Rails Safe`
|
393
|
+
|
394
|
+
```ruby
|
395
|
+
"ExampleString".humanize #=> "Example string"
|
396
|
+
"example_string".humanize #=> "Example string"
|
397
|
+
```
|
398
|
+
|
399
|
+
####Titleize:####
|
400
|
+
Use the `titleize` and `titleize!` method to capitalize each word in a string. `Rails Safe`
|
401
|
+
|
402
|
+
```ruby
|
403
|
+
"example string".titleize #=> "Example String"
|
404
|
+
"example_string".titleize #=> "Example String"
|
405
|
+
"ExampleString".titleize #=> "Example String"
|
406
|
+
```
|
407
|
+
|
408
|
+
####Underscore:####
|
409
|
+
Use the `underscore` and `underscore!` method to transform a string to snakecase. `Rails Safe`
|
410
|
+
|
411
|
+
```ruby
|
412
|
+
"ExampleString".underscore #=> "example_string"
|
413
|
+
"exampleString".underscore #=> "example_string"
|
414
|
+
```
|
415
|
+
|
416
|
+
####Domain:####
|
417
|
+
Use the `domain` method to extract the domain name from a URL.
|
418
|
+
|
419
|
+
```ruby
|
420
|
+
"http://www.example.com/fake-page".domain #=> "www.example.com"
|
421
|
+
```
|
422
|
+
|
423
|
+
####Downcase:####
|
424
|
+
Use the `downcase?` method to determine if all characters are lowercase.
|
425
|
+
|
426
|
+
```ruby
|
427
|
+
"example".downcase? #=> true
|
428
|
+
"Example".downcase? #=> false
|
429
|
+
"EXAMPLE".downcase? #=> false
|
430
|
+
```
|
431
|
+
|
432
|
+
####Upcase:####
|
433
|
+
Use the `upcase?` method to determine if all characters are uppercase.
|
434
|
+
|
435
|
+
```ruby
|
436
|
+
"EXAMPLE".upcase? #=> true
|
437
|
+
"example".upcase? #=> false
|
438
|
+
"Example".upcase? #=> false
|
439
|
+
```
|
440
|
+
|
441
|
+
####Mixcase:####
|
442
|
+
Use the `mixcase?` method to determine if characters are mixedcase.
|
443
|
+
|
444
|
+
```ruby
|
445
|
+
"Example".mixedcase? #=> true
|
446
|
+
"EXAMPLE".mixedcase? #=> false
|
447
|
+
"example".mixedcase? #=> false
|
448
|
+
```
|
449
|
+
|
450
|
+
####Ellipsize:####
|
451
|
+
Use the `ellipsize` method to truncate a string in the middle.
|
452
|
+
|
453
|
+
**Options**
|
454
|
+
* Length: default to 30
|
455
|
+
* Offset: default to 4
|
456
|
+
* Separator: default to "..."
|
457
|
+
|
458
|
+
```ruby
|
459
|
+
"example string".ellipsize #=> "example string"
|
460
|
+
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".ellipsize #=> "0123...WXYZ"
|
461
|
+
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".ellipsize(offset: 2, separator: "+++") #=> "01+++YZ"
|
462
|
+
```
|
463
|
+
|
464
|
+
####Nix:####
|
465
|
+
Use the `nix` and `nix!` method to remove the first instance of a string.
|
466
|
+
|
467
|
+
```ruby
|
468
|
+
"this thing that thing".nix("thing") #=> "this that thing"
|
469
|
+
```
|
470
|
+
|
471
|
+
####GNix:####
|
472
|
+
Use the `gnix` and `gnix!` method to remove the every instance of a string.
|
473
|
+
|
474
|
+
```ruby
|
475
|
+
"this thing that thing".gnix("thing") #=> "this that "
|
476
|
+
```
|
477
|
+
|
478
|
+
####Pollute:####
|
479
|
+
Use the `pollute` method to pollute the space between every letter in a string, so it will be exempt from any impending string searches.
|
480
|
+
|
481
|
+
```ruby
|
482
|
+
"test".pollute #=> "t^--^--^e^--^--^s^--^--^t^--^--^"
|
483
|
+
"test".pollute("-") #=> "t-e-s-t-"
|
484
|
+
```
|
485
|
+
|
486
|
+
####Unpollute:####
|
487
|
+
Use the `unpollute` to remove the default or custom pollution character. Can also be used to remove an unwanted character.
|
488
|
+
|
489
|
+
```ruby
|
490
|
+
"t^--^--^e^--^--^s^--^--^t^--^--^".unpollute #=> "test"
|
491
|
+
"t-e-s-t-".unpollute #=> "test"
|
492
|
+
```
|
493
|
+
|
494
|
+
####Slugify:####
|
495
|
+
Use the `slugify` and `slugify!` method to generate a permalink-style string, with odd characters removed.
|
496
|
+
|
497
|
+
```ruby
|
498
|
+
"example".slugify #=> "example"
|
499
|
+
"example string".slugify #=> "example-string"
|
500
|
+
"Example string @@@ test!".slugify #=> "example-string-test"
|
501
|
+
```
|
502
|
+
|
503
|
+
####Strip Tags:####
|
504
|
+
Use the `strip_tags` and `strip_tags!` method to remove HTML tags from a string.
|
505
|
+
|
506
|
+
```ruby
|
507
|
+
"example".strip_tags #=> "example"
|
508
|
+
"<a href='http://example.com'>click</a>".strip_tags #=> "click"
|
509
|
+
"this is <b>bold</b> and <em>emphatic</em>".strip_tags #=> "this is bold and emphatic"
|
510
|
+
```
|
511
|
+
|
512
|
+
####Strip Whitespace:####
|
513
|
+
Use the `strip_whitespace` and `strip_whitespace!` method removes tab characters and instances of more than one space.
|
514
|
+
|
515
|
+
```ruby
|
516
|
+
"example string test".strip_whitespace #=> "example string test"
|
517
|
+
" this \t is also a test ".strip_whitespace #=> "this is also a test"
|
518
|
+
```
|
519
|
+
|
520
|
+
####Truncate Preserving Words:####
|
521
|
+
Use the `truncate_preserving_words` method to truncate a string while preserving words.
|
522
|
+
|
523
|
+
**Options**
|
524
|
+
* max_words: default to nil
|
525
|
+
* max_characters: default to 30
|
526
|
+
* Separator: default to "..."
|
527
|
+
|
528
|
+
```ruby
|
529
|
+
"example string".truncate_preserving_words #=> "example string"
|
530
|
+
"example string test another1 another2 another3".truncate_preserving_words #=> "example string test another1 ..."
|
531
|
+
"example string test another1 another2 another3".truncate_preserving_words(max_chars: 10, separator: "+++") #=> "example +++"
|
532
|
+
```
|
533
|
+
|
534
|
+
### TimeExtensions
|
535
|
+
|
536
|
+
####Format:####
|
537
|
+
Use the `format` method on a Date or Time object to format it using a human readable string.
|
538
|
+
|
539
|
+
**Rules**
|
540
|
+
* Characters: a-z 0-9 _
|
541
|
+
* Characters can only be used to generate a format part
|
542
|
+
|
543
|
+
```ruby
|
544
|
+
Time.now.format("year") #=> "2014"
|
545
|
+
Time.now.format("month_name day, year hour:minute ampm") #=> "January 09, 2014 02:31 pm"
|
546
|
+
```
|
547
|
+
|
548
|
+
| Name | Key | Equivalent `strftime` | Result |
|
549
|
+
| --- | --- | --- | --- |
|
550
|
+
| Month - digits zero-padded | `m` or `month` or `month_zero` | %m | (01..12) |
|
551
|
+
| Month - digits unpadded | `mm` or `Month` or `month_unpadded` | %-m | (1..12) |
|
552
|
+
| Month - digits blank-padded | `mmm` or `MONTH` or `day_blank` | %_m | ( 1..12) |
|
553
|
+
| Month - name | `mmmm` or `month_name` | %B | January |
|
554
|
+
| Month - name abbreviated | `mmmmm` or `month_name_abbr` | %b | Jan |
|
555
|
+
| Day - digits zero-padded | `d` or `day` or `day_zero` | %d | (01..31) |
|
556
|
+
| Day - digits unpadded | `dd` or `Day` or `day_unpadded` | %-d | (1..31) |
|
557
|
+
| Day - digits blank-padded | `ddd` or `DAY` or `day_blank` | %_d | ( 1..31) |
|
558
|
+
| Day - digits of the year | `dddd` or `day_of_the_year` | %j | (001..366) |
|
559
|
+
| Week - starting monday | `wwwww` or `week` | %M | (00..53) |
|
560
|
+
| Week - starting sunday | `wwwwww` or `weekday_offset` | %M | (00..53) |
|
561
|
+
| Weekday - starting monday | `w` or `weekday` | %M | (1..7) |
|
562
|
+
| Weekday - starting sunday | `ww` or `weekday` | %M | (0..6) |
|
563
|
+
| Weekday - name | `www` or `weekday_name` | %M | Sunday |
|
564
|
+
| Weekday - name abbreviated | `wwww` or `weekday_name_abbr` | %M | Sun |
|
565
|
+
| Year - digits two | `yy` or `yr` | %y | (00..99) |
|
566
|
+
| Year - digits four | `yyyy` or `year` | %Y | 1999 |
|
567
|
+
| Hour - digits zero-padded | `h` or `hour` or `hour_zero` | %H | (00..23) |
|
568
|
+
| Hour - digits blank-padded | `hh` or `HOUR` or `hour_blank` | %k | ( 0..23) |
|
569
|
+
| Hour - digits zero-padded | `hhh` or `hour_imperical` or `hour_imperical_zero` | %I | (01..12) |
|
570
|
+
| Hour - digits blank-padded | `hhhh` or `HOUR_IMPERICAL` or `hour_imperical_blank` | %l | ( 1..12) |
|
571
|
+
| Minute - minute | `n` or `minute` | %M | (00..59) |
|
572
|
+
| Second - second | `s` or `second` | %S | (00..60) |
|
573
|
+
| Meridian - lowercase | `ampm` or `meridian` | %p | am..pm |
|
574
|
+
| Meridian - uppercase | `AMPM` or `MERIDIAN` | %P | AM..PM |
|
575
|
+
| Time Zone - time zone | `z` or `time_zone` | %z | +0900 |
|
576
|
+
| Time Zone - hour and minute offset | `zz` or `time_zone_offset` | %z | +09:00 |
|
577
|
+
| Time Zone - hour, minute and second offset | `zzz` or `time_zone_offset_full` | %z | +09:00:00 |
|
578
|
+
|
579
|
+
####To Format:####
|
580
|
+
Use the `to_format` method on a Date or Time object to format it without having to use `strftime` method.
|
581
|
+
**For a full list check out the time extention file.**
|
582
|
+
|
583
|
+
```ruby
|
584
|
+
Time.now.to_format(:year) #=> "2014"
|
585
|
+
Time.now.to_format(:datetime) #=> "January 09, 2014 02:31 pm"
|
586
|
+
```
|
587
|
+
|
588
|
+
| Name | Key | Equivalent `strftime` | Result |
|
589
|
+
| --- | --- | --- | --- |
|
590
|
+
| Month - digits zero-padded | `:month` or `:month_zero` | %A | (01..12) |
|
591
|
+
| Month - digits unpadded | `:month_unpadded` | %a | (1..12) |
|
592
|
+
| Month - digits blank-padded | `:month_blank` | %a | ( 1..12) |
|
593
|
+
| Month - name | `:month_name` | %A | January |
|
594
|
+
| Month - name abbreviated | `:month_name_abbr` | %a | Jan |
|
595
|
+
| Weekday - digits zero-padded | `:weekday_zero` | %A | (01..31) |
|
596
|
+
| Weekday - digits unpadded | `:weekday_unpadded` | %a | (1..31) |
|
597
|
+
| Weekday - digits blank-padded | `:weekday_blank` | %a | ( 1..31) |
|
598
|
+
| Weekday - name | `:weekday_name` | %A | Sunday |
|
599
|
+
| Weekday - name abbreviated | `:weekday_name_abbr` | %a | Sun |
|
600
|
+
| Year - digits two | `:yr` | %y | (00..99) |
|
601
|
+
| Year - digits four | `:year` | %Y | 1999 |
|
602
|
+
| Hour - digits zero-padded | `:hour` or `:hour_zero` | %H | (00..23) |
|
603
|
+
| Hour - digits blank-padded | `:hour_blank` | %k | ( 0..23) |
|
604
|
+
| Hour - digits zero-padded imperical | `:hour_imperical_zero` | %I | (01..12) |
|
605
|
+
| Hour - digits blank-padded imperical | `:hour_imperical_blank` | %l | ( 1..12) |
|
606
|
+
| Minute - minute | `:minute` | %M | (00..59) |
|
607
|
+
| Second - second | `:second` | %S | (00..60) |
|
608
|
+
| Time Zone - time zone | `:time_zone` | %z | +0900 |
|
609
|
+
| Time Zone - hour and minute offset | `:time_zone_offset` | %z | +09:00 |
|
610
|
+
| Time Zone - hour, minute and second offset | `:time_zone_offset_full` | %z | +09:00:00 |
|
611
|
+
| Date - name | `:date` | %B %-d, %Y | January 9, 2014 |
|
612
|
+
| Date - name abbreviated | `:date_abbr` | %b %-d, %Y | Jan 9, 2014 |
|
613
|
+
| Date - iso | `:date_iso` | %Y-%m-%d | 2014-01-09 |
|
614
|
+
| Datetime - name | `:datetime` | %B %-d, %Y %H:%M | January 9, 2014 00:31 |
|
615
|
+
| Datetime - name abbreviated | `:datetime_abbr` | %b %-d, %Y %H:%M | Jan 9, 2014 00:31 |
|
616
|
+
| Datetime - iso | `:datetime_iso` | %Y-%m-%d %H:%M | 2014-01-09 00:31 |
|
617
|
+
| Datetime - name imperical | `:datetime_imperical` | %B %-d, %Y %H:%M | January 9, 2014 12:31 am |
|
618
|
+
| Datetime - name abbreviated imperical | `:datetime_imperical_abbr` | %b %-d, %Y %H:%M | Jan 9, 2014 12:31 am |
|
619
|
+
| Datetime - iso imperical | `:datetime_imperical_iso` | %Y-%m-%d %H:%M | 2014-01-09 12:31 am |
|
620
|
+
| Datetime - name time zone | `:datetime_tzn` | %B %-d, %Y %H:%M %Z | January 9, 2014 00:31 UTC |
|
621
|
+
| Datetime - name abbreviated time zone | `:datetime_abbr_tzn` | %b %-d, %Y %H:%M %Z | Jan 9, 2014 00:31 UTC |
|
622
|
+
| Datetime - iso time zone | `:datetime_iso_tzn` | %Y-%m-%d %H:%M %z | 2014-01-09 00:31 +0000 |
|
623
|
+
| Datetime - name imperical time zone | `:datetime_imperical_tzn` | %B %-d, %Y %H:%M %Z | January 9, 2014 12:31 am UTC |
|
624
|
+
| Datetime - name abbreviated imperical time zone | `:datetime_imperical_abbr_tzn` | %b %-d, %Y %H:%M %Z | Jan 9, 2014 12:31 am UTC |
|
625
|
+
| Datetime - iso imperical time zone | `:datetime_imperical_iso_tzn` | %Y-%m-%d %H:%M %z | 2014-01-09 12:31 am +0000 |
|
626
|
+
| Day - name | `:day` | %B %-d | January 9 |
|
627
|
+
| Day - name abbreviated | `:day_abbr` | %b %-d | Jan 9 |
|
628
|
+
| Day - iso | `:day_iso` | %m-%d | 01-09 |
|
629
|
+
| Daytime - name | `:daytime` | %B %-d %H:%M | January 9 00:31 |
|
630
|
+
| Daytime - name abbreviated | `:daytime_abbr` | %b %-d %H:%M | Jan 9 00:31 |
|
631
|
+
| Daytime - iso | `:daytime_iso` | %m-%d %H:%M | 01-09 00:31 |
|
632
|
+
| Daytime - name imperical | `:daytime_imperical` | %B %-d %H:%M | January 9 12:31 am |
|
633
|
+
| Daytime - name abbreviated imperical | `:daytime_imperical_abbr` | %b %-d %H:%M | Jan 9 12:31 am |
|
634
|
+
| Daytime - iso imperical | `:daytime_imperical_iso` | %m-%d %H:%M | 01-09 12:31 am |
|
635
|
+
| Time - zero-padded | `:time` or `:time_zero` | %H:%M | 00:31 |
|
636
|
+
| Time - blank-padded | `:time_blank` | %k:%M %z | 0:31 |
|
637
|
+
| Time - with time zone | `:time_tz` | %H:%M %z | 00:31 +0000 |
|
638
|
+
| Time - with time zone name | `:time_tzn` | %H:%M %Z | 00:31 UTC |
|
639
|
+
|
640
|
+
## Contributing
|
641
|
+
|
642
|
+
1. Fork it ( http://github.com/<my-github-username>/nobiru/fork )
|
643
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
644
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
645
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
646
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|