sluggable-kenn 0.0.2

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.rb +32 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7fa77289b4906efb977b092678beac02a74a0396
4
+ data.tar.gz: 88e1bf496542262cc778658ce6e3d211d9aa2d3d
5
+ SHA512:
6
+ metadata.gz: 2e755d03fd8933f6b479277d63cea34a76a0a09242ef1ca49f67983487e936ed840d587dbc09f128ebc2a0e22fa06c78848ccc0cd89f15d250f0cc1a68df4abe
7
+ data.tar.gz: c6d8ed02c1e6a8aff90222825f7878db28c4d902dfc5dee99f74a1235634ec45e7cc01eaf647d66436f93f7fca16dde95e6f83c2c3adee475ad81717828cb241
data/lib/sluggable.rb ADDED
@@ -0,0 +1,32 @@
1
+ module Sluggable
2
+ extend ActiveSupport::Concern
3
+
4
+ def generate_slug(property)
5
+ generated_slug = self[property].strip.gsub(/[[:space:]]/, "-").gsub(/[^A-Za-z0-9\-]/, "").gsub(/-+/, "-").downcase
6
+
7
+ size = nil
8
+ counter = 0
9
+ until size == 0
10
+ if counter == 0
11
+ size = self.class.where('slug LIKE ?', "#{generated_slug}").size
12
+ else
13
+ size = self.class.where('slug LIKE ?', "#{generated_slug}-#{counter}").size
14
+ end
15
+ counter+=1 if size > 0
16
+ end
17
+
18
+ generated_slug = "#{generated_slug}-#{counter}" if counter > 0
19
+ self.slug = generated_slug
20
+ end
21
+
22
+ def to_param
23
+ self.slug
24
+ end
25
+
26
+ module ClassMethods
27
+ def has_slug(slugname)
28
+ slugname = slugname.to_sym
29
+ before_create { self.generate_slug slugname }
30
+ end
31
+ end
32
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sluggable-kenn
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Kenneth
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-23 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Much longer explanation of the example!
14
+ email: kennethlimjf@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/sluggable.rb
20
+ homepage: https://rubygems.org/gems/example
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.2.2
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: This is an example!
44
+ test_files: []