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 CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wulffeld_slug (0.0.21)
4
+ wulffeld_slug (0.0.22)
5
5
  activesupport (>= 3.1.0)
6
6
  babosa (>= 0.3.7)
7
7
  wulffeld_slug
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.21
1
+ 0.0.22
@@ -5,7 +5,12 @@ module WulffeldSlug
5
5
  :slug
6
6
 
7
7
  def initialize(words, options = {})
8
- @words = words
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
- words = @words.map do |s|
23
- prepare_word(s)
24
- end
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(["deckard@nexus6.net"]).slug.should == 'deckard-at-nexus6-net'
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(["Deckard & Batty"]).slug.should == 'deckard-and-batty'
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
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "wulffeld_slug"
8
- s.version = "0.0.21"
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