wulffeld_slug 0.0.21 → 0.0.22
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.
- data/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/lib/wulffeld_slug/prepare_string.rb +38 -21
- data/spec/lib/prepare_string_spec.rb +14 -2
- data/wulffeld_slug.gemspec +43 -1
- metadata +378 -224
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.22
|
@@ -5,7 +5,12 @@ module WulffeldSlug
|
|
5
5
|
:slug
|
6
6
|
|
7
7
|
def initialize(words, options = {})
|
8
|
-
|
8
|
+
# Original words. Will not be touched.
|
9
|
+
@words = [*words]
|
10
|
+
|
11
|
+
# Converted words.
|
12
|
+
@slug_words = []
|
13
|
+
|
9
14
|
@options = options
|
10
15
|
@options[:max] ||= 239
|
11
16
|
@options[:case] ||= :downcase
|
@@ -16,26 +21,12 @@ module WulffeldSlug
|
|
16
21
|
prepare_string
|
17
22
|
end
|
18
23
|
|
19
|
-
# Use dashes.
|
24
|
+
# Use dashes to join.
|
20
25
|
# http://www.mattcutts.com/blog/dashes-vs-underscores/
|
21
26
|
def prepare_string
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
words.reject!(&:blank?)
|
27
|
-
|
28
|
-
@slug =
|
29
|
-
case options[:case]
|
30
|
-
when :preserve
|
31
|
-
words
|
32
|
-
when :downcase
|
33
|
-
words.map(&:downcase)
|
34
|
-
when :capitalize
|
35
|
-
words.map(&:capitalize)
|
36
|
-
when :upcase
|
37
|
-
words.map(&:upcase)
|
38
|
-
end.join('-')[0..@options[:max]]
|
27
|
+
prepare_words
|
28
|
+
prepare_case
|
29
|
+
combine_words
|
39
30
|
end
|
40
31
|
|
41
32
|
def prepare_word(word)
|
@@ -54,8 +45,34 @@ module WulffeldSlug
|
|
54
45
|
|
55
46
|
# Convert spaces to dashes.
|
56
47
|
word.gsub!(/[^a-zA-Z0-9]+/i, '-')
|
57
|
-
|
58
|
-
word
|
48
|
+
|
49
|
+
# Remove dashes at start and end of word.
|
50
|
+
word.gsub!(/^\-+/, '')
|
51
|
+
word.gsub!(/\-+$/, '')
|
52
|
+
|
53
|
+
@slug_words << word unless word.blank?
|
54
|
+
end
|
55
|
+
|
56
|
+
protected
|
57
|
+
|
58
|
+
def combine_words
|
59
|
+
@slug = @slug_words.join('-')[0..@options[:max]]
|
60
|
+
end
|
61
|
+
|
62
|
+
def prepare_words
|
63
|
+
@words.each { |s| prepare_word(s) }
|
64
|
+
end
|
65
|
+
|
66
|
+
def prepare_case
|
67
|
+
case options[:case]
|
68
|
+
when :downcase
|
69
|
+
@slug_words.map!(&:downcase)
|
70
|
+
when :capitalize
|
71
|
+
@slug_words.map!(&:capitalize)
|
72
|
+
when :upcase
|
73
|
+
@slug_words.map!(&:upcase)
|
74
|
+
when :preserve
|
75
|
+
end
|
59
76
|
end
|
60
77
|
end
|
61
78
|
end
|
@@ -2,10 +2,22 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe 'WulffeldSlug::PrepareString' do
|
4
4
|
it "should convert @ to 'at'" do
|
5
|
-
WulffeldSlug::PrepareString.new(
|
5
|
+
WulffeldSlug::PrepareString.new("deckard@nexus6.net").slug.should == 'deckard-at-nexus6-net'
|
6
6
|
end
|
7
7
|
|
8
8
|
it "should convert & to 'and'" do
|
9
|
-
WulffeldSlug::PrepareString.new(
|
9
|
+
WulffeldSlug::PrepareString.new("Deckard & Batty").slug.should == 'deckard-and-batty'
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "preparing various words" do
|
13
|
+
[
|
14
|
+
[["This", "PLACE"], "this-place"],
|
15
|
+
["«Огни Уфы»", "ogni-ufy"],
|
16
|
+
["Развлекательный Комплекс «Огни Уфы», «Колизео»", "razvlekatelinyi-komplekz-ogni-ufy-kolizeo"]
|
17
|
+
].each do |orig, result|
|
18
|
+
it "should convert '#{orig}' to '#{result}" do
|
19
|
+
WulffeldSlug::PrepareString.new([*orig]).slug.should == result
|
20
|
+
end
|
21
|
+
end
|
10
22
|
end
|
11
23
|
end
|
data/wulffeld_slug.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "wulffeld_slug"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.22"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Martin Moen Wulffeld"]
|
@@ -153,6 +153,20 @@ Gem::Specification.new do |s|
|
|
153
153
|
s.add_development_dependency(%q<jeweler>, [">= 1.6.2"])
|
154
154
|
s.add_development_dependency(%q<rdoc>, [">= 3.8"])
|
155
155
|
s.add_development_dependency(%q<rspec>, [">= 2.7.0"])
|
156
|
+
s.add_development_dependency(%q<mongoid>, ["= 2.2.0"])
|
157
|
+
s.add_development_dependency(%q<bson>, ["= 1.3.0"])
|
158
|
+
s.add_development_dependency(%q<bson_ext>, ["= 1.3.0"])
|
159
|
+
s.add_development_dependency(%q<bundler>, [">= 1.0.21"])
|
160
|
+
s.add_development_dependency(%q<jeweler>, [">= 1.6.2"])
|
161
|
+
s.add_development_dependency(%q<rdoc>, [">= 3.8"])
|
162
|
+
s.add_development_dependency(%q<rspec>, [">= 2.7.0"])
|
163
|
+
s.add_development_dependency(%q<mongoid>, ["= 2.2.0"])
|
164
|
+
s.add_development_dependency(%q<bson>, ["= 1.3.0"])
|
165
|
+
s.add_development_dependency(%q<bson_ext>, ["= 1.3.0"])
|
166
|
+
s.add_development_dependency(%q<bundler>, [">= 1.0.21"])
|
167
|
+
s.add_development_dependency(%q<jeweler>, [">= 1.6.2"])
|
168
|
+
s.add_development_dependency(%q<rdoc>, [">= 3.8"])
|
169
|
+
s.add_development_dependency(%q<rspec>, [">= 2.7.0"])
|
156
170
|
s.add_runtime_dependency(%q<babosa>, [">= 0.3.7"])
|
157
171
|
s.add_runtime_dependency(%q<activesupport>, [">= 3.1.0"])
|
158
172
|
else
|
@@ -265,6 +279,20 @@ Gem::Specification.new do |s|
|
|
265
279
|
s.add_dependency(%q<jeweler>, [">= 1.6.2"])
|
266
280
|
s.add_dependency(%q<rdoc>, [">= 3.8"])
|
267
281
|
s.add_dependency(%q<rspec>, [">= 2.7.0"])
|
282
|
+
s.add_dependency(%q<mongoid>, ["= 2.2.0"])
|
283
|
+
s.add_dependency(%q<bson>, ["= 1.3.0"])
|
284
|
+
s.add_dependency(%q<bson_ext>, ["= 1.3.0"])
|
285
|
+
s.add_dependency(%q<bundler>, [">= 1.0.21"])
|
286
|
+
s.add_dependency(%q<jeweler>, [">= 1.6.2"])
|
287
|
+
s.add_dependency(%q<rdoc>, [">= 3.8"])
|
288
|
+
s.add_dependency(%q<rspec>, [">= 2.7.0"])
|
289
|
+
s.add_dependency(%q<mongoid>, ["= 2.2.0"])
|
290
|
+
s.add_dependency(%q<bson>, ["= 1.3.0"])
|
291
|
+
s.add_dependency(%q<bson_ext>, ["= 1.3.0"])
|
292
|
+
s.add_dependency(%q<bundler>, [">= 1.0.21"])
|
293
|
+
s.add_dependency(%q<jeweler>, [">= 1.6.2"])
|
294
|
+
s.add_dependency(%q<rdoc>, [">= 3.8"])
|
295
|
+
s.add_dependency(%q<rspec>, [">= 2.7.0"])
|
268
296
|
s.add_dependency(%q<babosa>, [">= 0.3.7"])
|
269
297
|
s.add_dependency(%q<activesupport>, [">= 3.1.0"])
|
270
298
|
end
|
@@ -378,6 +406,20 @@ Gem::Specification.new do |s|
|
|
378
406
|
s.add_dependency(%q<jeweler>, [">= 1.6.2"])
|
379
407
|
s.add_dependency(%q<rdoc>, [">= 3.8"])
|
380
408
|
s.add_dependency(%q<rspec>, [">= 2.7.0"])
|
409
|
+
s.add_dependency(%q<mongoid>, ["= 2.2.0"])
|
410
|
+
s.add_dependency(%q<bson>, ["= 1.3.0"])
|
411
|
+
s.add_dependency(%q<bson_ext>, ["= 1.3.0"])
|
412
|
+
s.add_dependency(%q<bundler>, [">= 1.0.21"])
|
413
|
+
s.add_dependency(%q<jeweler>, [">= 1.6.2"])
|
414
|
+
s.add_dependency(%q<rdoc>, [">= 3.8"])
|
415
|
+
s.add_dependency(%q<rspec>, [">= 2.7.0"])
|
416
|
+
s.add_dependency(%q<mongoid>, ["= 2.2.0"])
|
417
|
+
s.add_dependency(%q<bson>, ["= 1.3.0"])
|
418
|
+
s.add_dependency(%q<bson_ext>, ["= 1.3.0"])
|
419
|
+
s.add_dependency(%q<bundler>, [">= 1.0.21"])
|
420
|
+
s.add_dependency(%q<jeweler>, [">= 1.6.2"])
|
421
|
+
s.add_dependency(%q<rdoc>, [">= 3.8"])
|
422
|
+
s.add_dependency(%q<rspec>, [">= 2.7.0"])
|
381
423
|
s.add_dependency(%q<babosa>, [">= 0.3.7"])
|
382
424
|
s.add_dependency(%q<activesupport>, [">= 3.1.0"])
|
383
425
|
end
|