sluggable_holden 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/sluggable_holden.rb +34 -0
  3. metadata +43 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5b129ae791fa96cad125a3cdea4e34944d393cb3
4
+ data.tar.gz: e4b9b4a2d501c4fddb80f89973d9606029edf214
5
+ SHA512:
6
+ metadata.gz: 69278fe52ab511749c469e64b3f30b2b65015730581240b8cdd5a782f25e8cd6646cb8f96563f73559937b0968694906be28c148660c51c6ed8e79ee7b7294b4
7
+ data.tar.gz: e7f774c143170982f48c693fc46bae110bf2d70cbad037a56929e9ac2c6003e305d57cd844a5d1244d1f4b319c7925b1f35374b3d146b3038b4315a46d58018e
@@ -0,0 +1,34 @@
1
+ module SluggableHolden
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ before_create :slugify
6
+ end
7
+
8
+ def slugify
9
+ case self.class.name
10
+ when "Post"
11
+ column = "title"
12
+ when "Category"
13
+ column = "name"
14
+ when "User"
15
+ column = "username"
16
+ end
17
+
18
+ self.slug = update_slug_if_duplicate_exists(self.send(column).delete("^a-zA-Z0-9\s:").gsub(/-+| +/, '-').gsub(/-+/, '-').downcase)
19
+ end
20
+
21
+ def update_slug_if_duplicate_exists(slug)
22
+ if self.class.find_by slug: slug
23
+ num = 1
24
+ num += 1 until !self.class.exists?(slug: "#{slug}-#{num}")
25
+ slug + "-#{num}"
26
+ else
27
+ slug
28
+ end
29
+ end
30
+
31
+ def to_param
32
+ self.slug
33
+ end
34
+ end
metadata ADDED
@@ -0,0 +1,43 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sluggable_holden
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Holden Hinkle
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-15 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: " a VERY simple sluggin gem"
14
+ email: holdenhinkle@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/sluggable_holden.rb
20
+ homepage: https://github.com/holdenhinkle
21
+ licenses: []
22
+ metadata: {}
23
+ post_install_message:
24
+ rdoc_options: []
25
+ require_paths:
26
+ - lib
27
+ required_ruby_version: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ required_rubygems_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ requirements: []
38
+ rubyforge_project:
39
+ rubygems_version: 2.4.2
40
+ signing_key:
41
+ specification_version: 4
42
+ summary: a simple slugging gem
43
+ test_files: []