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 ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ *.swp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in sluggify.gemspec
4
+ gemspec
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,2 @@
1
+ require "sluggify/version"
2
+ require "sluggify/sluggify"
@@ -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
@@ -0,0 +1,3 @@
1
+ module Sluggify
2
+ VERSION = "0.0.1"
3
+ 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
@@ -0,0 +1,5 @@
1
+ test:
2
+ adapter: mysql2
3
+ username: root
4
+ password: password
5
+ database: sluggify_test
@@ -0,0 +1,4 @@
1
+ class User < ActiveRecord::Base
2
+ include Sluggify
3
+ sluggify :name, :on=>[:create]
4
+ end
@@ -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'
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe User do
4
+ let(:user) { User.create(:name => 'test') }
5
+
6
+ it 'should respond to generate_slug method' do
7
+ user.should respond_to(:generate_slug)
8
+ user.slug.should eq('test')
9
+ end
10
+ end
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: []