sluggify 0.0.1
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.
- data/.gitignore +5 -0
- data/Gemfile +4 -0
- data/Rakefile +14 -0
- data/lib/sluggify.rb +2 -0
- data/lib/sluggify/sluggify.rb +34 -0
- data/lib/sluggify/version.rb +3 -0
- data/sluggify.gemspec +27 -0
- data/spec/config/database.yml +5 -0
- data/spec/models/user.rb +4 -0
- data/spec/spec_helper.rb +16 -0
- data/spec/unit/sluggify_spec.rb +10 -0
- metadata +103 -0
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), '/lib/sluggify/version')
|
4
|
+
|
5
|
+
require 'rake'
|
6
|
+
require 'rspec'
|
7
|
+
require 'rspec/core/rake_task'
|
8
|
+
|
9
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
10
|
+
spec.rspec_opts = %w[--format progress]
|
11
|
+
spec.pattern = "spec/unit/**/*_spec.rb"
|
12
|
+
end
|
13
|
+
|
14
|
+
task :default => :spec
|
data/lib/sluggify.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
module Sluggify
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
cattr_accessor :slug_field
|
6
|
+
end
|
7
|
+
|
8
|
+
def generate_slug
|
9
|
+
new_slug = self.send(self.class.slug_field).downcase.strip.gsub(/[\W]+/,"-")
|
10
|
+
new_slug_base = new_slug
|
11
|
+
if self.class.exists?(:slug_base => new_slug_base)
|
12
|
+
existing_slug = self.class.where(:slug_base => new_slug_base).sort(:created_at).last.slug
|
13
|
+
if (existing_slug.split("-").last.to_i == 0)
|
14
|
+
self.slug = new_slug + "-1"
|
15
|
+
else
|
16
|
+
new_slug_index = (existing_slug.split("-").last.to_i) + 1
|
17
|
+
new_slug_index = new_slug_index.to_s
|
18
|
+
self.slug = new_slug + "-" + new_slug_index
|
19
|
+
end
|
20
|
+
else
|
21
|
+
self.slug = new_slug
|
22
|
+
end
|
23
|
+
self.slug_base = new_slug_base
|
24
|
+
end
|
25
|
+
|
26
|
+
module ClassMethods
|
27
|
+
def sluggify(field_name,options)
|
28
|
+
self.slug_field=field_name
|
29
|
+
options[:on].each do |cb|
|
30
|
+
self.send(:"before_#{cb}", :generate_slug)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/sluggify.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "sluggify/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "sluggify"
|
7
|
+
s.version = Sluggify::VERSION
|
8
|
+
s.authors = ["Deepak Prasanna"]
|
9
|
+
s.email = ["deepaksrm@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{It create a slug for your models}
|
12
|
+
s.description = %q{It create a slug for your models}
|
13
|
+
|
14
|
+
s.rubyforge_project = "sluggify"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
s.add_development_dependency "mysql2"
|
23
|
+
s.add_development_dependency "rspec"
|
24
|
+
|
25
|
+
s.add_runtime_dependency "activesupport"
|
26
|
+
s.add_runtime_dependency "activerecord"
|
27
|
+
end
|
data/spec/models/user.rb
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
require 'sluggify'
|
3
|
+
|
4
|
+
config = YAML.load_file('spec/config/database.yml')
|
5
|
+
ActiveRecord::Base.establish_connection(config['test'])
|
6
|
+
ActiveRecord::Base.connection.drop_database config['test']['database']
|
7
|
+
ActiveRecord::Base.connection.create_database config['test']['database']
|
8
|
+
ActiveRecord::Base.establish_connection(config['test'])
|
9
|
+
ActiveRecord::Base.connection.create_table 'users', {:force => true} do |table|
|
10
|
+
table.column :name, :string
|
11
|
+
table.column :age, :integer
|
12
|
+
table.column :slug, :string
|
13
|
+
table.column :slug_base, :string
|
14
|
+
end
|
15
|
+
|
16
|
+
require 'models/user'
|
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sluggify
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Deepak Prasanna
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-09-16 00:00:00.000000000 +05:30
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: mysql2
|
17
|
+
requirement: &83793880 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *83793880
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: rspec
|
28
|
+
requirement: &83793670 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *83793670
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: activesupport
|
39
|
+
requirement: &83793450 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
type: :runtime
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *83793450
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: activerecord
|
50
|
+
requirement: &83793240 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
type: :runtime
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *83793240
|
59
|
+
description: It create a slug for your models
|
60
|
+
email:
|
61
|
+
- deepaksrm@gmail.com
|
62
|
+
executables: []
|
63
|
+
extensions: []
|
64
|
+
extra_rdoc_files: []
|
65
|
+
files:
|
66
|
+
- .gitignore
|
67
|
+
- .swp
|
68
|
+
- Gemfile
|
69
|
+
- Rakefile
|
70
|
+
- lib/sluggify.rb
|
71
|
+
- lib/sluggify/sluggify.rb
|
72
|
+
- lib/sluggify/version.rb
|
73
|
+
- sluggify.gemspec
|
74
|
+
- spec/config/database.yml
|
75
|
+
- spec/models/user.rb
|
76
|
+
- spec/spec_helper.rb
|
77
|
+
- spec/unit/sluggify_spec.rb
|
78
|
+
has_rdoc: true
|
79
|
+
homepage: ''
|
80
|
+
licenses: []
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options: []
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
87
|
+
requirements:
|
88
|
+
- - ! '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
|
+
none: false
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
requirements: []
|
98
|
+
rubyforge_project: sluggify
|
99
|
+
rubygems_version: 1.6.2
|
100
|
+
signing_key:
|
101
|
+
specification_version: 3
|
102
|
+
summary: It create a slug for your models
|
103
|
+
test_files: []
|