slugable-joe 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 +15 -0
  2. data/lib/slugable.rb +43 -0
  3. metadata +43 -0
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NDgzY2UwMWU0NTQ4MDhmYTYxMDE1ZjVkOWUxZjEyMzdjMmRhMWY1OA==
5
+ data.tar.gz: !binary |-
6
+ MmJiZjk4OTJlNzcwZGQxYmRmNmRlZWI5MDUxOWUxODk3MWI4NTIwYg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ODI0ZDkwNjdiZjViNTgxZDVmMGQ5YzhlN2M0NDJlNTY5YTdmYTBlNWVkYjlm
10
+ N2MxY2E2MTEyMDg1YmE4NDZkYzE0NDc0NGU0ZGI5NWRjNTA2YmQwYzQzNmVl
11
+ YTc0MmM3YzZjNmVkMjljMDljMGI1YzJmN2M4ZDg0ZGJjZTFlMDI=
12
+ data.tar.gz: !binary |-
13
+ YWQxNjUxZDcyZTZlZGM1MDljZDI1N2ZiOTQxY2NlZjk2ODE5OWJlOGI2NTlk
14
+ MTk3NGQ1YzliMGU0MjU2N2RlNjQ4NGQ5ZGJiM2QwMzM0MzAzNzBiYzlkMTlk
15
+ NWYyNjBjZWExNDM5OTExN2M2NDFkMTQ4ZjE2OWQxYzI5MGI4NWI=
data/lib/slugable.rb ADDED
@@ -0,0 +1,43 @@
1
+ Module Slugable
2
+ def generate_slug
3
+ if self.errors.empty?
4
+ #strip the string
5
+ slug = self.slug_string.dup
6
+
7
+ #blow away apostrophes
8
+ slug.gsub! /['`]/,""
9
+
10
+ # @ --> at, and & --> and
11
+ slug.gsub! /\s*@\s*/, " at "
12
+ slug.gsub! /\s*&\s*/, " and "
13
+
14
+ #replace all non alphanumeric, underscore or periods with underscore
15
+ slug.gsub! /\s*[^A-Za-z0-9\.\-]\s*/, '_'
16
+
17
+ #convert double underscores to single
18
+ slug.gsub! /_+/,"_"
19
+
20
+ #strip off leading/trailing underscore
21
+ slug.gsub! /\A[_\.]+|[_\.]+\z/,""
22
+
23
+ slug.downcase!
24
+
25
+ count = 0
26
+ final_slug = slug
27
+ test = nil
28
+ test = self.class.where("slug = ?",final_slug).first
29
+
30
+ #test = self.class.find_by_slug(self.slug)
31
+ while test && (self.new_record? || test != self)
32
+ count += 1
33
+ final_slug = slug + "_" + count.to_s
34
+
35
+ test = nil
36
+ test = self.class.where("slug = ?",final_slug).first
37
+
38
+ #test = self.class.find_by_slug(self.slug)
39
+ end
40
+ self.slug = final_slug
41
+ end
42
+ end
43
+ end
metadata ADDED
@@ -0,0 +1,43 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: slugable-joe
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Joe Levinger
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-11-26 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A gem to create slugs
14
+ email: jlevinger@jtonedesigns.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/slugable.rb
20
+ homepage: http://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.1.10
40
+ signing_key:
41
+ specification_version: 4
42
+ summary: A gem to create slugs
43
+ test_files: []