make_permalink 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +81 -0
- data/lib/make_permalink/base.rb +16 -0
- data/lib/make_permalink/version.rb +1 -1
- metadata +4 -3
data/README.textile
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
h1. Simple make_permalink Gem
|
2
|
+
|
3
|
+
*make_permalink* is a simple gem that allows you to easily create permalinks (url-friendly-output) for methods in your objects. You don't need any database storage to make it work which is just awesome!
|
4
|
+
|
5
|
+
h1. Example
|
6
|
+
|
7
|
+
<pre>
|
8
|
+
class Post
|
9
|
+
make_permalink :title
|
10
|
+
end
|
11
|
+
|
12
|
+
p = Post.create(:title => "Hello World!")
|
13
|
+
p.permalink # => "1-hello-world"
|
14
|
+
</pre>
|
15
|
+
|
16
|
+
If you're using _rails_ and you want your url's to have the permalink and not only the id, just add the *to_param* method to your model
|
17
|
+
|
18
|
+
<pre>
|
19
|
+
class Post < ActiveRecord::Base
|
20
|
+
make_permalink :title
|
21
|
+
|
22
|
+
def to_param
|
23
|
+
permalink
|
24
|
+
end
|
25
|
+
end
|
26
|
+
</pre>
|
27
|
+
|
28
|
+
h1. Install
|
29
|
+
|
30
|
+
It's really simple to install this magnificent gem. Just run a small @gem install make_permalink@ and you've got it!
|
31
|
+
|
32
|
+
Well, not quite, you may have the gem installed in your system, but when you share the beautiful code you've created, people won't actually know that. So, that's when @Bundler@ appears.
|
33
|
+
|
34
|
+
Add @gem 'make_permalink'@ to your Gemfile and then run @bundle install@. Well, and remember to check your Gemfile in your repo.
|
35
|
+
|
36
|
+
h1. Options
|
37
|
+
|
38
|
+
h3. Non ascii characters
|
39
|
+
|
40
|
+
You can have a permalink that won't change non-ascii.
|
41
|
+
|
42
|
+
<tt> :replace_non_ascii </tt>: If set to false non-ascii chars won't be replaced. Default is true
|
43
|
+
|
44
|
+
<pre>
|
45
|
+
class Post
|
46
|
+
make_permalink :title, :replace_non_ascii => false
|
47
|
+
end
|
48
|
+
|
49
|
+
p = Post.create(:title => "Let's rock & roll")
|
50
|
+
p.permalink # => "1-let-s-rock-roll"
|
51
|
+
</pre>
|
52
|
+
|
53
|
+
Notice that if you don't replace non-ascii chars the permalik would be way cooler (thanks to the "stringex":https://github.com/svenfuchs/stringex gem)
|
54
|
+
|
55
|
+
<pre>
|
56
|
+
# You will get this with the default behavior
|
57
|
+
p.permalink # => "1-lets-rock-and-roll"
|
58
|
+
</pre>
|
59
|
+
|
60
|
+
h3. Remove id from permalink
|
61
|
+
|
62
|
+
I don't really like to have the ID of the object on the permalink, so I just added an option to remove it. Just call the method with *_:include_id => false_* and you're done!
|
63
|
+
|
64
|
+
<tt> :include_id </tt> is true by default but just change it to remove the id from the permalink.
|
65
|
+
|
66
|
+
Internally the gem will look for the *_create_permalink_prefix(boolean)_* method so if you want to change the prefix, just override that method and you'll be good to go in no time!
|
67
|
+
|
68
|
+
h1. Bugs/Contact
|
69
|
+
|
70
|
+
If you need to contact me about a bug or anythig, please open an issue "here":https://github.com/nhocki/make_permalink/issues
|
71
|
+
|
72
|
+
Also, feel free to patch it as needed, every fix/refactoring/extension is more than welcome!
|
73
|
+
|
74
|
+
h1. Contributors
|
75
|
+
|
76
|
+
Nicolás Hock ("nhocki":http://github.com/nhocki)
|
77
|
+
Federico Builes ("febuiles":http://github.com/febuiles)
|
78
|
+
Sven Fuchs ("svenfuchs":http://github.com/svenfuchs) for the Stringex gem
|
79
|
+
|
80
|
+
|
81
|
+
Copyright (c) 2011 Nicolás Hock Isaza, released under the MIT license
|
data/lib/make_permalink/base.rb
CHANGED
@@ -28,6 +28,22 @@ module MakePermalink
|
|
28
28
|
}
|
29
29
|
end
|
30
30
|
|
31
|
+
|
32
|
+
# Creates a permalink for a given object based on the method passed as
|
33
|
+
# parameter:
|
34
|
+
#
|
35
|
+
# You can modify the default behavior with this two options
|
36
|
+
#
|
37
|
+
# <tt>:include_id</tt>: This will include the objects id method. Default true.
|
38
|
+
# <tt>:replace_non_ascii</tt>: This will replace non-ascii-chars (like & and $) for their english words (and - dollars). Default true
|
39
|
+
#
|
40
|
+
# class Post < ActiveRecord::Base
|
41
|
+
# make_permalink :title
|
42
|
+
# end
|
43
|
+
#
|
44
|
+
# p = Post.create(:title => "Rock & Roll!")
|
45
|
+
# p.permalink # => "1-rock-and-roll"
|
46
|
+
|
31
47
|
def make_permalink(method, options = {})
|
32
48
|
define_method "permalink" do
|
33
49
|
options = self.class.default_options.merge!(options)
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: make_permalink
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- "Nicol\xC3\xA1s Hock Isaza"
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-02-
|
13
|
+
date: 2011-02-16 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -47,6 +47,7 @@ extra_rdoc_files: []
|
|
47
47
|
files:
|
48
48
|
- .gitignore
|
49
49
|
- Gemfile
|
50
|
+
- README.textile
|
50
51
|
- Rakefile
|
51
52
|
- lib/make_permalink.rb
|
52
53
|
- lib/make_permalink/base.rb
|
@@ -78,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
78
79
|
requirements: []
|
79
80
|
|
80
81
|
rubyforge_project: make_permalink
|
81
|
-
rubygems_version: 1.5.
|
82
|
+
rubygems_version: 1.5.0
|
82
83
|
signing_key:
|
83
84
|
specification_version: 3
|
84
85
|
summary: Create dynamic permalinks from an attribute
|