julien-sluggable 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/julien-sluggable.rb +36 -0
- 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: []
|