slug 0.5.5 → 0.5.6
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/VERSION.yml +1 -1
- data/lib/slug/slug.rb +13 -4
- data/slug.gemspec +2 -2
- data/test/test_slug.rb +27 -0
- metadata +2 -2
data/VERSION.yml
CHANGED
data/lib/slug/slug.rb
CHANGED
@@ -36,13 +36,22 @@ module Slug
|
|
36
36
|
module InstanceMethods
|
37
37
|
|
38
38
|
# Sets the slug. Called before create.
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
# By default, set_slug won't change slug if one already exists. Pass :force => true to overwrite.
|
40
|
+
def set_slug(opts={})
|
41
|
+
validate_slug_columns
|
42
|
+
return unless self[self.slug_column].blank? || opts[:force] == true
|
43
|
+
|
44
|
+
original_slug = self[self.slug_column]
|
45
|
+
self[self.slug_column] = self.send(self.slug_source)
|
42
46
|
|
43
47
|
strip_diacritics_from_slug
|
44
48
|
normalize_slug
|
45
|
-
assign_slug_sequence
|
49
|
+
assign_slug_sequence unless self[self.slug_column] == original_slug # don't try to increment seq if slug hasn't changed
|
50
|
+
end
|
51
|
+
|
52
|
+
# Overwrite existing slug based on current contents of source column.
|
53
|
+
def reset_slug
|
54
|
+
set_slug(:force => true)
|
46
55
|
end
|
47
56
|
|
48
57
|
# Overrides to_param to return the model's slug.
|
data/slug.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{slug}
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Ben Koski"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-06-24}
|
13
13
|
s.description = %q{Simple, straightforward slugs for your ActiveRecord models.}
|
14
14
|
s.email = %q{ben.koski@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/test/test_slug.rb
CHANGED
@@ -90,6 +90,33 @@ class TestSlug < Test::Unit::TestCase
|
|
90
90
|
assert_equal 'slug1', a.slug
|
91
91
|
end
|
92
92
|
|
93
|
+
context "resetting a slug" do
|
94
|
+
|
95
|
+
setup do
|
96
|
+
@article = Article.create(:headline => 'test headline')
|
97
|
+
@original_slug = @article.slug
|
98
|
+
end
|
99
|
+
|
100
|
+
should "maintain the same slug if slug column hasn't changed" do
|
101
|
+
@article.reset_slug
|
102
|
+
assert_equal @original_slug, @article.slug
|
103
|
+
end
|
104
|
+
|
105
|
+
should "change slug if slug column has updated" do
|
106
|
+
@article.headline = "donkey"
|
107
|
+
@article.reset_slug
|
108
|
+
assert_not_equal @original_slug, @article.slug
|
109
|
+
end
|
110
|
+
|
111
|
+
should "maintain sequence" do
|
112
|
+
@existing_article = Article.create!(:headline => 'world cup')
|
113
|
+
@article.headline = "world cup"
|
114
|
+
@article.reset_slug
|
115
|
+
assert_equal 'world-cup-1', @article.slug
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
|
93
120
|
|
94
121
|
context "slug normalization" do
|
95
122
|
setup do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slug
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Koski
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-06-24 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|