sluggable_kyle 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sluggable_kyle.rb +10 -12
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0ee948cc6ed4238206464a506000813d045332c
|
4
|
+
data.tar.gz: c8f7a192b1c40b7b75fe9076cfd73bb00168be50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9f21fba3ca39ec99b411e07992383aaa65350a88078ec7ecebfc39e1f8c5e9e107116e1b1e821888b98a1b0dbbdb8b8282491280ca885d6e654adbfc705cc96
|
7
|
+
data.tar.gz: 5f2e0e2f9d9f29f8220d3065f852276b9dec4d1135fee1b51e10e2b409f6544224c0eb3fe4f5be2ce49b365c55fe598b91158b7b1044a5c81ce5f8e202346df3
|
data/lib/sluggable_kyle.rb
CHANGED
@@ -1,26 +1,30 @@
|
|
1
1
|
module Sluggable
|
2
2
|
extend ActiveSupport::Concern
|
3
3
|
|
4
|
-
included do
|
4
|
+
included do
|
5
5
|
before_save :generate_slug!
|
6
6
|
class_attribute :slug_column
|
7
7
|
end
|
8
8
|
|
9
|
+
def to_param
|
10
|
+
self.slug
|
11
|
+
end
|
12
|
+
|
9
13
|
def generate_slug!
|
10
14
|
the_slug = to_slug(self.send(self.class.slug_column.to_sym))
|
11
15
|
obj = self.class.find_by slug: the_slug
|
12
16
|
count = 2
|
13
17
|
while obj && obj != self
|
14
18
|
the_slug = append_suffix(the_slug, count)
|
19
|
+
count += 1
|
15
20
|
obj = self.class.find_by slug: the_slug
|
16
|
-
count+=1
|
17
21
|
end
|
18
|
-
self.slug = the_slug
|
22
|
+
self.slug = the_slug
|
19
23
|
end
|
20
24
|
|
21
25
|
def append_suffix(str, count)
|
22
26
|
if str.split('-').last.to_i != 0
|
23
|
-
return str.split('-').slice(0
|
27
|
+
return str.split('-').slice(0..-1).join('-') + "-" + count.to_s
|
24
28
|
else
|
25
29
|
return str + "-" + count.to_s
|
26
30
|
end
|
@@ -29,19 +33,13 @@ module Sluggable
|
|
29
33
|
def to_slug(name)
|
30
34
|
str = name.strip
|
31
35
|
str.gsub! /\s*[^A-Za-z0-9]\s*/, '-'
|
32
|
-
str.gsub! /-+/,
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
def to_param
|
37
|
-
self.slug
|
36
|
+
str.gsub! /-+/, '-'
|
37
|
+
str.downcase
|
38
38
|
end
|
39
39
|
|
40
40
|
module ClassMethods
|
41
|
-
|
42
41
|
def sluggable_column(col_name)
|
43
42
|
self.slug_column = col_name
|
44
43
|
end
|
45
44
|
end
|
46
|
-
|
47
45
|
end
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sluggable_kyle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kyle Packard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: A gem that
|
13
|
+
description: A gem that handles creation of slugs
|
14
14
|
email: godoflame@hotmail.com
|
15
15
|
executables: []
|
16
16
|
extensions: []
|