lucky_case 0.1.3 → 0.2.4
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
- data/README.md +39 -13
- data/lib/lucky_case.rb +198 -33
- data/lib/lucky_case/string.rb +136 -25
- data/lib/lucky_case/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44cb7edfeae8e3d330f2709c441e2ed38b6b29c3aeec8039831606bd5f9489e6
|
4
|
+
data.tar.gz: df3a7a195ed45ca1b1a66571f6f5616403fd7e38dff9806d558c99ac72556e5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3785b9b371fed6dd88db71b6dd89e01ccd540c54a4f00b04f7b5fc29e9fd6ea38d6b5eb6fc8c52a4a826e5903edb3096a514aff87b5a812ff6cb3d313c49abcf
|
7
|
+
data.tar.gz: e8677f3b9ea32606c41c8b60a30730cc303f206c644c386129720d154705d7e4dda99a982ef0f027b916682e48ea4d4567d0aee0b883c7f7657405ab8226717f
|
data/README.md
CHANGED
@@ -25,21 +25,27 @@ Useful when working with conventions, where class names, method names and file n
|
|
25
25
|
|
26
26
|
You can either use the static LuckyCase class with its method or optionally monkey patch the String class.
|
27
27
|
|
28
|
-
###
|
28
|
+
### Approach 1: Using the static class
|
29
29
|
```ruby
|
30
30
|
require 'lucky_case'
|
31
31
|
|
32
32
|
# converters
|
33
|
-
LuckyCase.snake_case('
|
34
|
-
LuckyCase.upper_snake_case('
|
35
|
-
LuckyCase.pascal_case('
|
36
|
-
LuckyCase.camel_case('
|
37
|
-
LuckyCase.dash_case('
|
38
|
-
LuckyCase.upper_dash_case('
|
39
|
-
LuckyCase.train_case('
|
33
|
+
LuckyCase.snake_case('PascalToSnake') # => 'pascal_to_snake'
|
34
|
+
LuckyCase.upper_snake_case('Train-To-Upper-Snake') # => 'TRAIN_TO_UPPER_SNAKE'
|
35
|
+
LuckyCase.pascal_case('snake_to_pascal') # => 'SnakeToPascal'
|
36
|
+
LuckyCase.camel_case('dash-to-camel-case') # => 'dashToCamelCase'
|
37
|
+
LuckyCase.dash_case('PascalToDashCase') # => 'pascal-to-dash-case'
|
38
|
+
LuckyCase.upper_dash_case('PascalToUpperDash') # => 'PASCAL-TO-UPPER-DASH'
|
39
|
+
LuckyCase.train_case('snake_to_train_case') # => 'Snake-To-Train-Case'
|
40
|
+
LuckyCase.word_case('PascalToWordCase') # => 'pascal to word case'
|
41
|
+
LuckyCase.upper_word_case('PascalToUpperWord') # => 'PASCAL TO UPPER WORD'
|
42
|
+
LuckyCase.capital_word_case('snake_to_capital_word') # => 'Snake To Capital Word'
|
43
|
+
LuckyCase.sentence_case('snake_to_sentence_case') # => 'Snake to sentence case'
|
40
44
|
LuckyCase.mixed_case('example_snake_string') # => 'Example-snake_STRING'
|
45
|
+
|
41
46
|
# converter by type
|
42
47
|
LuckyCase.convert_case('some_snake', :pascal_case) # => 'SomeSnake'
|
48
|
+
|
43
49
|
# transformers
|
44
50
|
LuckyCase.lower_case('Some_FuckingShit') # => 'some_fuckingshit'
|
45
51
|
LuckyCase.upper_case('Some_FuckingShit') # => 'SOME_FUCKINGSHIT'
|
@@ -51,29 +57,41 @@ LuckyCase.constantize('SOME_CONSTANT') # => SomeConstant
|
|
51
57
|
LuckyCase.constantize('some/path_example/folder') # => Some::PathExample::Folder
|
52
58
|
LuckyCase.deconstantize(SomeConstant) # => 'some_constant'
|
53
59
|
LuckyCase.deconstantize(Some::PathExample::Folder, case_type: :camel_case) # => 'some/pathExample/folder'
|
54
|
-
|
60
|
+
|
61
|
+
# identifiers
|
55
62
|
LuckyCase.case('this_can_only_be_snake_case') # => :snake_case
|
56
|
-
LuckyCase.cases('
|
63
|
+
LuckyCase.cases('validformultiple') # => [ :snake_case, :camel_case, :dash_case, :word_case ]
|
64
|
+
|
57
65
|
# checkers
|
58
66
|
LuckyCase.snake_case?('valid_snake_case') # => true
|
59
|
-
LuckyCase.upper_snake_case?('
|
67
|
+
LuckyCase.upper_snake_case?('UPPER_SNAKE') # => true
|
60
68
|
LuckyCase.pascal_case?('PascalCase') # => true
|
61
69
|
LuckyCase.camel_case?('camelCase') # => true
|
62
70
|
LuckyCase.dash_case?('dash-case') # => true
|
63
71
|
LuckyCase.upper_dash_case?('DASH-CASE') # => true
|
64
72
|
LuckyCase.train_case?('Train-Case') # => true
|
73
|
+
LuckyCase.word_case?('word case') # => true
|
74
|
+
LuckyCase.upper_word_case?('UPPER WORD CASE') # => true
|
75
|
+
LuckyCase.capital_word_case?('Capital Word Case') # => true
|
76
|
+
LuckyCase.sentence_case?('Sentence case string') # => true
|
65
77
|
LuckyCase.mixed_case?('mixed_Case') # => true
|
66
78
|
LuckyCase.upper_case?('UPPER50984') # => true
|
67
79
|
LuckyCase.lower_case?('lower_cheese') # => true
|
68
80
|
LuckyCase.capital?('Some') # => true
|
69
81
|
LuckyCase.capitalized?('some') # => false
|
82
|
+
LuckyCase.valid_case_type?(:snake_case) # => true
|
83
|
+
LuckyCase.valid_case_type?(:apple_case) # => false
|
84
|
+
LuckyCase.valid_case_string?('validString') # => true
|
85
|
+
LuckyCase.valid_case_string?('1nV4lid$tring') # => false
|
70
86
|
```
|
71
87
|
|
72
|
-
### Monkey patch the string class
|
88
|
+
### Approach 2: Monkey patch the string class
|
73
89
|
|
74
|
-
With monkey patching you can access the same methods (except deconstantize) of LuckyCase directly from strings.
|
90
|
+
With monkey patching you can access the same methods (except deconstantize, valid_case_type?) of LuckyCase directly from strings.
|
75
91
|
Additionally they provide versions with exclamation mark for direct manipulation.
|
76
92
|
|
93
|
+
Because the method #case is so general and could lead to conflicts, it is called #letter_case here.
|
94
|
+
|
77
95
|
```ruby
|
78
96
|
require 'lucky_case/string'
|
79
97
|
|
@@ -82,9 +100,17 @@ a = 'ExampleString'
|
|
82
100
|
a.pascal_case? # => true
|
83
101
|
a.snake_case # => 'example_string'
|
84
102
|
a # => 'ExampleString'
|
103
|
+
|
85
104
|
# string variable manipulation
|
86
105
|
a.snake_case! # => 'example_string'
|
87
106
|
a # => 'example_string'
|
107
|
+
...
|
108
|
+
|
109
|
+
# identifiers
|
110
|
+
# got a other method name here because 'case' might be to common and cause conflicts
|
111
|
+
b = 'example'
|
112
|
+
b.letter_case # => :snake_case
|
113
|
+
b.letter_cases # => [ :snake_case, :camel_case, :dash_case, :word_case ]
|
88
114
|
```
|
89
115
|
|
90
116
|
|
data/lib/lucky_case.rb
CHANGED
@@ -18,7 +18,11 @@ module LuckyCase
|
|
18
18
|
dash_case: /^([[:lower:]]){1}[[:lower:]\-0-9]*[[:lower:]0-9]+$/,
|
19
19
|
upper_dash_case: /^([[:upper:]]){1}[[:upper:]\-0-9]*[[:upper:]0-9]+$/,
|
20
20
|
train_case: /^([[:upper:]][[:lower:]0-9]*\-|[0-9]+\-)*([[:upper:]][[:lower:]0-9]*)$/,
|
21
|
-
|
21
|
+
word_case: /^[[:lower:]]{1}[[:lower:] 0-9]+$/,
|
22
|
+
upper_word_case: /^[[:upper:]]{1}[[:upper:] 0-9]+$/,
|
23
|
+
capital_word_case: /^([[:upper:]][[:lower:]0-9]*\ |[0-9]+\ )*([[:upper:]][[:lower:]0-9]*)$/,
|
24
|
+
sentence_case: /^[[:upper:]]{1}[[:lower:] 0-9]+$/,
|
25
|
+
mixed_case: /^[[:upper:][:lower:]][[:upper:][:lower:]_\-0-9 ]*$/,
|
22
26
|
}
|
23
27
|
|
24
28
|
FORMATS = {
|
@@ -73,9 +77,9 @@ module LuckyCase
|
|
73
77
|
end
|
74
78
|
if matched_cases.empty?
|
75
79
|
nil
|
76
|
-
# reject mixed case if there are other matches
|
77
|
-
# because it would always be included if one other case matches
|
78
80
|
elsif matched_cases.size > 1
|
81
|
+
# reject :mixed_case if there are other matches
|
82
|
+
# because it would always be included if one other case matches
|
79
83
|
matched_cases.reject { |e| e == :mixed_case }
|
80
84
|
else
|
81
85
|
matched_cases
|
@@ -97,11 +101,31 @@ module LuckyCase
|
|
97
101
|
raise InvalidCaseError.new error_message
|
98
102
|
end
|
99
103
|
|
104
|
+
# Check if given case type is a valid case type
|
105
|
+
#
|
106
|
+
# @param [Symbol, String] case_type
|
107
|
+
# @return [Boolean]
|
108
|
+
def self.valid_case_type?(case_type)
|
109
|
+
if CASES.keys.include? case_type.to_sym
|
110
|
+
true
|
111
|
+
else
|
112
|
+
false
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
# Check if the string matches any of the available cases
|
117
|
+
#
|
118
|
+
# @param [String] string
|
119
|
+
# @return [Boolean]
|
120
|
+
def self.valid_case_string?(string)
|
121
|
+
self.case(string) != nil
|
122
|
+
end
|
123
|
+
|
100
124
|
#----------------------------------------------------------------------------------------------------
|
101
125
|
# UPPER CASE
|
102
126
|
#----------------------------------------------------------------------------------------------------
|
103
127
|
|
104
|
-
#
|
128
|
+
# Convert all characters inside the string
|
105
129
|
# into upper case
|
106
130
|
#
|
107
131
|
# @example conversion
|
@@ -113,7 +137,7 @@ module LuckyCase
|
|
113
137
|
string.upcase
|
114
138
|
end
|
115
139
|
|
116
|
-
#
|
140
|
+
# Check if all characters inside the string are upper case
|
117
141
|
#
|
118
142
|
# @param [String] string to check
|
119
143
|
# @return [Boolean]
|
@@ -125,7 +149,7 @@ module LuckyCase
|
|
125
149
|
# LOWER CASE
|
126
150
|
#----------------------------------------------------------------------------------------------------
|
127
151
|
|
128
|
-
#
|
152
|
+
# Convert all characters inside the string
|
129
153
|
# into lower case
|
130
154
|
#
|
131
155
|
# @example conversion
|
@@ -137,7 +161,7 @@ module LuckyCase
|
|
137
161
|
string.downcase
|
138
162
|
end
|
139
163
|
|
140
|
-
#
|
164
|
+
# Check if all characters inside the string are lower case
|
141
165
|
#
|
142
166
|
# @param [String] string to check
|
143
167
|
# @return [Boolean]
|
@@ -149,7 +173,7 @@ module LuckyCase
|
|
149
173
|
# SNAKE CASE
|
150
174
|
#----------------------------------------------------------------------------------------------------
|
151
175
|
|
152
|
-
#
|
176
|
+
# Convert the given string from any case
|
153
177
|
# into snake case
|
154
178
|
#
|
155
179
|
# @example conversion
|
@@ -168,7 +192,7 @@ module LuckyCase
|
|
168
192
|
end
|
169
193
|
end
|
170
194
|
|
171
|
-
#
|
195
|
+
# Check if the string is snake case
|
172
196
|
#
|
173
197
|
# @param [String] string to check
|
174
198
|
# @param [Boolean] allow_prefixed_underscores
|
@@ -182,7 +206,7 @@ module LuckyCase
|
|
182
206
|
_case_match? s, :snake_case
|
183
207
|
end
|
184
208
|
|
185
|
-
#
|
209
|
+
# Convert the given string from any case
|
186
210
|
# into upper snake case
|
187
211
|
#
|
188
212
|
# @example conversion
|
@@ -201,7 +225,7 @@ module LuckyCase
|
|
201
225
|
end
|
202
226
|
end
|
203
227
|
|
204
|
-
#
|
228
|
+
# Check if the string is upper snake case
|
205
229
|
#
|
206
230
|
# @param [String] string to check
|
207
231
|
# @param [Boolean] allow_prefixed_underscores
|
@@ -219,7 +243,7 @@ module LuckyCase
|
|
219
243
|
# PASCAL CASE
|
220
244
|
#----------------------------------------------------------------------------------------------------
|
221
245
|
|
222
|
-
#
|
246
|
+
# Convert the given string from any case
|
223
247
|
# into pascal case
|
224
248
|
#
|
225
249
|
# @example conversion
|
@@ -238,7 +262,7 @@ module LuckyCase
|
|
238
262
|
end
|
239
263
|
end
|
240
264
|
|
241
|
-
#
|
265
|
+
# Check if the string is upper pascal case
|
242
266
|
#
|
243
267
|
# @param [String] string to check
|
244
268
|
# @param [Boolean] allow_prefixed_underscores
|
@@ -256,7 +280,7 @@ module LuckyCase
|
|
256
280
|
# CAMEL CASE
|
257
281
|
#----------------------------------------------------------------------------------------------------
|
258
282
|
|
259
|
-
#
|
283
|
+
# Convert the given string from any case
|
260
284
|
# into camel case
|
261
285
|
#
|
262
286
|
# @example conversion
|
@@ -275,7 +299,7 @@ module LuckyCase
|
|
275
299
|
end
|
276
300
|
end
|
277
301
|
|
278
|
-
#
|
302
|
+
# Check if the string is camel case
|
279
303
|
#
|
280
304
|
# @param [String] string to check
|
281
305
|
# @param [Boolean] allow_prefixed_underscores
|
@@ -293,7 +317,7 @@ module LuckyCase
|
|
293
317
|
# DASH CASE
|
294
318
|
#----------------------------------------------------------------------------------------------------
|
295
319
|
|
296
|
-
#
|
320
|
+
# Convert the given string from any case
|
297
321
|
# into dash case
|
298
322
|
#
|
299
323
|
# @example conversion
|
@@ -312,7 +336,7 @@ module LuckyCase
|
|
312
336
|
end
|
313
337
|
end
|
314
338
|
|
315
|
-
#
|
339
|
+
# Check if the string is dash case
|
316
340
|
#
|
317
341
|
# @param [String] string to check
|
318
342
|
# @param [Boolean] allow_prefixed_underscores
|
@@ -326,7 +350,7 @@ module LuckyCase
|
|
326
350
|
_case_match? s, :dash_case
|
327
351
|
end
|
328
352
|
|
329
|
-
#
|
353
|
+
# Convert the given string from any case
|
330
354
|
# into upper dash case
|
331
355
|
#
|
332
356
|
# @example conversion
|
@@ -340,7 +364,7 @@ module LuckyCase
|
|
340
364
|
upper_case s
|
341
365
|
end
|
342
366
|
|
343
|
-
#
|
367
|
+
# Check if the string is upper dash case
|
344
368
|
#
|
345
369
|
# @param [String] string to check
|
346
370
|
# @param [Boolean] allow_prefixed_underscores
|
@@ -358,7 +382,7 @@ module LuckyCase
|
|
358
382
|
# TRAIN CASE
|
359
383
|
#----------------------------------------------------------------------------------------------------
|
360
384
|
|
361
|
-
#
|
385
|
+
# Convert the given string from any case
|
362
386
|
# into train case
|
363
387
|
#
|
364
388
|
# @example conversion
|
@@ -377,7 +401,7 @@ module LuckyCase
|
|
377
401
|
end
|
378
402
|
end
|
379
403
|
|
380
|
-
#
|
404
|
+
# Check if the string is train case
|
381
405
|
#
|
382
406
|
# @param [String] string to check
|
383
407
|
# @param [Boolean] allow_prefixed_underscores
|
@@ -391,11 +415,151 @@ module LuckyCase
|
|
391
415
|
_case_match? s, :train_case
|
392
416
|
end
|
393
417
|
|
418
|
+
#----------------------------------------------------------------------------------------------------
|
419
|
+
# WORD CASE
|
420
|
+
#----------------------------------------------------------------------------------------------------
|
421
|
+
|
422
|
+
# Convert the given string from any case
|
423
|
+
# into word case
|
424
|
+
#
|
425
|
+
# @example conversion
|
426
|
+
# 'this-isAnExample_string' => 'this is an example string'
|
427
|
+
#
|
428
|
+
# @param [String] string to convert
|
429
|
+
# @param [Boolean] preserve_prefixed_underscores
|
430
|
+
# @return [String]
|
431
|
+
def self.word_case(string, preserve_prefixed_underscores: true)
|
432
|
+
a = split_case_string string
|
433
|
+
converted = a.join(' ')
|
434
|
+
if preserve_prefixed_underscores
|
435
|
+
underscores_at_start(string) + converted
|
436
|
+
else
|
437
|
+
converted
|
438
|
+
end
|
439
|
+
end
|
440
|
+
|
441
|
+
# Check if the string is word case
|
442
|
+
#
|
443
|
+
# @param [String] string to check
|
444
|
+
# @param [Boolean] allow_prefixed_underscores
|
445
|
+
# @return [Boolean]
|
446
|
+
def self.word_case?(string, allow_prefixed_underscores: true)
|
447
|
+
s = if allow_prefixed_underscores
|
448
|
+
cut_underscores_at_start string
|
449
|
+
else
|
450
|
+
string
|
451
|
+
end
|
452
|
+
_case_match? s, :word_case
|
453
|
+
end
|
454
|
+
|
455
|
+
# Convert the given string from any case
|
456
|
+
# into upper word case
|
457
|
+
#
|
458
|
+
# @example conversion
|
459
|
+
# 'this-isAnExample_string' => 'THIS IS AN EXAMPLE STRING'
|
460
|
+
#
|
461
|
+
# @param [String] string to convert
|
462
|
+
# @param [Boolean] preserve_prefixed_underscores
|
463
|
+
# @return [String]
|
464
|
+
def self.upper_word_case(string, preserve_prefixed_underscores: true)
|
465
|
+
a = split_case_string string
|
466
|
+
converted = a.map { |e| upper_case e }.join(' ')
|
467
|
+
if preserve_prefixed_underscores
|
468
|
+
underscores_at_start(string) + converted
|
469
|
+
else
|
470
|
+
converted
|
471
|
+
end
|
472
|
+
end
|
473
|
+
|
474
|
+
# Check if the string is upper word case
|
475
|
+
#
|
476
|
+
# @param [String] string to check
|
477
|
+
# @param [Boolean] allow_prefixed_underscores
|
478
|
+
# @return [Boolean]
|
479
|
+
def self.upper_word_case?(string, allow_prefixed_underscores: true)
|
480
|
+
s = if allow_prefixed_underscores
|
481
|
+
cut_underscores_at_start string
|
482
|
+
else
|
483
|
+
string
|
484
|
+
end
|
485
|
+
_case_match? s, :upper_word_case
|
486
|
+
end
|
487
|
+
|
488
|
+
# Convert the given string from any case
|
489
|
+
# into capital word case
|
490
|
+
#
|
491
|
+
# @example conversion
|
492
|
+
# 'this-isAnExample_string' => 'This Is An Example String'
|
493
|
+
#
|
494
|
+
# @param [String] string to convert
|
495
|
+
# @param [Boolean] preserve_prefixed_underscores
|
496
|
+
# @return [String]
|
497
|
+
def self.capital_word_case(string, preserve_prefixed_underscores: true)
|
498
|
+
a = split_case_string string
|
499
|
+
converted = a.map { |e| capital e }.join(' ')
|
500
|
+
if preserve_prefixed_underscores
|
501
|
+
underscores_at_start(string) + converted
|
502
|
+
else
|
503
|
+
converted
|
504
|
+
end
|
505
|
+
end
|
506
|
+
|
507
|
+
# Check if the string is capital word case
|
508
|
+
#
|
509
|
+
# @param [String] string to check
|
510
|
+
# @param [Boolean] allow_prefixed_underscores
|
511
|
+
# @return [Boolean]
|
512
|
+
def self.capital_word_case?(string, allow_prefixed_underscores: true)
|
513
|
+
s = if allow_prefixed_underscores
|
514
|
+
cut_underscores_at_start string
|
515
|
+
else
|
516
|
+
string
|
517
|
+
end
|
518
|
+
_case_match? s, :capital_word_case
|
519
|
+
end
|
520
|
+
|
521
|
+
#----------------------------------------------------------------------------------------------------
|
522
|
+
# SENTENCE CASE
|
523
|
+
#----------------------------------------------------------------------------------------------------
|
524
|
+
|
525
|
+
# Convert the given string from any case
|
526
|
+
# into sentence case
|
527
|
+
#
|
528
|
+
# @example conversion
|
529
|
+
# 'this-isAnExample_string' => 'This is an example string'
|
530
|
+
#
|
531
|
+
# @param [String] string to convert
|
532
|
+
# @param [Boolean] preserve_prefixed_underscores
|
533
|
+
# @return [String]
|
534
|
+
def self.sentence_case(string, preserve_prefixed_underscores: true)
|
535
|
+
a = split_case_string string
|
536
|
+
converted = capital(a.join(' '))
|
537
|
+
if preserve_prefixed_underscores
|
538
|
+
underscores_at_start(string) + converted
|
539
|
+
else
|
540
|
+
converted
|
541
|
+
end
|
542
|
+
end
|
543
|
+
|
544
|
+
# Check if the string is sentence case
|
545
|
+
#
|
546
|
+
# @param [String] string to check
|
547
|
+
# @param [Boolean] allow_prefixed_underscores
|
548
|
+
# @return [Boolean]
|
549
|
+
def self.sentence_case?(string, allow_prefixed_underscores: true)
|
550
|
+
s = if allow_prefixed_underscores
|
551
|
+
cut_underscores_at_start string
|
552
|
+
else
|
553
|
+
string
|
554
|
+
end
|
555
|
+
_case_match? s, :sentence_case
|
556
|
+
end
|
557
|
+
|
394
558
|
#----------------------------------------------------------------------------------------------------
|
395
559
|
# CAPITALIZE
|
396
560
|
#----------------------------------------------------------------------------------------------------
|
397
561
|
|
398
|
-
#
|
562
|
+
# Convert the first character to capital
|
399
563
|
#
|
400
564
|
# @param [String] string to convert
|
401
565
|
# @param [Boolean] skip_prefixed_underscores
|
@@ -415,7 +579,7 @@ module LuckyCase
|
|
415
579
|
end
|
416
580
|
end
|
417
581
|
|
418
|
-
#
|
582
|
+
# Convert the first character to capital
|
419
583
|
#
|
420
584
|
# @param [String] string to convert
|
421
585
|
# @param [Boolean] skip_prefixed_underscores
|
@@ -424,7 +588,7 @@ module LuckyCase
|
|
424
588
|
capital string, skip_prefixed_underscores: skip_prefixed_underscores
|
425
589
|
end
|
426
590
|
|
427
|
-
#
|
591
|
+
# Check if the strings first character is a capital letter
|
428
592
|
#
|
429
593
|
# @param [String] string to check
|
430
594
|
# @param [Boolean] skip_prefixed_underscores
|
@@ -438,7 +602,7 @@ module LuckyCase
|
|
438
602
|
_case_match? s, :capital
|
439
603
|
end
|
440
604
|
|
441
|
-
#
|
605
|
+
# Check if the strings first character is a capital letter
|
442
606
|
#
|
443
607
|
# @param [String] string to check
|
444
608
|
# @param [Boolean] skip_prefixed_underscores
|
@@ -451,7 +615,7 @@ module LuckyCase
|
|
451
615
|
# MIXED CASE
|
452
616
|
#----------------------------------------------------------------------------------------------------
|
453
617
|
|
454
|
-
#
|
618
|
+
# Convert the given string from any case
|
455
619
|
# into mixed case
|
456
620
|
#
|
457
621
|
# @example conversion
|
@@ -473,7 +637,7 @@ module LuckyCase
|
|
473
637
|
end
|
474
638
|
end
|
475
639
|
|
476
|
-
#
|
640
|
+
# Check if the string is a valid mixed case (without special characters!)
|
477
641
|
#
|
478
642
|
# @param [String] string to check
|
479
643
|
# @return [Boolean]
|
@@ -528,7 +692,7 @@ module LuckyCase
|
|
528
692
|
# CONSTANTIZE
|
529
693
|
#----------------------------------------------------------------------------------------------------
|
530
694
|
|
531
|
-
#
|
695
|
+
# Convert the string from any case
|
532
696
|
# into pascal case and casts it into a constant
|
533
697
|
#
|
534
698
|
# @example conversion
|
@@ -539,7 +703,7 @@ module LuckyCase
|
|
539
703
|
# @param [Boolean] preserve_prefixed_underscores
|
540
704
|
# @return [Constant]
|
541
705
|
def self.constantize(string)
|
542
|
-
s = string.gsub('/','::')
|
706
|
+
s = string.gsub('/', '::')
|
543
707
|
constants = if s.include? '::'
|
544
708
|
s.split('::')
|
545
709
|
else
|
@@ -586,7 +750,7 @@ module LuckyCase
|
|
586
750
|
#----------------------------------------------------------------------------------------------------
|
587
751
|
# HELPERS
|
588
752
|
#----------------------------------------------------------------------------------------------------
|
589
|
-
|
753
|
+
|
590
754
|
# Return string without underscores at the start
|
591
755
|
#
|
592
756
|
# @param [String] string
|
@@ -627,6 +791,7 @@ module LuckyCase
|
|
627
791
|
def self.split_case_string(string)
|
628
792
|
s = cut_underscores_at_start string
|
629
793
|
s = s.gsub(/([[:upper:]])/, '_\1') unless upper_case? s # prepend all upper characters with underscore
|
794
|
+
s = s.gsub(' ', '_') # replace all spaces with underscore
|
630
795
|
s = s.gsub('-', '_') # replace all dashes with underscore
|
631
796
|
s = cut_underscores_at_start s
|
632
797
|
s.downcase.split('_').reject(&:empty?) # split everything by underscore
|
@@ -637,10 +802,10 @@ module LuckyCase
|
|
637
802
|
# Check if the given case matches the string
|
638
803
|
#
|
639
804
|
# @param [String] string
|
640
|
-
# @param [Symbol,String]
|
805
|
+
# @param [Symbol,String] case_type
|
641
806
|
# @return [Boolean]
|
642
|
-
def self._case_match?(string,
|
643
|
-
!!(string =~ CASES[
|
807
|
+
def self._case_match?(string, case_type)
|
808
|
+
!!(string =~ CASES[case_type.to_sym])
|
644
809
|
end
|
645
810
|
|
646
811
|
#----------------------------------------------------------------------------------------------------
|
data/lib/lucky_case/string.rb
CHANGED
@@ -46,11 +46,18 @@ class String
|
|
46
46
|
set_self_value self.convert_case(case_type, preserve_prefixed_underscores: preserve_prefixed_underscores)
|
47
47
|
end
|
48
48
|
|
49
|
+
# Check if the string matches any of the available cases
|
50
|
+
#
|
51
|
+
# @return [Boolean]
|
52
|
+
def valid_case_string?()
|
53
|
+
LuckyCase.case(self) != nil
|
54
|
+
end
|
55
|
+
|
49
56
|
#----------------------------------------------------------------------------------------------------
|
50
57
|
# UPPER CASE
|
51
58
|
#----------------------------------------------------------------------------------------------------
|
52
59
|
|
53
|
-
#
|
60
|
+
# Convert all characters inside the string
|
54
61
|
# into upper case
|
55
62
|
#
|
56
63
|
# @example conversion
|
@@ -65,7 +72,7 @@ class String
|
|
65
72
|
set_self_value self.upper_case
|
66
73
|
end
|
67
74
|
|
68
|
-
#
|
75
|
+
# Check if all characters inside the string are upper case
|
69
76
|
#
|
70
77
|
# @return [Boolean]
|
71
78
|
def upper_case?()
|
@@ -76,7 +83,7 @@ class String
|
|
76
83
|
# LOWER CASE
|
77
84
|
#----------------------------------------------------------------------------------------------------
|
78
85
|
|
79
|
-
#
|
86
|
+
# Convert all characters inside the string
|
80
87
|
# into lower case
|
81
88
|
#
|
82
89
|
# @example conversion
|
@@ -91,7 +98,7 @@ class String
|
|
91
98
|
set_self_value self.lower_case
|
92
99
|
end
|
93
100
|
|
94
|
-
#
|
101
|
+
# Check if all characters inside the string are lower case
|
95
102
|
#
|
96
103
|
# @return [Boolean]
|
97
104
|
def lower_case?()
|
@@ -102,7 +109,7 @@ class String
|
|
102
109
|
# SNAKE CASE
|
103
110
|
#----------------------------------------------------------------------------------------------------
|
104
111
|
|
105
|
-
#
|
112
|
+
# Convert the given string from any case
|
106
113
|
# into snake case
|
107
114
|
#
|
108
115
|
# @example conversion
|
@@ -118,7 +125,7 @@ class String
|
|
118
125
|
set_self_value self.snake_case preserve_prefixed_underscores: preserve_prefixed_underscores
|
119
126
|
end
|
120
127
|
|
121
|
-
#
|
128
|
+
# Check if the string is snake case
|
122
129
|
#
|
123
130
|
# @param [Boolean] allow_prefixed_underscores
|
124
131
|
# @return [Boolean]
|
@@ -126,7 +133,7 @@ class String
|
|
126
133
|
LuckyCase.snake_case? self, allow_prefixed_underscores: allow_prefixed_underscores
|
127
134
|
end
|
128
135
|
|
129
|
-
#
|
136
|
+
# Convert the given string from any case
|
130
137
|
# into upper snake case
|
131
138
|
#
|
132
139
|
# @example conversion
|
@@ -142,7 +149,7 @@ class String
|
|
142
149
|
set_self_value self.upper_snake_case preserve_prefixed_underscores: preserve_prefixed_underscores
|
143
150
|
end
|
144
151
|
|
145
|
-
#
|
152
|
+
# Check if the string is upper snake case
|
146
153
|
#
|
147
154
|
# @param [Boolean] allow_prefixed_underscores
|
148
155
|
# @return [Boolean]
|
@@ -154,7 +161,7 @@ class String
|
|
154
161
|
# PASCAL CASE
|
155
162
|
#----------------------------------------------------------------------------------------------------
|
156
163
|
|
157
|
-
#
|
164
|
+
# Convert the given string from any case
|
158
165
|
# into pascal case
|
159
166
|
#
|
160
167
|
# @example conversion
|
@@ -170,7 +177,7 @@ class String
|
|
170
177
|
set_self_value self.pascal_case preserve_prefixed_underscores: preserve_prefixed_underscores
|
171
178
|
end
|
172
179
|
|
173
|
-
#
|
180
|
+
# Check if the string is upper pascal case
|
174
181
|
#
|
175
182
|
# @param [Boolean] allow_prefixed_underscores
|
176
183
|
# @return [Boolean]
|
@@ -182,7 +189,7 @@ class String
|
|
182
189
|
# CAMEL CASE
|
183
190
|
#----------------------------------------------------------------------------------------------------
|
184
191
|
|
185
|
-
#
|
192
|
+
# Convert the given string from any case
|
186
193
|
# into camel case
|
187
194
|
#
|
188
195
|
# @example conversion
|
@@ -198,7 +205,7 @@ class String
|
|
198
205
|
set_self_value self.camel_case preserve_prefixed_underscores: preserve_prefixed_underscores
|
199
206
|
end
|
200
207
|
|
201
|
-
#
|
208
|
+
# Check if the string is camel case
|
202
209
|
#
|
203
210
|
# @param [Boolean] allow_prefixed_underscores
|
204
211
|
# @return [Boolean]
|
@@ -210,7 +217,7 @@ class String
|
|
210
217
|
# DASH CASE
|
211
218
|
#----------------------------------------------------------------------------------------------------
|
212
219
|
|
213
|
-
#
|
220
|
+
# Convert the given string from any case
|
214
221
|
# into dash case
|
215
222
|
#
|
216
223
|
# @example conversion
|
@@ -226,7 +233,7 @@ class String
|
|
226
233
|
set_self_value self.dash_case preserve_prefixed_underscores: preserve_prefixed_underscores
|
227
234
|
end
|
228
235
|
|
229
|
-
#
|
236
|
+
# Check if the string is dash case
|
230
237
|
#
|
231
238
|
# @param [Boolean] allow_prefixed_underscores
|
232
239
|
# @return [Boolean]
|
@@ -234,7 +241,7 @@ class String
|
|
234
241
|
LuckyCase.dash_case? self, allow_prefixed_underscores: allow_prefixed_underscores
|
235
242
|
end
|
236
243
|
|
237
|
-
#
|
244
|
+
# Convert the given string from any case
|
238
245
|
# into upper dash case
|
239
246
|
#
|
240
247
|
# @example conversion
|
@@ -250,7 +257,7 @@ class String
|
|
250
257
|
set_self_value self.upper_dash_case preserve_prefixed_underscores: preserve_prefixed_underscores
|
251
258
|
end
|
252
259
|
|
253
|
-
#
|
260
|
+
# Check if the string is upper dash case
|
254
261
|
#
|
255
262
|
# @param [Boolean] allow_prefixed_underscores
|
256
263
|
# @return [Boolean]
|
@@ -262,7 +269,7 @@ class String
|
|
262
269
|
# TRAIN CASE
|
263
270
|
#----------------------------------------------------------------------------------------------------
|
264
271
|
|
265
|
-
#
|
272
|
+
# Convert the given string from any case
|
266
273
|
# into train case
|
267
274
|
#
|
268
275
|
# @example conversion
|
@@ -278,7 +285,7 @@ class String
|
|
278
285
|
set_self_value self.train_case preserve_prefixed_underscores: preserve_prefixed_underscores
|
279
286
|
end
|
280
287
|
|
281
|
-
#
|
288
|
+
# Check if the string is train case
|
282
289
|
#
|
283
290
|
# @param [Boolean] allow_prefixed_underscores
|
284
291
|
# @return [Boolean]
|
@@ -286,11 +293,115 @@ class String
|
|
286
293
|
LuckyCase.train_case? self, allow_prefixed_underscores: allow_prefixed_underscores
|
287
294
|
end
|
288
295
|
|
296
|
+
#----------------------------------------------------------------------------------------------------
|
297
|
+
# WORD CASE
|
298
|
+
#----------------------------------------------------------------------------------------------------
|
299
|
+
|
300
|
+
# Convert the given string from any case
|
301
|
+
# into word case
|
302
|
+
#
|
303
|
+
# @example conversion
|
304
|
+
# 'this-isAnExample_string' => 'this is an example string'
|
305
|
+
#
|
306
|
+
# @param [Boolean] preserve_prefixed_underscores
|
307
|
+
# @return [String]
|
308
|
+
def word_case(preserve_prefixed_underscores: true)
|
309
|
+
LuckyCase.word_case self, preserve_prefixed_underscores: preserve_prefixed_underscores
|
310
|
+
end
|
311
|
+
|
312
|
+
def word_case!(preserve_prefixed_underscores: true)
|
313
|
+
set_self_value self.word_case preserve_prefixed_underscores: preserve_prefixed_underscores
|
314
|
+
end
|
315
|
+
|
316
|
+
# Check if the string is word case
|
317
|
+
#
|
318
|
+
# @param [Boolean] allow_prefixed_underscores
|
319
|
+
# @return [Boolean]
|
320
|
+
def word_case?(allow_prefixed_underscores: true)
|
321
|
+
LuckyCase.word_case? self, allow_prefixed_underscores: allow_prefixed_underscores
|
322
|
+
end
|
323
|
+
|
324
|
+
# Convert the given string from any case
|
325
|
+
# into upper word case
|
326
|
+
#
|
327
|
+
# @example conversion
|
328
|
+
# 'this-isAnExample_string' => 'THIS IS AN EXAMPLE STRING'
|
329
|
+
#
|
330
|
+
# @param [Boolean] preserve_prefixed_underscores
|
331
|
+
# @return [String]
|
332
|
+
def upper_word_case(preserve_prefixed_underscores: true)
|
333
|
+
LuckyCase.upper_word_case self, preserve_prefixed_underscores: preserve_prefixed_underscores
|
334
|
+
end
|
335
|
+
|
336
|
+
def upper_word_case!(preserve_prefixed_underscores: true)
|
337
|
+
set_self_value self.upper_word_case preserve_prefixed_underscores: preserve_prefixed_underscores
|
338
|
+
end
|
339
|
+
|
340
|
+
# Check if the string is upper word case
|
341
|
+
#
|
342
|
+
# @param [Boolean] allow_prefixed_underscores
|
343
|
+
# @return [Boolean]
|
344
|
+
def upper_word_case?(allow_prefixed_underscores: true)
|
345
|
+
LuckyCase.upper_word_case? self, allow_prefixed_underscores: allow_prefixed_underscores
|
346
|
+
end
|
347
|
+
|
348
|
+
# Convert the given string from any case
|
349
|
+
# into capital word case
|
350
|
+
#
|
351
|
+
# @example conversion
|
352
|
+
# 'this-isAnExample_string' => 'This Is An Example String'
|
353
|
+
#
|
354
|
+
# @param [Boolean] preserve_prefixed_underscores
|
355
|
+
# @return [String]
|
356
|
+
def capital_word_case(preserve_prefixed_underscores: true)
|
357
|
+
LuckyCase.capital_word_case self, preserve_prefixed_underscores: preserve_prefixed_underscores
|
358
|
+
end
|
359
|
+
|
360
|
+
def capital_word_case!(preserve_prefixed_underscores: true)
|
361
|
+
set_self_value self.capital_word_case preserve_prefixed_underscores: preserve_prefixed_underscores
|
362
|
+
end
|
363
|
+
|
364
|
+
# Check if the string is capital word case
|
365
|
+
#
|
366
|
+
# @param [Boolean] allow_prefixed_underscores
|
367
|
+
# @return [Boolean]
|
368
|
+
def capital_word_case?(allow_prefixed_underscores: true)
|
369
|
+
LuckyCase.capital_word_case? self, allow_prefixed_underscores: allow_prefixed_underscores
|
370
|
+
end
|
371
|
+
|
372
|
+
#----------------------------------------------------------------------------------------------------
|
373
|
+
# SENTENCE CASE
|
374
|
+
#----------------------------------------------------------------------------------------------------
|
375
|
+
|
376
|
+
# Convert the given string from any case
|
377
|
+
# into sentence case
|
378
|
+
#
|
379
|
+
# @example conversion
|
380
|
+
# 'this-isAnExample_string' => 'This is an example string'
|
381
|
+
#
|
382
|
+
# @param [Boolean] preserve_prefixed_underscores
|
383
|
+
# @return [String]
|
384
|
+
def sentence_case(preserve_prefixed_underscores: true)
|
385
|
+
LuckyCase.sentence_case self, preserve_prefixed_underscores: preserve_prefixed_underscores
|
386
|
+
end
|
387
|
+
|
388
|
+
def sentence_case!(preserve_prefixed_underscores: true)
|
389
|
+
set_self_value self.sentence_case preserve_prefixed_underscores: preserve_prefixed_underscores
|
390
|
+
end
|
391
|
+
|
392
|
+
# Check if the string is sentence case
|
393
|
+
#
|
394
|
+
# @param [Boolean] allow_prefixed_underscores
|
395
|
+
# @return [Boolean]
|
396
|
+
def sentence_case?(allow_prefixed_underscores: true)
|
397
|
+
LuckyCase.sentence_case? self, allow_prefixed_underscores: allow_prefixed_underscores
|
398
|
+
end
|
399
|
+
|
289
400
|
#----------------------------------------------------------------------------------------------------
|
290
401
|
# CAPITALIZE
|
291
402
|
#----------------------------------------------------------------------------------------------------
|
292
403
|
|
293
|
-
#
|
404
|
+
# Convert the first character to capital
|
294
405
|
#
|
295
406
|
# @param [Boolean] skip_prefixed_underscores
|
296
407
|
# @return [String]
|
@@ -298,7 +409,7 @@ class String
|
|
298
409
|
LuckyCase.capitalize self, skip_prefixed_underscores: skip_prefixed_underscores
|
299
410
|
end
|
300
411
|
|
301
|
-
#
|
412
|
+
# Convert the first character to capital
|
302
413
|
#
|
303
414
|
# @param [Boolean] skip_prefixed_underscores
|
304
415
|
# @return [String]
|
@@ -314,7 +425,7 @@ class String
|
|
314
425
|
self.capital! skip_prefixed_underscores: skip_prefixed_underscores
|
315
426
|
end
|
316
427
|
|
317
|
-
#
|
428
|
+
# Check if the strings first character is a capital letter
|
318
429
|
#
|
319
430
|
# @param [Boolean] skip_prefixed_underscores
|
320
431
|
# @return [Boolean]
|
@@ -322,7 +433,7 @@ class String
|
|
322
433
|
LuckyCase.capital? self, skip_prefixed_underscores: skip_prefixed_underscores
|
323
434
|
end
|
324
435
|
|
325
|
-
#
|
436
|
+
# Check if the strings first character is a capital letter
|
326
437
|
#
|
327
438
|
# @param [Boolean] skip_prefixed_underscores
|
328
439
|
# @return [Boolean]
|
@@ -334,7 +445,7 @@ class String
|
|
334
445
|
# MIXED CASE
|
335
446
|
#----------------------------------------------------------------------------------------------------
|
336
447
|
|
337
|
-
#
|
448
|
+
# Convert the given string from any case
|
338
449
|
# into mixed case
|
339
450
|
#
|
340
451
|
# @example conversion
|
@@ -350,7 +461,7 @@ class String
|
|
350
461
|
set_self_value self.mixed_case preserve_prefixed_underscores: preserve_prefixed_underscores
|
351
462
|
end
|
352
463
|
|
353
|
-
#
|
464
|
+
# Check if the string is a valid mixed case (without special characters!)
|
354
465
|
#
|
355
466
|
# @return [Boolean]
|
356
467
|
def mixed_case?()
|
@@ -387,7 +498,7 @@ class String
|
|
387
498
|
# CONSTANTIZE
|
388
499
|
#----------------------------------------------------------------------------------------------------
|
389
500
|
|
390
|
-
#
|
501
|
+
# Convert the string from any case
|
391
502
|
# into pascal case and casts it into a constant
|
392
503
|
#
|
393
504
|
# @example conversion
|
data/lib/lucky_case/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lucky_case
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthäus J. N. Beyrle
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|