slugit 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/slugit.rb +3 -19
  2. data/lib/slugit/slugit.rb +31 -0
  3. metadata +2 -1
@@ -1,21 +1,5 @@
1
- module Slugit
2
- def slugit(options = {})
3
- options.symbolize_keys!
4
- options.reverse_merge!({
5
- :from => :title,
6
- :to => :slug,
7
- })
8
-
9
- validates options[:to], :presence => true
10
-
11
- before_save Proc.new {
12
- if options[:from].to_s.in? changed
13
- self.send("#{options[:to]}=", name.parameterize)
14
- end
15
- }
16
-
17
- end
1
+ require File.join(File.dirname(__FILE__), 'slugit', 'slugit')
18
2
 
3
+ if defined?(ActiveRecord)
4
+ ActiveRecord::Base.instance_eval { extend Slugit::ClassMethods }
19
5
  end
20
-
21
- ActiveRecord::Base.extend(Slugit)
@@ -0,0 +1,31 @@
1
+ module Slugit
2
+
3
+ module ClassMethods
4
+ def slugit(options = {})
5
+ class_attribute :slugit_from, :slugit_to
6
+ include InstanceMethods
7
+
8
+ options.symbolize_keys!
9
+ options.reverse_merge!({
10
+ :from => :title,
11
+ :to => :slug,
12
+ })
13
+
14
+ self.slugit_from = options[:from]
15
+ self.slugit_to = options[:to]
16
+
17
+ validates options[:to], :presence => true
18
+
19
+ before_validation :set_slug
20
+ end
21
+ end
22
+
23
+ module InstanceMethods
24
+ def set_slug
25
+ if self.slugit_from.to_s.in? changed
26
+ self[self.slugit_to] = self.send(self.slugit_from).parameterize
27
+ end
28
+ end
29
+ end
30
+
31
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slugit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -18,6 +18,7 @@ extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
20
  - lib/slugit.rb
21
+ - lib/slugit/slugit.rb
21
22
  homepage: https://github.com/gchaincl/slugit
22
23
  licenses: []
23
24
  post_install_message: