sluggable_mjvezzani_aug 0.0.0 → 0.0.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ea262f309378da8b0bd286b21626092aab8ad7ff
4
- data.tar.gz: e0c4194d7d2cdebd229d587b0ff2940f6b651649
3
+ metadata.gz: 0e5da68d542a9c7d6b26079998c1e233826a9e4f
4
+ data.tar.gz: bac19ea0d61fa325976ab6c0d68db119df68bb0f
5
5
  SHA512:
6
- metadata.gz: 32dc870972f222ae3a744a6a443fc34de13ad98d60491a4c948929d053cbfc79e48146862541fa9afd7d38bf5259ba3cf6fe492cca198fcb17b713e61f27f04f
7
- data.tar.gz: ee427fdfeafebafa1811c7deff1e1f8ef6d7156595ee13c1211da388707405b7c7067986e3feb2e637f07e61dee6d57c88c160f06ddd11dc9f70b7b49dca6094
6
+ metadata.gz: 8f4e9888750e0a49504006dbdd89a1950cc484df6aeada8c64cfd8e8a21d420f65d8a09bcd61c3a5ad7b934bfbfd77ee5ec6d0a8ae71e346cd8c8c927ad0cee5
7
+ data.tar.gz: c144fbdf17a813d9605f5fc376ff146fbbf26d7c11ace7a9fcc94bd414253b2ebce196eae00bb34af3753687ecc609e0842f53e352b713d9fb36abaa9758f719
@@ -8,7 +8,30 @@ module Sluggable
8
8
  end
9
9
 
10
10
  def generate_slug
11
- self.slug = self.send(self.class.slug_column).gsub(' ', '-').downcase
11
+ the_slug = to_slug(self.send(self.class.slug_column.to_sym))
12
+ obj = self.class.find_by slug: the_slug
13
+ count = 2
14
+ while obj && obj != self
15
+ the_slug = append_suffix(the_slug, count)
16
+ obj = self.class.find_by slug: the_slug
17
+ count +=1
18
+ end
19
+ self.slug = the_slug.downcase
20
+ end
21
+
22
+ def append_suffix(str, count)
23
+ if str.split('-').last.to_i != 0
24
+ return str.split('-').slice(0...-1).join('-') + "-" + count.to_s
25
+ else
26
+ return str + "-" + count.to_s
27
+ end
28
+ end
29
+
30
+ def to_slug(name)
31
+ str = name.strip
32
+ str.gsub! /\s*[^A-Za-z0-9]\s*/, '-'
33
+ str.gsub! /-+/, "-"
34
+ str.downcase
12
35
  end
13
36
 
14
37
  def to_param
@@ -16,9 +39,12 @@ module Sluggable
16
39
  end
17
40
 
18
41
  module ClassMethods
42
+ # This allows for sluggable_column(:title), or sluggable_column(:name)
43
+ # to be called in the model and enables the generate_slug method
44
+ # to work.
19
45
  def sluggable_column(col_name)
20
46
  self.slug_column = col_name
21
47
  end
22
48
  end
23
49
 
24
- end
50
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sluggable_mjvezzani_aug
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Vezzani