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 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