julien-sluggable 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/julien-sluggable.rb +36 -0
  3. metadata +43 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 37b032e947428e4ae2e542ba7d0b370ff1c89196
4
+ data.tar.gz: ad71e50323832a17fc8ca54b632bdb8655f3e65a
5
+ SHA512:
6
+ metadata.gz: f4c51bd0fd296c7da41535ed94ba09eb9bb70320536506b19f8108a9561b9e32896d307fb7c119d44e78e344d8dd5ae7afc7fe6454299350ec1f9f94eeac1b05
7
+ data.tar.gz: fcff2e09ae7165d92304a156bb03eb4134470c10b6bae5d9d0cc38df379a4e62691fe7d465d08f18d87a94d407e2664478fc99036556838d7f2c09911a6749d6
@@ -0,0 +1,36 @@
1
+ module JulienSluggable
2
+ def self.included(base)
3
+ base.send(:include, InstanceMethods)
4
+ base.extend(ClassMethods)
5
+ base.class_eval do
6
+ commence_slugification
7
+ end
8
+ end
9
+
10
+ module InstanceMethods
11
+ def generate_slug
12
+ slug = self.send(self.class.class_variable_get(:@@slug_base))
13
+ slug = slug.gsub(/\W/, '_').downcase
14
+
15
+ unless Post.find_by(slug: slug).nil?
16
+ num = 1
17
+ until Post.find_by(slug: "#{slug}-#{num}").nil?
18
+ num += 1
19
+ end
20
+ slug = "#{slug}-#{num}"
21
+ end
22
+
23
+ self.slug = slug
24
+ end
25
+
26
+ def to_param
27
+ self.slug
28
+ end
29
+ end
30
+
31
+ module ClassMethods
32
+ def commence_slugification
33
+ before_save :generate_slug
34
+ end
35
+ end
36
+ end
metadata ADDED
@@ -0,0 +1,43 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: julien-sluggable
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Julien Thomas
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-09-30 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Generates slugs easily
14
+ email: 9nonnatus@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/julien-sluggable.rb
20
+ homepage: http://www.github.com
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.0.3
40
+ signing_key:
41
+ specification_version: 4
42
+ summary: Simple slugs
43
+ test_files: []