babosa 2.0.0.beta → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ef1346a05f1b3a1104af8a095b7829eaa853427927335c7905d41d5ab47b2e9c
4
- data.tar.gz: 54e543a250c7eff0c9613bea3f22d2e79317707f60cbb364e6e68979237c4c53
3
+ metadata.gz: 84fa74468828d44925314cc1bcf6d297aa3a94ebfd993bca491686c92c936667
4
+ data.tar.gz: 618a52e9d52878fe8bc5933879115d32dd31b212a9cd2178e78bb7320d186c43
5
5
  SHA512:
6
- metadata.gz: d4f6732579088cda9d4514b4d1dddd32f2cd933f2818ed4c74bf0f00168ccc3b20e6ce220bc1c473a0453d29ef50de256689ed17e1f809b42dcb8956377c0e76
7
- data.tar.gz: 797887db1d626a92b28249883f2dcc55e3b92d9f423aa23052ba74cc45856a15ace2b6c823c983b6e6baa0907cfc3d467b9a52e05cd9de9d9fcf37c779bd0647
6
+ metadata.gz: d8d86867859c5af0f8f80631b5d7aefe14cf87d61ec5908fa08d68fa38cc2e287c77c2c59c41377eb41e6524ba723ed511d1d09e5837259aad4a1ced7162c25a
7
+ data.tar.gz: 005dbd796a469420ddc905e2fcf4261703f3777ab29000102039e52b907d51d51c3ab69f11779bfc3e76ed19c24fad997733d008c7d08f50dc1446fa230b7e3d
checksums.yaml.gz.sig ADDED
Binary file
data.tar.gz.sig ADDED
Binary file
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # Babosa
2
2
 
