wulffeld_slug 0.0.21 → 0.0.22
Sign up to get free protection for your applications and to get access to all the features.
- 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
|