strings-case 0.2.0 → 0.4.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 +4 -4
- data/CHANGELOG.md +27 -1
- data/LICENSE.txt +1 -1
- data/README.md +231 -131
- data/lib/strings/case/acronyms.rb +111 -0
- data/lib/strings/case/configuration.rb +55 -0
- data/lib/strings/case/extensions.rb +56 -6
- data/lib/strings/case/version.rb +4 -4
- data/lib/strings/case.rb +248 -145
- metadata +17 -40
- data/Rakefile +0 -8
- data/spec/spec_helper.rb +0 -39
- data/spec/unit/camelcase_spec.rb +0 -51
- data/spec/unit/constcase_spec.rb +0 -44
- data/spec/unit/extensions_spec.rb +0 -75
- data/spec/unit/headercase_spec.rb +0 -50
- data/spec/unit/kebabcase_spec.rb +0 -48
- data/spec/unit/pascalcase_spec.rb +0 -51
- data/spec/unit/pathcase_spec.rb +0 -51
- data/spec/unit/sentencecase_spec.rb +0 -51
- data/spec/unit/snakecase_spec.rb +0 -51
- data/spec/unit/titlecase_spec.rb +0 -51
- data/strings-case.gemspec +0 -32
- data/tasks/console.rake +0 -11
- data/tasks/coverage.rake +0 -11
- data/tasks/spec.rake +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 321f95c3ae804e7b64eddc3566fcec63b3be6e5f81804cc236cc4187ff1fcc59
|
4
|
+
data.tar.gz: 7aee26f0af7f322b9c54b3c7e672849e050290de91c3b604be512a5ed7a839ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1e29519c62ae22f61797bf59f65c76fef22e7b6050db7a6bdec4c74c13495b9d61d2fcc4b9f51710c089a0923dc9c6ca10e6bdd52d56ca34075aca730be508f
|
7
|
+
data.tar.gz: bc754e29be3e76326de7da906d214abe7299e20a51ef5837996bf0cd8a1e20f03b127900e2e3de9fccae6ca546ae83bde277c6b9bf9e474597602a2efd7c668f
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,29 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
+
## [v0.4.0] - 2023-11-19
|
4
|
+
|
5
|
+
### Added
|
6
|
+
* Add the ability to configure acronyms on an instance
|
7
|
+
|
8
|
+
### Changed
|
9
|
+
* Change Strings::Case to be a class to allow instantiation
|
10
|
+
* Change all conversions to apply acronyms configured on an instance
|
11
|
+
* Change all conversions to preserve non-alphanumeric characters
|
12
|
+
* Change all conversions to allow for one-letter words
|
13
|
+
* Change gemspec to only package the source files and documentation
|
14
|
+
* Change parsecase method to improve performance
|
15
|
+
* Change extensions to require core library when loaded
|
16
|
+
* Change Strings::Case class to hide constants
|
17
|
+
* Change Strings::Case class to hide instance method
|
18
|
+
|
19
|
+
## [v0.3.0] - 2019-12-07
|
20
|
+
|
21
|
+
### Added
|
22
|
+
* Add performance tests
|
23
|
+
|
24
|
+
### Changed
|
25
|
+
* Change to double parsing speed and halve object allocations
|
26
|
+
|
3
27
|
## [v0.2.0] - 2019-11-23
|
4
28
|
|
5
29
|
### Fixed
|
@@ -9,5 +33,7 @@
|
|
9
33
|
|
10
34
|
* Initial implementation and release
|
11
35
|
|
36
|
+
[v0.4.0]: https://github.com/piotrmurach/strings-case/compare/v0.3.0...v0.4.0
|
37
|
+
[v0.3.0]: https://github.com/piotrmurach/strings-case/compare/v0.2.0...v0.3.0
|
12
38
|
[v0.2.0]: https://github.com/piotrmurach/strings-case/compare/v0.1.0...v0.2.0
|
13
|
-
[v0.1.0]: https://github.com/piotrmurach/strings-case/compare/v0.1.0
|
39
|
+
[v0.1.0]: https://github.com/piotrmurach/strings-case/compare/03679ef...v0.1.0
|
data/LICENSE.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2019 Piotr Murach
|
3
|
+
Copyright (c) 2019 Piotr Murach (piotrmurach.com)
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -5,45 +5,35 @@
|
|
5
5
|
# Strings::Case
|
6
6
|
|
7
7
|
[][gem]
|
8
|
-
[][gh_actions_ci]
|
9
9
|
[][appveyor]
|
10
10
|
[][codeclimate]
|
11
11
|
[][coverage]
|
12
|
-
[][inchpages]
|
13
12
|
|
14
13
|
[gem]: http://badge.fury.io/rb/strings-case
|
15
|
-
[
|
14
|
+
[gh_actions_ci]: https://github.com/piotrmurach/strings-case/actions/workflows/ci.yml
|
16
15
|
[appveyor]: https://ci.appveyor.com/project/piotrmurach/strings-case
|
17
16
|
[codeclimate]: https://codeclimate.com/github/piotrmurach/strings-case/maintainability
|
18
17
|
[coverage]: https://coveralls.io/github/piotrmurach/strings-case?branch=master
|
19
|
-
[inchpages]: http://inch-ci.org/github/piotrmurach/strings-case
|
20
18
|
|
21
19
|
> Convert strings to different cases.
|
22
20
|
|
23
|
-
**Strings::Case** provides string case conversions for
|
21
|
+
**Strings::Case** provides string case conversions for
|
22
|
+
[Strings](https://github.com/piotrmurach/strings) utilities.
|
24
23
|
|
25
|
-
##
|
26
|
-
|
27
|
-
Popular solutions that deal with transforming string cases work well in simple cases.(Sorry ;-) With more complex strings you may get unexpected results:
|
28
|
-
|
29
|
-
```ruby
|
30
|
-
ActiveSupport::Inflector.underscore("supports IPv6 on iOS?")
|
31
|
-
# => "supports i_pv6 on i_os?"
|
32
|
-
```
|
33
|
-
|
34
|
-
In contrast, `Strings::Case` aims to be able to transform any string to expected case:
|
24
|
+
## Features
|
35
25
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
26
|
+
* No monkey-patching String class
|
27
|
+
* Convert strings to many common cases
|
28
|
+
* Support for Unicode characters
|
29
|
+
* Preserve acronyms
|
40
30
|
|
41
31
|
## Installation
|
42
32
|
|
43
33
|
Add this line to your application's Gemfile:
|
44
34
|
|
45
35
|
```ruby
|
46
|
-
gem
|
36
|
+
gem "strings-case"
|
47
37
|
```
|
48
38
|
|
49
39
|
And then execute:
|
@@ -54,218 +44,307 @@ Or install it yourself as:
|
|
54
44
|
|
55
45
|
$ gem install strings-case
|
56
46
|
|
57
|
-
|
58
|
-
## Features
|
59
|
-
|
60
|
-
* No monkey-patching String class
|
61
|
-
* Converts any string to specified case
|
62
|
-
* Supports Unicode characters
|
63
|
-
* Provides many common case transformations
|
64
|
-
* Allows to preserve casing of acronyms
|
65
|
-
|
66
47
|
## Contents
|
67
48
|
|
68
49
|
* [1. Usage](#1-usage)
|
69
50
|
* [2. API](#2-api)
|
70
|
-
* [2.1
|
71
|
-
* [2.2
|
72
|
-
* [2.3
|
73
|
-
* [2.4
|
74
|
-
* [2.5
|
75
|
-
* [2.6
|
76
|
-
* [2.7
|
77
|
-
* [2.8
|
78
|
-
* [2.9
|
51
|
+
* [2.1 configure](#21-configure)
|
52
|
+
* [2.2 camelcase](#22-camelcase)
|
53
|
+
* [2.3 constcase](#23-constcase)
|
54
|
+
* [2.4 headercase](#24-headercase)
|
55
|
+
* [2.5 kebabcase \| dashcase](#25-kebabcase--dashcase)
|
56
|
+
* [2.6 pascalcase](#26-pascalcase)
|
57
|
+
* [2.7 pathcase](#27-pathcase)
|
58
|
+
* [2.8 sentencecase](#28-sentencecase)
|
59
|
+
* [2.9 snakecase \| underscore](#29-snakecase--underscore)
|
60
|
+
* [2.10 titlecase](#210-titlecase)
|
79
61
|
* [3. Extending String class](#3-extending-string-class)
|
80
62
|
|
81
63
|
## 1. Usage
|
82
64
|
|
83
|
-
|
65
|
+
Start by creating an instance of the `Strings::Case` class:
|
84
66
|
|
85
67
|
```ruby
|
86
|
-
Strings::Case.
|
68
|
+
strings = Strings::Case.new
|
69
|
+
```
|
70
|
+
|
71
|
+
Then, use one of many case conversion methods, for example,
|
72
|
+
the `snakecase` method:
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
strings.snakecase("FooBarBaz")
|
87
76
|
# => "foo_bar_baz"
|
88
|
-
|
77
|
+
```
|
89
78
|
|
90
|
-
|
79
|
+
As a convenience, case conversion methods are also available on class:
|
91
80
|
|
92
81
|
```ruby
|
93
|
-
Strings::Case.snakecase("
|
94
|
-
# => "
|
82
|
+
Strings::Case.snakecase("FooBarBaz")
|
83
|
+
# => "foo_bar_baz"
|
95
84
|
```
|
96
85
|
|
97
|
-
|
86
|
+
Case conversion methods will transform any string into an expected case:
|
98
87
|
|
99
88
|
```ruby
|
100
|
-
|
89
|
+
strings.snakecase("supports IPv6 on iOS?")
|
90
|
+
# => "supports_i_pv6_on_i_os"
|
91
|
+
```
|
92
|
+
|
93
|
+
The methods also support converting Unicode characters:
|
94
|
+
|
95
|
+
```ruby
|
96
|
+
strings.snakecase("ЗдравствуйтеПривет")
|
101
97
|
# => "здравствуйте_привет"
|
102
98
|
```
|
103
99
|
|
104
|
-
|
100
|
+
To preserve acronyms for all case conversions, configure them once
|
101
|
+
on an instance:
|
102
|
+
|
103
|
+
```ruby
|
104
|
+
strings.configure do |config|
|
105
|
+
config.acronym "IPv6"
|
106
|
+
config.acronym "iOS"
|
107
|
+
end
|
108
|
+
```
|
109
|
+
|
110
|
+
This will preserve acronyms for any case conversion method:
|
111
|
+
|
112
|
+
```ruby
|
113
|
+
strings.snakecase("supports IPv6 on iOS?")
|
114
|
+
# => "supports_ipv6_on_ios"
|
115
|
+
```
|
116
|
+
|
117
|
+
Or, use the `acronyms` keyword in a case conversion method:
|
118
|
+
|
119
|
+
```ruby
|
120
|
+
strings.snakecase("supports IPv6 on iOS?", acronyms: %w[IPv6 iOS])
|
121
|
+
# => "supports_ipv6_on_ios"
|
122
|
+
```
|
105
123
|
|
106
|
-
|
107
|
-
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
124
|
+
Here is a quick summary of available case conversions:
|
125
|
+
|
126
|
+
| Case Type | Result |
|
127
|
+
| ----------------------------- | --------------- |
|
128
|
+
| `camelcase("foo bar baz")` | `"fooBarBaz"` |
|
129
|
+
| `constcase("foo bar baz")` | `"FOO_BAR_BAZ"` |
|
130
|
+
| `headercase("foo bar baz")` | `"Foo-Bar-Baz"` |
|
131
|
+
| `kebabcase("foo bar baz")` | `"foo-bar-baz"` |
|
132
|
+
| `pascalcase("foo bar baz")` | `"FooBarBaz"` |
|
133
|
+
| `pathcase("foo bar baz")` | `"foo/bar/baz"` |
|
134
|
+
| `sentencecase("foo bar baz")` | `"Foo bar baz"` |
|
135
|
+
| `snakecase("foo bar baz")` | `"foo_bar_baz"` |
|
136
|
+
| `titlecase("foo bar baz")` | `"Foo Bar Baz"` |
|
117
137
|
|
118
138
|
## 2. API
|
119
139
|
|
120
|
-
### 2.1
|
140
|
+
### 2.1 configure
|
141
|
+
|
142
|
+
Use the `acronyms` keyword at initialization to add acronyms for all
|
143
|
+
case conversions.
|
121
144
|
|
122
|
-
|
145
|
+
For example, to add `HTTP` and `XML` acronyms:
|
123
146
|
|
124
147
|
```ruby
|
125
|
-
Strings::Case.
|
126
|
-
# => "httpResponseCode"
|
148
|
+
strings = Strings::Case.new(acronyms: %w[HTTP XML])
|
127
149
|
```
|
128
150
|
|
129
|
-
|
151
|
+
After initialization, use the `configure` method to add acronyms
|
152
|
+
in a block with the `acronym` method:
|
130
153
|
|
131
154
|
```ruby
|
132
|
-
|
133
|
-
|
155
|
+
strings.configure do |config|
|
156
|
+
config.acronym "HTTP"
|
157
|
+
config.acronym "XML"
|
158
|
+
|
159
|
+
# or config.acronym "HTTP", "XML"
|
160
|
+
end
|
134
161
|
```
|
135
162
|
|
136
|
-
|
163
|
+
Or, use the `configure` method with the `acronyms` keyword:
|
137
164
|
|
138
|
-
|
165
|
+
```ruby
|
166
|
+
strings.configure(acronyms: %w[HTTP XML])
|
167
|
+
```
|
168
|
+
|
169
|
+
This will result in a conversion preserving acronyms:
|
139
170
|
|
140
171
|
```ruby
|
141
|
-
|
142
|
-
# => "
|
172
|
+
strings.camelcase("xml_http_request")
|
173
|
+
# => "XMLHTTPRequest"
|
143
174
|
```
|
144
175
|
|
145
|
-
### 2.
|
176
|
+
### 2.2 camelcase
|
146
177
|
|
147
|
-
|
178
|
+
Use the `camelcase` method to convert a string into a camel case. It will
|
179
|
+
lowercase first and capitalise all remaining words, joining them by
|
180
|
+
removing any space. For example:
|
148
181
|
|
149
182
|
```ruby
|
150
|
-
|
151
|
-
# => "
|
183
|
+
strings.camelcase("PostgreSQL adapter")
|
184
|
+
# => "postgreSqlAdapter"
|
152
185
|
```
|
153
186
|
|
154
|
-
|
187
|
+
Use the `acronyms` keyword to preserve acronyms:
|
155
188
|
|
156
189
|
```ruby
|
157
|
-
|
158
|
-
# => "
|
190
|
+
strings.camelcase("PostgreSQL adapter", acronyms: ["PostgreSQL"])
|
191
|
+
# => "PostgreSQLAdapter"
|
159
192
|
```
|
160
|
-
### 2.4 kebabcase | dashcase
|
161
193
|
|
162
|
-
|
194
|
+
### 2.3 constcase
|
195
|
+
|
196
|
+
Use the `constcase` method to convert a string into a constant case. It will
|
197
|
+
uppercase all words and separate them with an underscore `_`. For example:
|
163
198
|
|
164
199
|
```ruby
|
165
|
-
|
166
|
-
# => "
|
200
|
+
strings.constcase("PostgreSQL adapter")
|
201
|
+
# => "POSTGRE_SQL_ADAPTER"
|
167
202
|
```
|
168
203
|
|
169
|
-
|
204
|
+
Use the `acronyms` keyword to preserve acronyms:
|
170
205
|
|
171
206
|
```ruby
|
172
|
-
|
207
|
+
strings.constcase("PostgreSQL adapter", acronyms: ["PostgreSQL"])
|
208
|
+
# => "POSTGRESQL_ADAPTER"
|
209
|
+
```
|
173
210
|
|
174
|
-
|
211
|
+
### 2.4 headercase
|
212
|
+
|
213
|
+
Use the `headercase` method to convert a string into a header case. It will
|
214
|
+
capitalise all words and separate them with a hyphen `-`. For example:
|
215
|
+
|
216
|
+
```ruby
|
217
|
+
strings.headercase("PostgreSQL adapter")
|
218
|
+
# => "Postgre-Sql-Adapter"
|
175
219
|
```
|
176
220
|
|
177
|
-
|
221
|
+
Use the `acronyms` keyword to preserve acronyms:
|
178
222
|
|
179
|
-
|
223
|
+
```ruby
|
224
|
+
strings.headercase("PostgreSQL adapter", acronyms: ["PostgreSQL"])
|
225
|
+
# => "PostgreSQL-Adapter"
|
226
|
+
```
|
227
|
+
|
228
|
+
### 2.5 kebabcase | dashcase
|
229
|
+
|
230
|
+
Use the `kebabcase` or `dashcase` method to convert a string into a kebab case.
|
231
|
+
It will lowercase all words and separate them with a dash `-` like a words
|
232
|
+
kebab on a skewer. For example:
|
180
233
|
|
181
234
|
```ruby
|
182
|
-
|
183
|
-
# => "
|
235
|
+
strings.kebabcase("PostgreSQL adapter")
|
236
|
+
# => "postgre-sql-adapter"
|
184
237
|
```
|
185
238
|
|
186
|
-
|
239
|
+
Use the `acronyms` keyword to preserve acronyms:
|
187
240
|
|
188
241
|
```ruby
|
189
|
-
|
190
|
-
# => "
|
242
|
+
strings.dashcase("PostgreSQL adapter", acronyms: ["PostgreSQL"])
|
243
|
+
# => "postgresql-adapter"
|
191
244
|
```
|
192
245
|
|
193
|
-
### 2.6
|
246
|
+
### 2.6 pascalcase
|
194
247
|
|
195
|
-
|
248
|
+
Use the `pascalcase` method to convert a string into a Pascal case. It will
|
249
|
+
capitalise all words and join them by removing any space. For example:
|
196
250
|
|
197
251
|
```ruby
|
198
|
-
|
199
|
-
# => "
|
200
|
-
|
252
|
+
strings.pascalcase("PostgreSQL adapter")
|
253
|
+
# => "PostgreSqlAdapter"
|
254
|
+
```
|
201
255
|
|
202
|
-
|
256
|
+
Use the `acronyms` keyword to preserve acronyms:
|
203
257
|
|
204
258
|
```ruby
|
205
|
-
|
206
|
-
# => "
|
259
|
+
strings.pascalcase("PostgreSQL adapter", acronyms: ["PostgreSQL"])
|
260
|
+
# => "PostgreSQLAdapter"
|
207
261
|
```
|
208
262
|
|
209
|
-
|
263
|
+
### 2.7 pathcase
|
264
|
+
|
265
|
+
Use the `pathcase` to convert a string into a path case. It will lowercase
|
266
|
+
all words and join them with a forward slash `/`. For example:
|
210
267
|
|
211
268
|
```ruby
|
212
|
-
|
213
|
-
# => "
|
269
|
+
strings.pathcase("PostgreSQL adapter")
|
270
|
+
# => "postgre/sql/adapter"
|
214
271
|
```
|
215
272
|
|
216
|
-
|
273
|
+
Use the `acronyms` keyword to preserve acronyms:
|
217
274
|
|
218
|
-
|
275
|
+
```ruby
|
276
|
+
strings.pathcase("PostgreSQL adapter", acronyms: ["PostgreSQL"])
|
277
|
+
# => "postgresql/adapter"
|
278
|
+
```
|
279
|
+
|
280
|
+
Use the `separator` keyword to change the default forward slash `/` path
|
281
|
+
separator. For example, to use backslash `\` as a path separator:
|
219
282
|
|
220
283
|
```ruby
|
221
|
-
|
222
|
-
# => "
|
284
|
+
strings.pathcase("PostgreSQL adapter", separator: "\\")
|
285
|
+
# => "postgre\\sql\\adapter"
|
223
286
|
```
|
224
287
|
|
225
|
-
|
288
|
+
### 2.8 sentencecase
|
289
|
+
|
290
|
+
Use the `sentencecase` to convert a string into a sentence case. It will
|
291
|
+
capitalise first and lowercase all remaining words, separating them with
|
292
|
+
space. For example:
|
226
293
|
|
227
294
|
```ruby
|
228
|
-
|
229
|
-
# => "
|
295
|
+
strings.sentencecase("PostgreSQL adapter")
|
296
|
+
# => "Postgre sql adapter"
|
230
297
|
```
|
231
298
|
|
232
|
-
|
299
|
+
Use the `acronyms` keyword to preserve acronyms:
|
233
300
|
|
234
|
-
|
301
|
+
```ruby
|
302
|
+
strings.sentencecase("PostgreSQL adapter", acronyms: ["PostgreSQL"])
|
303
|
+
# => "PostgreSQL adapter"
|
304
|
+
```
|
305
|
+
|
306
|
+
### 2.9 snakecase | underscore
|
307
|
+
|
308
|
+
Use the `snakecase` or `underscore` method to convert a string into
|
309
|
+
a snake case. It will lowercase all words and separate them with
|
310
|
+
an underscore `_`. For example:
|
235
311
|
|
236
312
|
```ruby
|
237
|
-
|
238
|
-
# => "
|
313
|
+
strings.snakecase("PostgreSQL adapter")
|
314
|
+
# => "postgre_sql_adapter"
|
239
315
|
```
|
240
316
|
|
241
|
-
|
317
|
+
Use the `acronyms` keyword to preserve acronyms:
|
242
318
|
|
243
319
|
```ruby
|
244
|
-
|
245
|
-
# => "
|
320
|
+
strings.underscore("PostgreSQL adapter", acronyms: ["PostgreSQL"])
|
321
|
+
# => "postgresql_adapter"
|
246
322
|
```
|
247
323
|
|
248
|
-
### 2.
|
324
|
+
### 2.10 titlecase
|
249
325
|
|
250
|
-
|
326
|
+
Use `titlecase` to convert a string into a title case. It will capitalise all
|
327
|
+
words and separate them with space. For example:
|
251
328
|
|
252
329
|
```ruby
|
253
|
-
|
254
|
-
# => "
|
330
|
+
strings.titlecase("PostgreSQL adapter")
|
331
|
+
# => "Postgre Sql Adapter"
|
255
332
|
```
|
256
333
|
|
257
|
-
|
334
|
+
Use the `acronyms` keyword to preserve acronyms:
|
258
335
|
|
259
336
|
```ruby
|
260
|
-
|
261
|
-
# => "
|
337
|
+
strings.titlecase("PostgreSQL adapter", acronyms: ["PostgreSQL"])
|
338
|
+
# => "PostgreSQL Adapter"
|
262
339
|
```
|
263
340
|
|
264
341
|
## 3. Extending String class
|
265
342
|
|
266
|
-
|
343
|
+
Polluting core Ruby classes globally may have unintended consequences.
|
344
|
+
Instead, consider adding the required methods to the `String` class
|
345
|
+
using refinements.
|
267
346
|
|
268
|
-
For example,
|
347
|
+
For example, to extend the `String` class with only the `snakecase` method:
|
269
348
|
|
270
349
|
```ruby
|
271
350
|
module MyStringExt
|
@@ -277,7 +356,8 @@ module MyStringExt
|
|
277
356
|
end
|
278
357
|
```
|
279
358
|
|
280
|
-
Then
|
359
|
+
Then using refinement will make the `snakecase` method available
|
360
|
+
for any string:
|
281
361
|
|
282
362
|
```ruby
|
283
363
|
using MyStringExt
|
@@ -286,31 +366,51 @@ using MyStringExt
|
|
286
366
|
# => "foo_bar_baz"
|
287
367
|
```
|
288
368
|
|
289
|
-
|
369
|
+
Load `Strings::Case::Extensions` refinement to extend the `String` class
|
370
|
+
with all case conversion methods:
|
290
371
|
|
291
372
|
```ruby
|
292
373
|
require "strings/case/extensions"
|
293
374
|
|
294
375
|
using Strings::Case::Extensions
|
376
|
+
|
377
|
+
"foo bar baz".camelcase
|
378
|
+
# => "fooBarBaz"
|
379
|
+
|
380
|
+
"foo bar baz".snakecase
|
381
|
+
# => "foo_bar_baz"
|
295
382
|
```
|
296
383
|
|
297
384
|
## Development
|
298
385
|
|
299
|
-
After checking out the repo, run `bin/setup` to install dependencies.
|
386
|
+
After checking out the repo, run `bin/setup` to install dependencies.
|
387
|
+
Then, run `rake spec` to run the tests. You can also run `bin/console`
|
388
|
+
for an interactive prompt that will allow you to experiment.
|
300
389
|
|
301
|
-
To install this gem onto your local machine, run `bundle exec rake install`.
|
390
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
391
|
+
To release a new version, update the version number in `version.rb`, and
|
392
|
+
then run `bundle exec rake release`, which will create a git tag for
|
393
|
+
the version, push git commits and tags, and push the `.gem` file to
|
394
|
+
[rubygems.org](https://rubygems.org).
|
302
395
|
|
303
396
|
## Contributing
|
304
397
|
|
305
|
-
Bug reports and pull requests are welcome on GitHub at
|
398
|
+
Bug reports and pull requests are welcome on GitHub at
|
399
|
+
https://github.com/piotrmurach/strings-case. This project is intended to be
|
400
|
+
a safe, welcoming space for collaboration, and contributors are expected
|
401
|
+
to adhere to the [Contributor Covenant](http://contributor-covenant.org)
|
402
|
+
code of conduct.
|
306
403
|
|
307
404
|
## License
|
308
405
|
|
309
|
-
The gem is available as open source under the terms of the
|
406
|
+
The gem is available as open source under the terms of the
|
407
|
+
[MIT License](https://opensource.org/licenses/MIT).
|
310
408
|
|
311
409
|
## Code of Conduct
|
312
410
|
|
313
|
-
Everyone interacting in the Strings::Case project’s codebases, issue trackers,
|
411
|
+
Everyone interacting in the Strings::Case project’s codebases, issue trackers,
|
412
|
+
chat rooms and mailing lists is expected to follow the
|
413
|
+
[code of conduct](https://github.com/piotrmurach/strings-case/blob/master/CODE_OF_CONDUCT.md).
|
314
414
|
|
315
415
|
## Copyright
|
316
416
|
|