wulffeld_slug 0.0.24 → 0.0.25

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.24)
4
+ wulffeld_slug (0.0.25)
5
5
  activesupport (>= 3.1.0)
6
6
  babosa (>= 0.3.7)
7
7
  wulffeld_slug
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.24
1
+ 0.0.25
@@ -2,7 +2,7 @@ module WulffeldSlug
2
2
  module Slug
3
3
  def has_slug(fields, options = {})
4
4
  class_attribute :slug_config
5
- self.slug_config = {:case => :downcase, :loop_start => 64, :fields => fields}.merge(options)
5
+ self.slug_config = {:case => :downcase, :loop_start => 64, :blank_loop_start => 1024, :fields => fields}.merge(options)
6
6
 
7
7
  include WulffeldSlug::SlugInclude
8
8
  end
@@ -57,7 +57,15 @@ module WulffeldSlug
57
57
 
58
58
  # First loop we do some optimistic searching.
59
59
  if n.nil?
60
- b = slug_config[:loop_start]
60
+ # There's often a difference between adding a number to a slug where the string is present
61
+ # and one where we only have the number for the final slug.
62
+ # :blank_loop_start and :blank_loop_chunk helps speed up the looping on blank slugs.
63
+ if str_part.blank?
64
+ b = slug_config[:blank_loop_start]
65
+ else
66
+ b = slug_config[:loop_start]
67
+ end
68
+
61
69
  last_b = nil
62
70
  loop do
63
71
  slug = [str_part, b].reject(&:blank?).join('-')
@@ -68,8 +76,12 @@ module WulffeldSlug
68
76
  n = last_b
69
77
  break
70
78
  end
71
-
72
- b /= 2
79
+
80
+ if str_part.blank? && slug_config[:blank_loop_chunk] && b - slug_config[:blank_loop_chunk] > slug_config[:blank_loop_chunk]
81
+ b -= slug_config[:blank_loop_chunk]
82
+ else
83
+ b /= 2
84
+ end
73
85
  end
74
86
  end
75
87
  n ||= 0
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "wulffeld_slug"
8
- s.version = "0.0.24"
8
+ s.version = "0.0.25"
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"]
@@ -209,6 +209,20 @@ Gem::Specification.new do |s|
209
209
  s.add_development_dependency(%q<jeweler>, [">= 1.6.2"])
210
210
  s.add_development_dependency(%q<rdoc>, [">= 3.8"])
211
211
  s.add_development_dependency(%q<rspec>, [">= 2.7.0"])
212
+ s.add_development_dependency(%q<mongoid>, ["= 2.2.0"])
213
+ s.add_development_dependency(%q<bson>, ["= 1.3.0"])
214
+ s.add_development_dependency(%q<bson_ext>, ["= 1.3.0"])
215
+ s.add_development_dependency(%q<bundler>, [">= 1.0.21"])
216
+ s.add_development_dependency(%q<jeweler>, [">= 1.6.2"])
217
+ s.add_development_dependency(%q<rdoc>, [">= 3.8"])
218
+ s.add_development_dependency(%q<rspec>, [">= 2.7.0"])
219
+ s.add_development_dependency(%q<mongoid>, ["= 2.2.0"])
220
+ s.add_development_dependency(%q<bson>, ["= 1.3.0"])
221
+ s.add_development_dependency(%q<bson_ext>, ["= 1.3.0"])
222
+ s.add_development_dependency(%q<bundler>, [">= 1.0.21"])
223
+ s.add_development_dependency(%q<jeweler>, [">= 1.6.2"])
224
+ s.add_development_dependency(%q<rdoc>, [">= 3.8"])
225
+ s.add_development_dependency(%q<rspec>, [">= 2.7.0"])
212
226
  s.add_runtime_dependency(%q<babosa>, [">= 0.3.7"])
213
227
  s.add_runtime_dependency(%q<activesupport>, [">= 3.1.0"])
214
228
  else
@@ -377,6 +391,20 @@ Gem::Specification.new do |s|
377
391
  s.add_dependency(%q<jeweler>, [">= 1.6.2"])
378
392
  s.add_dependency(%q<rdoc>, [">= 3.8"])
379
393
  s.add_dependency(%q<rspec>, [">= 2.7.0"])
394
+ s.add_dependency(%q<mongoid>, ["= 2.2.0"])
395
+ s.add_dependency(%q<bson>, ["= 1.3.0"])
396
+ s.add_dependency(%q<bson_ext>, ["= 1.3.0"])
397
+ s.add_dependency(%q<bundler>, [">= 1.0.21"])
398
+ s.add_dependency(%q<jeweler>, [">= 1.6.2"])
399
+ s.add_dependency(%q<rdoc>, [">= 3.8"])
400
+ s.add_dependency(%q<rspec>, [">= 2.7.0"])
401
+ s.add_dependency(%q<mongoid>, ["= 2.2.0"])
402
+ s.add_dependency(%q<bson>, ["= 1.3.0"])
403
+ s.add_dependency(%q<bson_ext>, ["= 1.3.0"])
404
+ s.add_dependency(%q<bundler>, [">= 1.0.21"])
405
+ s.add_dependency(%q<jeweler>, [">= 1.6.2"])
406
+ s.add_dependency(%q<rdoc>, [">= 3.8"])
407
+ s.add_dependency(%q<rspec>, [">= 2.7.0"])
380
408
  s.add_dependency(%q<babosa>, [">= 0.3.7"])
381
409
  s.add_dependency(%q<activesupport>, [">= 3.1.0"])
382
410
  end
@@ -546,6 +574,20 @@ Gem::Specification.new do |s|
546
574
  s.add_dependency(%q<jeweler>, [">= 1.6.2"])
547
575
  s.add_dependency(%q<rdoc>, [">= 3.8"])
548
576
  s.add_dependency(%q<rspec>, [">= 2.7.0"])
577
+ s.add_dependency(%q<mongoid>, ["= 2.2.0"])
578
+ s.add_dependency(%q<bson>, ["= 1.3.0"])
579
+ s.add_dependency(%q<bson_ext>, ["= 1.3.0"])
580
+ s.add_dependency(%q<bundler>, [">= 1.0.21"])
581
+ s.add_dependency(%q<jeweler>, [">= 1.6.2"])
582
+ s.add_dependency(%q<rdoc>, [">= 3.8"])
583
+ s.add_dependency(%q<rspec>, [">= 2.7.0"])
584
+ s.add_dependency(%q<mongoid>, ["= 2.2.0"])
585
+ s.add_dependency(%q<bson>, ["= 1.3.0"])
586
+ s.add_dependency(%q<bson_ext>, ["= 1.3.0"])
587
+ s.add_dependency(%q<bundler>, [">= 1.0.21"])
588
+ s.add_dependency(%q<jeweler>, [">= 1.6.2"])
589
+ s.add_dependency(%q<rdoc>, [">= 3.8"])
590
+ s.add_dependency(%q<rspec>, [">= 2.7.0"])
549
591
  s.add_dependency(%q<babosa>, [">= 0.3.7"])
550
592
  s.add_dependency(%q<activesupport>, [">= 3.1.0"])
551
593
  end