3
- [![Build Status](https://travis-ci.org/norman/babosa.png?branch=master)](https://travis-ci.org/norman/babosa)
4
-
3
+ [![Build Status](https://github.com/norman/babosa/actions/workflows/main.yml/badge.svg)](https://github.com/norman/babosa/actions)
5
4
 
6
5
  Babosa is a library for creating human-friendly identifiers, aka "slugs". It can
7
6
  also be useful for normalizing and sanitizing data.
@@ -110,7 +110,7 @@ module Babosa
110
110
  # `^\p{letter}` = Any non-Unicode letter
111
111
  # `&&` = add the following character class
112
112
  # `[^ _\n\r]` = Anything other than space, underscore, newline or linefeed
113
- gsub!(/[[^\p{letter}]&&[^ _\-\n\r]]/, "")
113
+ gsub!(/[[^\p{letter}]&&[^ \d_\-\n\r]]/, "")
114
114
  to_s
115
115
  end
116
116
 
@@ -125,10 +125,10 @@ module Babosa
125
125
 
126
126
  if options[:transliterate]
127
127
  option = options[:transliterate]
128
- if option != true
129
- transliterate!(*option)
130
- else
128
+ if option == true
131
129
  transliterate!(*options[:transliterations])
130
+ else
131
+ transliterate!(*option)
132
132
  end
133
133
  end
134
134
  to_ascii! if options[:to_ascii]
@@ -148,6 +148,7 @@ module Babosa
148
148
  transliterate!
149
149
  to_ascii!
150
150
  word_chars!
151
+ strip_leading_digits!
151
152
  clean!
152
153
  @wrapped_string += last_char if allow_bangs && ["!", "?"].include?(last_char)
153
154
  raise Error, "Input generates impossible Ruby method name" if self == ""
@@ -206,6 +207,14 @@ module Babosa
206
207
  to_s
207
208
  end
208
209
 
210
+ # Strip any leading digits.
211
+ #
212
+ # @return String
213
+ def strip_leading_digits!
214
+ gsub!(/^\d+/, "")
215
+ to_s
216
+ end
217
+
209
218
  # Attempt to convert characters encoded using CP1252 and IS0-8859-1 to
210
219
  # UTF-8.
211
220
  # @return String
@@ -216,16 +225,20 @@ module Babosa
216
225
  to_s
217
226
  end
218
227
 
219
- %w[transliterate clean downcase word_chars normalize normalize_utf8
220
- tidy_bytes to_ascii to_ruby_method truncate truncate_bytes upcase
221
- with_separators].each do |method|
228
+ %w[clean downcase normalize normalize_utf8 strip_leading_digits
229
+ tidy_bytes to_ascii transliterate truncate truncate_bytes upcase
230
+ with_separators word_chars].each do |method|
222
231
  class_eval(<<-METHOD, __FILE__, __LINE__ + 1)
223
232
  def #{method}(*args)
224
- send_to_new_instance(:#{method}!, *args)
233
+ with_new_instance { |id| id.send(:#{method}!, *args) }
225
234
  end
226
235
  METHOD
227
236
  end
228
237
 
238
+ def to_ruby_method(allow_bangs: true)
239
+ with_new_instance { |id| id.to_ruby_method!(allow_bangs: allow_bangs) }
240
+ end
241
+
229
242
  def to_identifier
230
243
  self
231
244
  end
@@ -243,12 +256,13 @@ module Babosa
243
256
 
244
257
  private
245
258
 
246
- # Used as the basis of the bangless methods.
247
- def send_to_new_instance(*args)
248
- id = Identifier.allocate
249
- id.instance_variable_set :@wrapped_string, to_s
250
- id.send(*args)
251
- id
259
+ # Used as the basis of the non-mutating (bangless) methods.
260
+ def with_new_instance
261
+ Identifier.allocate.tap do |id|
262
+ id.instance_variable_set :@wrapped_string, to_s
263
+
264
+ yield id
265
+ end
252
266
  end
253
267
  end
254
268
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Babosa
4
4
  module Version
5
- STRING = "2.0.0.beta"
5
+ STRING = "2.0.0"
6
6
  end
7
7
  end
@@ -16,9 +16,9 @@ describe Babosa::Identifier do
16
16
  end
17
17
 
18
18
  describe "#word_chars" do
19
- it "word_chars! should leave only letters and spaces" do
20
- string = "a*$%^$@!@b$%^&*()*!c"
21
- expect(string.to_slug.word_chars!).to match(/[a-z ]*/i)
19
+ it "word_chars! should leave only letters, numbers, and spaces" do
20
+ string = "a*$%^$@!@b$%^&*()*!c 123"
21
+ expect(string.to_slug.word_chars!).to eq "abc 123"
22
22
  end
23
23
  end
24
24
 
@@ -139,6 +139,7 @@ describe Babosa::Identifier do
139
139
  expect("カタカナ: katakana is über cool".to_slug.to_ruby_method).to eql("katakana_is_uber_cool")
140
140
  expect("カタカナ: katakana is über cool!".to_slug.to_ruby_method).to eql("katakana_is_uber_cool!")
141
141
  expect("カタカナ: katakana is über cool".to_slug.to_ruby_method(allow_bangs: false)).to eql("katakana_is_uber_cool")
142
+ expect("not 2 much 4 ruby".to_slug.to_ruby_method).to eql("not_2_much_4_ruby")
142
143
  end
143
144
 
144
145
  it "should optionally remove trailing punctuation" do
@@ -146,7 +147,6 @@ describe Babosa::Identifier do
146
147
  end
147
148
 
148
149
  it "should raise an error when it would generate an impossible method name" do
149
- # "1".to_identifier.to_ruby_method
150
150
  expect { "1".to_identifier.to_ruby_method }.to raise_error(Babosa::Identifier::Error)
151
151
  end
152
152
 
metadata CHANGED
@@ -1,14 +1,40 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: babosa
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Norman Clarke
8
8
  autorequire:
9
9
  bindir: bin
10
- cert_chain: []
11
- date: 2020-10-09 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEMjCCApqgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhnZW1z
14
+ L0RDPXAvREM9YXJuZHQvREM9aW8wHhcNMjEwNjIzMDkyNzU2WhcNMjIwNjIzMDky
15
+ NzU2WjAjMSEwHwYDVQQDDBhnZW1zL0RDPXAvREM9YXJuZHQvREM9aW8wggGiMA0G
16
+ CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQD0CYnD37uLlJ3Urla2EnnUQ8S6s16k
17
+ AGMpAzpmARo8YwSqtYMJVGyBzUeI7y93Fk9ncswhIFSH/hnh/Ouat/ki9flHlZ+w
18
+ anv0M+9v3wCLyZSC5BQIWpoduFM/fuvLoDUJDWxL50RjwMS0qo2x2LvfQdHN8gn3
19
+ JdSIV5WLJKIvlmIl9S3pw0JO5KRUGn1PcBO7C0S0SlbhVjRHtlao1ycWUULsX109
20
+ hCh39MPGtnZpdCcxheh0TH/UA/jV0/du9/rQdoidkNHkaC24pPfBJ3nS+rAbWaHP
21
+ WmP+0rjfk/XnGBu/HZpKvlnwQjP3QdK4UMtWl8zewqFMNcIiBRALQugnL/SfrP/4
22
+ CSlha9LwkiE6ByeY4WGnNjNqpi5J3IzjEkZRAxG7u9gCB3FzTaBTyXZYI6jplYNw
23
+ TcCJIBHuoPaa+m9brpjb3Uv94nfM97ZP+OmpGYCCAMq4TT7OOV+t8wJc0w8bb0FO
24
+ ROhmVNTxrBaNcl6MkZn88EMRCsGgoWklOG0CAwEAAaNxMG8wCQYDVR0TBAIwADAL
25
+ BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFGu7pbmeILyHnBmannuaNRfdN8MsMBoGA1Ud
26
+ EQQTMBGBD2dlbXNAcC5hcm5kdC5pbzAaBgNVHRIEEzARgQ9nZW1zQHAuYXJuZHQu
27
+ aW8wDQYJKoZIhvcNAQELBQADggGBANlxc4uAnkPC3zbztG7uZfBfn4HSuvv655Pa
28
+ UaYZ6hNETFrqg78mGs3PkFe2Ru7cVWwckbmH46aq50QoNnx4ClxT03vr03n76Jg1
29
+ 8WWHkf0+rcINFlbtIFcmcFrois5Ow3n7pH+xstDtzoWcbh41WwuZStNhrIYsnjAK
30
+ /ovz8D5JlboxceOpVLB/0NiqNEWltK+EMQHmX25Sqf/r5o5rAL9zwEKPFp1Y5X+z
31
+ t2jBjYt2ymr1eMWxux6e+N2uKZL4MblHawxvKlI8UHsIiV9xrc4BwlwlbitcvNIL
32
+ ZykdSlpTJd0Guy92iYjCJMC09tMRUNxiVBwD3jRGSeW9YAPIZGXIcVlm6srIRDjJ
33
+ o8wB6oOvHAkRXnntOo/4bBDH+ehmgvhh/O/mI+au6C0M430fv+ooH0w08LEXLx1k
34
+ e17ZNASZffbQRP09MH2GZ2AOlkildTX6looWRforZEZi+qamognrozd3MI5QHi1W
35
+ UAZUzHLrrFu7gnkFvLVpxOUf4ItOkA==
36
+ -----END CERTIFICATE-----
37
+ date: 2021-08-01 00:00:00.000000000 Z
12
38
  dependencies:
13
39
  - !ruby/object:Gem::Dependency
14
40
  name: rake
@@ -122,7 +148,8 @@ files:
122
148
  - spec/transliterators/ukrainian_spec.rb
123
149
  - spec/transliterators/vietnamese_spec.rb
124
150
  homepage: http://github.com/norman/babosa
125
- licenses: []
151
+ licenses:
152
+ - MIT
126
153
  metadata: {}
127
154
  post_install_message:
128
155
  rdoc_options: []
@@ -135,11 +162,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
135
162
  version: 2.5.0
136
163
  required_rubygems_version: !ruby/object:Gem::Requirement
137
164
  requirements:
138
- - - ">"
165
+ - - ">="
139
166
  - !ruby/object:Gem::Version
140
- version: 1.3.1
167
+ version: '0'
141
168
  requirements: []
142
- rubygems_version: 3.1.4
169
+ rubygems_version: 3.1.6
143
170
  signing_key:
144
171
  specification_version: 4
145
172
  summary: A library for creating slugs.
metadata.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ Q/�C�����5-S��D�A
2
+ �l@���y]+�/l`� �Rr?