sluggable_holden 0.0.0

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.
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: []