knitkit 2.0.4 → 2.0.5
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/app/models/document.rb +18 -1
- data/app/models/website.rb +6 -4
- data/app/widgets/contact_us/base.rb +1 -1
- data/app/widgets/search/base.rb +6 -6
- data/db/migrate/20120628165503_add_dynamic_attributes_to_documents.rb +5 -0
- data/lib/knitkit/engine.rb +0 -1
- data/lib/knitkit/version.rb +1 -1
- data/lib/knitkit.rb +1 -0
- data/lib/permalink_fu/README.markdown +64 -0
- data/lib/permalink_fu/init.rb +1 -0
- data/lib/permalink_fu/lib/data/x00.yml +257 -0
- data/lib/permalink_fu/lib/data/x01.yml +257 -0
- data/lib/permalink_fu/lib/data/x02.yml +256 -0
- data/lib/permalink_fu/lib/data/x03.yml +256 -0
- data/lib/permalink_fu/lib/data/x04.yml +256 -0
- data/lib/permalink_fu/lib/data/x05.yml +256 -0
- data/lib/permalink_fu/lib/data/x06.yml +256 -0
- data/lib/permalink_fu/lib/data/x07.yml +256 -0
- data/lib/permalink_fu/lib/data/x09.yml +256 -0
- data/lib/permalink_fu/lib/data/x0a.yml +256 -0
- data/lib/permalink_fu/lib/data/x0b.yml +256 -0
- data/lib/permalink_fu/lib/data/x0c.yml +256 -0
- data/lib/permalink_fu/lib/data/x0d.yml +256 -0
- data/lib/permalink_fu/lib/data/x0e.yml +256 -0
- data/lib/permalink_fu/lib/data/x0f.yml +256 -0
- data/lib/permalink_fu/lib/data/x10.yml +256 -0
- data/lib/permalink_fu/lib/data/x11.yml +256 -0
- data/lib/permalink_fu/lib/data/x12.yml +257 -0
- data/lib/permalink_fu/lib/data/x13.yml +256 -0
- data/lib/permalink_fu/lib/data/x14.yml +257 -0
- data/lib/permalink_fu/lib/data/x15.yml +257 -0
- data/lib/permalink_fu/lib/data/x16.yml +256 -0
- data/lib/permalink_fu/lib/data/x17.yml +256 -0
- data/lib/permalink_fu/lib/data/x18.yml +256 -0
- data/lib/permalink_fu/lib/data/x1e.yml +256 -0
- data/lib/permalink_fu/lib/data/x1f.yml +256 -0
- data/lib/permalink_fu/lib/data/x20.yml +256 -0
- data/lib/permalink_fu/lib/data/x21.yml +256 -0
- data/lib/permalink_fu/lib/data/x22.yml +256 -0
- data/lib/permalink_fu/lib/data/x23.yml +256 -0
- data/lib/permalink_fu/lib/data/x24.yml +256 -0
- data/lib/permalink_fu/lib/data/x25.yml +256 -0
- data/lib/permalink_fu/lib/data/x26.yml +256 -0
- data/lib/permalink_fu/lib/data/x27.yml +256 -0
- data/lib/permalink_fu/lib/data/x28.yml +257 -0
- data/lib/permalink_fu/lib/data/x2e.yml +256 -0
- data/lib/permalink_fu/lib/data/x2f.yml +256 -0
- data/lib/permalink_fu/lib/data/x30.yml +256 -0
- data/lib/permalink_fu/lib/data/x31.yml +256 -0
- data/lib/permalink_fu/lib/data/x32.yml +256 -0
- data/lib/permalink_fu/lib/data/x33.yml +256 -0
- data/lib/permalink_fu/lib/data/x4d.yml +256 -0
- data/lib/permalink_fu/lib/data/x4e.yml +257 -0
- data/lib/permalink_fu/lib/data/x4f.yml +257 -0
- data/lib/permalink_fu/lib/data/x50.yml +257 -0
- data/lib/permalink_fu/lib/data/x51.yml +257 -0
- data/lib/permalink_fu/lib/data/x52.yml +257 -0
- data/lib/permalink_fu/lib/data/x53.yml +257 -0
- data/lib/permalink_fu/lib/data/x54.yml +257 -0
- data/lib/permalink_fu/lib/data/x55.yml +257 -0
- data/lib/permalink_fu/lib/data/x56.yml +257 -0
- data/lib/permalink_fu/lib/data/x57.yml +257 -0
- data/lib/permalink_fu/lib/data/x58.yml +257 -0
- data/lib/permalink_fu/lib/data/x59.yml +257 -0
- data/lib/permalink_fu/lib/data/x5a.yml +257 -0
- data/lib/permalink_fu/lib/data/x5b.yml +257 -0
- data/lib/permalink_fu/lib/data/x5c.yml +257 -0
- data/lib/permalink_fu/lib/data/x5d.yml +257 -0
- data/lib/permalink_fu/lib/data/x5e.yml +257 -0
- data/lib/permalink_fu/lib/data/x5f.yml +257 -0
- data/lib/permalink_fu/lib/data/x60.yml +257 -0
- data/lib/permalink_fu/lib/data/x61.yml +257 -0
- data/lib/permalink_fu/lib/data/x62.yml +257 -0
- data/lib/permalink_fu/lib/data/x63.yml +257 -0
- data/lib/permalink_fu/lib/data/x64.yml +257 -0
- data/lib/permalink_fu/lib/data/x65.yml +257 -0
- data/lib/permalink_fu/lib/data/x66.yml +257 -0
- data/lib/permalink_fu/lib/data/x67.yml +257 -0
- data/lib/permalink_fu/lib/data/x68.yml +257 -0
- data/lib/permalink_fu/lib/data/x69.yml +257 -0
- data/lib/permalink_fu/lib/data/x6a.yml +257 -0
- data/lib/permalink_fu/lib/data/x6b.yml +257 -0
- data/lib/permalink_fu/lib/data/x6c.yml +257 -0
- data/lib/permalink_fu/lib/data/x6d.yml +257 -0
- data/lib/permalink_fu/lib/data/x6e.yml +257 -0
- data/lib/permalink_fu/lib/data/x6f.yml +257 -0
- data/lib/permalink_fu/lib/data/x70.yml +257 -0
- data/lib/permalink_fu/lib/data/x71.yml +257 -0
- data/lib/permalink_fu/lib/data/x72.yml +257 -0
- data/lib/permalink_fu/lib/data/x73.yml +257 -0
- data/lib/permalink_fu/lib/data/x74.yml +257 -0
- data/lib/permalink_fu/lib/data/x75.yml +257 -0
- data/lib/permalink_fu/lib/data/x76.yml +257 -0
- data/lib/permalink_fu/lib/data/x77.yml +257 -0
- data/lib/permalink_fu/lib/data/x78.yml +257 -0
- data/lib/permalink_fu/lib/data/x79.yml +257 -0
- data/lib/permalink_fu/lib/data/x7a.yml +257 -0
- data/lib/permalink_fu/lib/data/x7b.yml +257 -0
- data/lib/permalink_fu/lib/data/x7c.yml +257 -0
- data/lib/permalink_fu/lib/data/x7d.yml +257 -0
- data/lib/permalink_fu/lib/data/x7e.yml +257 -0
- data/lib/permalink_fu/lib/data/x7f.yml +257 -0
- data/lib/permalink_fu/lib/data/x80.yml +257 -0
- data/lib/permalink_fu/lib/data/x81.yml +257 -0
- data/lib/permalink_fu/lib/data/x82.yml +257 -0
- data/lib/permalink_fu/lib/data/x83.yml +257 -0
- data/lib/permalink_fu/lib/data/x84.yml +257 -0
- data/lib/permalink_fu/lib/data/x85.yml +257 -0
- data/lib/permalink_fu/lib/data/x86.yml +257 -0
- data/lib/permalink_fu/lib/data/x87.yml +257 -0
- data/lib/permalink_fu/lib/data/x88.yml +257 -0
- data/lib/permalink_fu/lib/data/x89.yml +257 -0
- data/lib/permalink_fu/lib/data/x8a.yml +257 -0
- data/lib/permalink_fu/lib/data/x8b.yml +257 -0
- data/lib/permalink_fu/lib/data/x8c.yml +257 -0
- data/lib/permalink_fu/lib/data/x8d.yml +257 -0
- data/lib/permalink_fu/lib/data/x8e.yml +257 -0
- data/lib/permalink_fu/lib/data/x8f.yml +257 -0
- data/lib/permalink_fu/lib/data/x90.yml +257 -0
- data/lib/permalink_fu/lib/data/x91.yml +257 -0
- data/lib/permalink_fu/lib/data/x92.yml +257 -0
- data/lib/permalink_fu/lib/data/x93.yml +257 -0
- data/lib/permalink_fu/lib/data/x94.yml +257 -0
- data/lib/permalink_fu/lib/data/x95.yml +257 -0
- data/lib/permalink_fu/lib/data/x96.yml +257 -0
- data/lib/permalink_fu/lib/data/x97.yml +257 -0
- data/lib/permalink_fu/lib/data/x98.yml +257 -0
- data/lib/permalink_fu/lib/data/x99.yml +257 -0
- data/lib/permalink_fu/lib/data/x9a.yml +257 -0
- data/lib/permalink_fu/lib/data/x9b.yml +257 -0
- data/lib/permalink_fu/lib/data/x9c.yml +257 -0
- data/lib/permalink_fu/lib/data/x9d.yml +257 -0
- data/lib/permalink_fu/lib/data/x9e.yml +257 -0
- data/lib/permalink_fu/lib/data/x9f.yml +256 -0
- data/lib/permalink_fu/lib/data/xa0.yml +257 -0
- data/lib/permalink_fu/lib/data/xa1.yml +257 -0
- data/lib/permalink_fu/lib/data/xa2.yml +257 -0
- data/lib/permalink_fu/lib/data/xa3.yml +257 -0
- data/lib/permalink_fu/lib/data/xa4.yml +256 -0
- data/lib/permalink_fu/lib/data/xac.yml +257 -0
- data/lib/permalink_fu/lib/data/xad.yml +257 -0
- data/lib/permalink_fu/lib/data/xae.yml +257 -0
- data/lib/permalink_fu/lib/data/xaf.yml +257 -0
- data/lib/permalink_fu/lib/data/xb0.yml +257 -0
- data/lib/permalink_fu/lib/data/xb1.yml +257 -0
- data/lib/permalink_fu/lib/data/xb2.yml +257 -0
- data/lib/permalink_fu/lib/data/xb3.yml +257 -0
- data/lib/permalink_fu/lib/data/xb4.yml +257 -0
- data/lib/permalink_fu/lib/data/xb5.yml +257 -0
- data/lib/permalink_fu/lib/data/xb6.yml +257 -0
- data/lib/permalink_fu/lib/data/xb7.yml +257 -0
- data/lib/permalink_fu/lib/data/xb8.yml +257 -0
- data/lib/permalink_fu/lib/data/xb9.yml +257 -0
- data/lib/permalink_fu/lib/data/xba.yml +257 -0
- data/lib/permalink_fu/lib/data/xbb.yml +257 -0
- data/lib/permalink_fu/lib/data/xbc.yml +257 -0
- data/lib/permalink_fu/lib/data/xbd.yml +257 -0
- data/lib/permalink_fu/lib/data/xbe.yml +257 -0
- data/lib/permalink_fu/lib/data/xbf.yml +257 -0
- data/lib/permalink_fu/lib/data/xc0.yml +257 -0
- data/lib/permalink_fu/lib/data/xc1.yml +257 -0
- data/lib/permalink_fu/lib/data/xc2.yml +257 -0
- data/lib/permalink_fu/lib/data/xc3.yml +257 -0
- data/lib/permalink_fu/lib/data/xc4.yml +257 -0
- data/lib/permalink_fu/lib/data/xc5.yml +257 -0
- data/lib/permalink_fu/lib/data/xc6.yml +257 -0
- data/lib/permalink_fu/lib/data/xc7.yml +257 -0
- data/lib/permalink_fu/lib/data/xc8.yml +257 -0
- data/lib/permalink_fu/lib/data/xc9.yml +257 -0
- data/lib/permalink_fu/lib/data/xca.yml +257 -0
- data/lib/permalink_fu/lib/data/xcb.yml +257 -0
- data/lib/permalink_fu/lib/data/xcc.yml +257 -0
- data/lib/permalink_fu/lib/data/xcd.yml +257 -0
- data/lib/permalink_fu/lib/data/xce.yml +257 -0
- data/lib/permalink_fu/lib/data/xcf.yml +257 -0
- data/lib/permalink_fu/lib/data/xd0.yml +257 -0
- data/lib/permalink_fu/lib/data/xd1.yml +257 -0
- data/lib/permalink_fu/lib/data/xd2.yml +257 -0
- data/lib/permalink_fu/lib/data/xd3.yml +257 -0
- data/lib/permalink_fu/lib/data/xd4.yml +257 -0
- data/lib/permalink_fu/lib/data/xd5.yml +257 -0
- data/lib/permalink_fu/lib/data/xd6.yml +257 -0
- data/lib/permalink_fu/lib/data/xd7.yml +256 -0
- data/lib/permalink_fu/lib/data/xf9.yml +257 -0
- data/lib/permalink_fu/lib/data/xfa.yml +256 -0
- data/lib/permalink_fu/lib/data/xfb.yml +257 -0
- data/lib/permalink_fu/lib/data/xfc.yml +257 -0
- data/lib/permalink_fu/lib/data/xfd.yml +256 -0
- data/lib/permalink_fu/lib/data/xfe.yml +257 -0
- data/lib/permalink_fu/lib/data/xff.yml +257 -0
- data/lib/permalink_fu/lib/permalink_fu.rb +176 -0
- data/lib/permalink_fu/test/permalink_fu_test.rb +476 -0
- data/lib/permalink_fu/test/test_helper.rb +13 -0
- data/public/images/check.png +0 -0
- data/public/images/credit_card.png +0 -0
- metadata +214 -39
data/app/models/document.rb
CHANGED
|
@@ -1,8 +1,25 @@
|
|
|
1
1
|
class Document < ActiveRecord::Base
|
|
2
|
-
|
|
2
|
+
DOCUMENT_DYNAMIC_ATTRIBUTE_PREFIX = 'dyn_'
|
|
3
|
+
|
|
4
|
+
has_dynamic_attributes :dynamic_attribute_prefix => DOCUMENT_DYNAMIC_ATTRIBUTE_PREFIX, :destroy_dynamic_attribute_for_nil => false
|
|
5
|
+
|
|
3
6
|
has_file_assets
|
|
4
7
|
|
|
5
8
|
belongs_to :document_record, :polymorphic => true
|
|
6
9
|
belongs_to :document_type
|
|
7
10
|
|
|
11
|
+
class << self
|
|
12
|
+
def add_dyn_prefix(field)
|
|
13
|
+
"#{DOCUMENT_DYNAMIC_ATTRIBUTE_PREFIX}#{field}"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def remove_dyn_prefix(field)
|
|
17
|
+
field.gsub(DOCUMENT_DYNAMIC_ATTRIBUTE_PREFIX, '')
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def set_dyn_attribute(field, value)
|
|
22
|
+
self.send("#{Document.add_dyn_prefix(field)}=", value)
|
|
23
|
+
end
|
|
24
|
+
|
|
8
25
|
end
|
data/app/models/website.rb
CHANGED
|
@@ -99,7 +99,7 @@ class Website < ActiveRecord::Base
|
|
|
99
99
|
|
|
100
100
|
def setup_website
|
|
101
101
|
PublishedWebsite.create(:website => self, :version => 0, :active => true, :comment => 'New Site Created')
|
|
102
|
-
Role.create(:description => "Website #{self.title}", :internal_identifier => website_role_iid)
|
|
102
|
+
Role.create(:description => "Website #{self.title}", :internal_identifier => website_role_iid) if self.role.nil?
|
|
103
103
|
configuration = ::Configuration.find_template('default_website_configuration').clone(true)
|
|
104
104
|
configuration.description = "Website #{self.name} Configuration"
|
|
105
105
|
configuration.internal_identifier = configuration.description.underscore
|
|
@@ -194,7 +194,7 @@ class Website < ActiveRecord::Base
|
|
|
194
194
|
|
|
195
195
|
articles_path = Pathname.new(File.join(tmp_dir,'articles'))
|
|
196
196
|
FileUtils.mkdir_p(articles_path) unless articles_path.exist?
|
|
197
|
-
|
|
197
|
+
|
|
198
198
|
documented_contents_path = Pathname.new(File.join(tmp_dir, 'documented contents'))
|
|
199
199
|
FileUtils.mkdir_p(documented_contents_path) unless documented_contents_path.exist?
|
|
200
200
|
|
|
@@ -309,7 +309,7 @@ class Website < ActiveRecord::Base
|
|
|
309
309
|
FileUtils.rm_rf(tmp_dir.to_s)
|
|
310
310
|
|
|
311
311
|
if Website.find_by_internal_identifier(setup_hash[:internal_identifier]).nil?
|
|
312
|
-
website = Website.
|
|
312
|
+
website = Website.new(
|
|
313
313
|
:name => setup_hash[:name],
|
|
314
314
|
:title => setup_hash[:title],
|
|
315
315
|
:subtitle => setup_hash[:subtitle],
|
|
@@ -318,6 +318,7 @@ class Website < ActiveRecord::Base
|
|
|
318
318
|
:email_inquiries => setup_hash[:email_inquiries],
|
|
319
319
|
:auto_activate_publication => setup_hash[:auto_activate_publication]
|
|
320
320
|
)
|
|
321
|
+
website.save!
|
|
321
322
|
|
|
322
323
|
#set default publication published by user
|
|
323
324
|
first_publication = website.published_websites.first
|
|
@@ -382,6 +383,7 @@ class Website < ActiveRecord::Base
|
|
|
382
383
|
website.publish("Website Imported", current_user)
|
|
383
384
|
|
|
384
385
|
rescue Exception=>ex
|
|
386
|
+
Rails.logger.error "#{ex.inspect} #{ex.backtrace}"
|
|
385
387
|
website.destroy unless website.nil?
|
|
386
388
|
raise ex
|
|
387
389
|
end
|
|
@@ -392,7 +394,7 @@ class Website < ActiveRecord::Base
|
|
|
392
394
|
message = 'Website already exists with that internal_identifier'
|
|
393
395
|
success = false
|
|
394
396
|
end
|
|
395
|
-
|
|
397
|
+
|
|
396
398
|
return success, message
|
|
397
399
|
end
|
|
398
400
|
|
|
@@ -18,7 +18,7 @@ module Widgets
|
|
|
18
18
|
@validation[:email] = "Please Enter a Valid Email Address" unless /^.+@.+\..+$/.match(params[:email])
|
|
19
19
|
|
|
20
20
|
if @is_html_form and !@validation.empty?
|
|
21
|
-
return render :view => :error
|
|
21
|
+
return render :update => {:id => "#{@uuid}_result", :view => :error}
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
@website = Website.find_by_host(request.host_with_port)
|
data/app/widgets/search/base.rb
CHANGED
|
@@ -4,14 +4,14 @@ module Widgets
|
|
|
4
4
|
include ActionDispatch::Routing::UrlFor
|
|
5
5
|
include Rails.application.routes.url_helpers
|
|
6
6
|
include WillPaginate::ActionView
|
|
7
|
-
|
|
7
|
+
|
|
8
8
|
def set_variables
|
|
9
9
|
@results_permalink = params[:results_permalink]
|
|
10
10
|
@section_permalink = params[:section_permalink]
|
|
11
11
|
@content_type = params[:content_type]
|
|
12
12
|
@per_page = params[:per_page]
|
|
13
13
|
@css_class = params[:class]
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
if @results_permalink.nil? or @results_permalink.blank?
|
|
16
16
|
@ajax_results = true
|
|
17
17
|
else
|
|
@@ -50,16 +50,16 @@ module Widgets
|
|
|
50
50
|
def locate
|
|
51
51
|
File.dirname(__FILE__)
|
|
52
52
|
end
|
|
53
|
-
|
|
53
|
+
|
|
54
54
|
class << self
|
|
55
55
|
def title
|
|
56
56
|
"Search"
|
|
57
57
|
end
|
|
58
|
-
|
|
58
|
+
|
|
59
59
|
def widget_name
|
|
60
60
|
File.basename(File.dirname(__FILE__))
|
|
61
61
|
end
|
|
62
|
-
|
|
62
|
+
|
|
63
63
|
def base_layout
|
|
64
64
|
begin
|
|
65
65
|
file = File.join(File.dirname(__FILE__),"/views/layouts/base.html.erb")
|
|
@@ -69,7 +69,7 @@ module Widgets
|
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
71
|
end
|
|
72
|
-
|
|
72
|
+
|
|
73
73
|
end
|
|
74
74
|
end
|
|
75
75
|
end
|
data/lib/knitkit/engine.rb
CHANGED
data/lib/knitkit/version.rb
CHANGED
data/lib/knitkit.rb
CHANGED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# PermalinkFu
|
|
2
|
+
|
|
3
|
+
A simple plugin for creating URL-friendly permalinks (slugs) from attributes.
|
|
4
|
+
|
|
5
|
+
Uses [`ActiveSupport::Multibyte::Handlers::UTF8Handler`](http://api.rubyonrails.org/classes/ActiveSupport/Multibyte/Handlers/UTF8Handler.html) (part of Rails since 1.2) rather than `iconv` (which is [inconsistent between platforms](http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/243426)) for normalization/decomposition.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## Usage
|
|
9
|
+
|
|
10
|
+
class Article < ActiveRecord::Base
|
|
11
|
+
has_permalink :title
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
This will escape the title in a before_validation callback, turning e.g. "Föö!! Bàr" into "foo-bar".
|
|
15
|
+
|
|
16
|
+
The permalink is by default stored in the `permalink` attribute.
|
|
17
|
+
|
|
18
|
+
has_permalink :title, :as => :slug
|
|
19
|
+
|
|
20
|
+
will store it in `slug` instead.
|
|
21
|
+
|
|
22
|
+
has_permalink [:category, :title]
|
|
23
|
+
|
|
24
|
+
will store a permalink form of `"#{category}-#{title}"`.
|
|
25
|
+
|
|
26
|
+
Permalinks are guaranteed unique: "foo-bar-2", "foo-bar-3" etc are used if there are conflicts. You can set the scope of the uniqueness like
|
|
27
|
+
|
|
28
|
+
has_permalink :title, :scope => :blog_id
|
|
29
|
+
|
|
30
|
+
This means that two articles with the same `blog_id` can not have the same permalink, but two articles with different `blog_id`s can.
|
|
31
|
+
|
|
32
|
+
Two finders are provided:
|
|
33
|
+
|
|
34
|
+
Article.find_by_permalink(params[:id])
|
|
35
|
+
Article.find_by_permalink!(params[:id])
|
|
36
|
+
|
|
37
|
+
These methods keep their name no matter what attribute is used to store the permalink.
|
|
38
|
+
|
|
39
|
+
The `find_by_permalink` method returns `nil` if there is no match; the `find_by_permalink!` method will raise `ActiveRecord::RecordNotFound`.
|
|
40
|
+
|
|
41
|
+
You can override the model's `to_param` method with
|
|
42
|
+
|
|
43
|
+
has_permalink :title, :param => true
|
|
44
|
+
|
|
45
|
+
This means that the permalink will be used instead of the primary key (id) in generated URLs. Remember to change your controller code from e.g. `find` to `find_by_permalink!`.
|
|
46
|
+
|
|
47
|
+
You can add conditions to `has_permalink` like so:
|
|
48
|
+
|
|
49
|
+
class Article < ActiveRecord::Base
|
|
50
|
+
has_permalink :title, :if => Proc.new { |article| article.needs_permalink? }
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
Use the `:if` or `:unless` options to specify a Proc, method, or string to be called or evaluated. The permalink will only be generated if the option evaluates to true.
|
|
54
|
+
|
|
55
|
+
You can use `PermalinkFu.escape` to escape a string manually.
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## Credits
|
|
59
|
+
|
|
60
|
+
Originally extracted from [Mephisto](http://mephistoblog.com) by [technoweenie](http://github.com/technoweenie/permalink_fu/).
|
|
61
|
+
|
|
62
|
+
Conditions added by [Pat Nakajima](http://github.com/nakajima/permalink_fu/).
|
|
63
|
+
|
|
64
|
+
[Henrik Nyh](http://github.com/technoweenie/permalink_fu/) replaced `iconv` with `ActiveSupport::Multibyte`.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'permalink_fu'
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
---
|
|
2
|
+
- "\0"
|
|
3
|
+
- "\x01"
|
|
4
|
+
- "\x02"
|
|
5
|
+
- "\x03"
|
|
6
|
+
- "\x04"
|
|
7
|
+
- "\x05"
|
|
8
|
+
- "\x06"
|
|
9
|
+
- "\a"
|
|
10
|
+
- "\x08"
|
|
11
|
+
- ' '
|
|
12
|
+
- "\n"
|
|
13
|
+
- "\v"
|
|
14
|
+
- "\f"
|
|
15
|
+
- "\r"
|
|
16
|
+
- "\x0e"
|
|
17
|
+
- "\x0f"
|
|
18
|
+
- "\x10"
|
|
19
|
+
- "\x11"
|
|
20
|
+
- "\x12"
|
|
21
|
+
- "\x13"
|
|
22
|
+
- "\x14"
|
|
23
|
+
- "\x15"
|
|
24
|
+
- "\x16"
|
|
25
|
+
- "\x17"
|
|
26
|
+
- "\x18"
|
|
27
|
+
- "\x19"
|
|
28
|
+
- "\x1a"
|
|
29
|
+
- "\e"
|
|
30
|
+
- "\x1c"
|
|
31
|
+
- "\x1d"
|
|
32
|
+
- "\x1e"
|
|
33
|
+
- "\x1f"
|
|
34
|
+
- ' '
|
|
35
|
+
- '!'
|
|
36
|
+
- '"'
|
|
37
|
+
- '#'
|
|
38
|
+
- $
|
|
39
|
+
- '%'
|
|
40
|
+
- '&'
|
|
41
|
+
- "'"
|
|
42
|
+
- (
|
|
43
|
+
- )
|
|
44
|
+
- '*'
|
|
45
|
+
- +
|
|
46
|
+
- ','
|
|
47
|
+
- -
|
|
48
|
+
- .
|
|
49
|
+
- /
|
|
50
|
+
- 0
|
|
51
|
+
- 1
|
|
52
|
+
- 2
|
|
53
|
+
- 3
|
|
54
|
+
- 4
|
|
55
|
+
- 5
|
|
56
|
+
- 6
|
|
57
|
+
- 7
|
|
58
|
+
- 8
|
|
59
|
+
- 9
|
|
60
|
+
- ':'
|
|
61
|
+
- ;
|
|
62
|
+
- <
|
|
63
|
+
- =
|
|
64
|
+
- '>'
|
|
65
|
+
- '?'
|
|
66
|
+
- '@'
|
|
67
|
+
- A
|
|
68
|
+
- B
|
|
69
|
+
- C
|
|
70
|
+
- D
|
|
71
|
+
- E
|
|
72
|
+
- F
|
|
73
|
+
- G
|
|
74
|
+
- H
|
|
75
|
+
- I
|
|
76
|
+
- J
|
|
77
|
+
- K
|
|
78
|
+
- L
|
|
79
|
+
- M
|
|
80
|
+
- N
|
|
81
|
+
- O
|
|
82
|
+
- P
|
|
83
|
+
- Q
|
|
84
|
+
- R
|
|
85
|
+
- S
|
|
86
|
+
- T
|
|
87
|
+
- U
|
|
88
|
+
- V
|
|
89
|
+
- W
|
|
90
|
+
- X
|
|
91
|
+
- Y
|
|
92
|
+
- Z
|
|
93
|
+
- ']'
|
|
94
|
+
- \
|
|
95
|
+
- ']'
|
|
96
|
+
- '^'
|
|
97
|
+
- _
|
|
98
|
+
- '`'
|
|
99
|
+
- a
|
|
100
|
+
- b
|
|
101
|
+
- c
|
|
102
|
+
- d
|
|
103
|
+
- e
|
|
104
|
+
- f
|
|
105
|
+
- g
|
|
106
|
+
- h
|
|
107
|
+
- i
|
|
108
|
+
- j
|
|
109
|
+
- k
|
|
110
|
+
- l
|
|
111
|
+
- m
|
|
112
|
+
- n
|
|
113
|
+
- o
|
|
114
|
+
- p
|
|
115
|
+
- q
|
|
116
|
+
- r
|
|
117
|
+
- s
|
|
118
|
+
- t
|
|
119
|
+
- u
|
|
120
|
+
- v
|
|
121
|
+
- w
|
|
122
|
+
- x
|
|
123
|
+
- y
|
|
124
|
+
- z
|
|
125
|
+
- '{'
|
|
126
|
+
- '|'
|
|
127
|
+
- '}'
|
|
128
|
+
- '~'
|
|
129
|
+
- '\x7f'
|
|
130
|
+
- ''
|
|
131
|
+
- ''
|
|
132
|
+
- ''
|
|
133
|
+
- ''
|
|
134
|
+
- ''
|
|
135
|
+
- ''
|
|
136
|
+
- ''
|
|
137
|
+
- ''
|
|
138
|
+
- ''
|
|
139
|
+
- ''
|
|
140
|
+
- ''
|
|
141
|
+
- ''
|
|
142
|
+
- ''
|
|
143
|
+
- ''
|
|
144
|
+
- ''
|
|
145
|
+
- ''
|
|
146
|
+
- ''
|
|
147
|
+
- ''
|
|
148
|
+
- ''
|
|
149
|
+
- ''
|
|
150
|
+
- ''
|
|
151
|
+
- ''
|
|
152
|
+
- ''
|
|
153
|
+
- ''
|
|
154
|
+
- ''
|
|
155
|
+
- ''
|
|
156
|
+
- ''
|
|
157
|
+
- ''
|
|
158
|
+
- ''
|
|
159
|
+
- ''
|
|
160
|
+
- ''
|
|
161
|
+
- ''
|
|
162
|
+
- ' '
|
|
163
|
+
- '!'
|
|
164
|
+
- C/
|
|
165
|
+
- PS
|
|
166
|
+
- $?
|
|
167
|
+
- Y=
|
|
168
|
+
- '|'
|
|
169
|
+
- SS
|
|
170
|
+
- '"'
|
|
171
|
+
- (c)
|
|
172
|
+
- a
|
|
173
|
+
- <<
|
|
174
|
+
- '!'
|
|
175
|
+
- ''
|
|
176
|
+
- (r)
|
|
177
|
+
- -
|
|
178
|
+
- deg
|
|
179
|
+
- +-
|
|
180
|
+
- 2
|
|
181
|
+
- 3
|
|
182
|
+
- "'"
|
|
183
|
+
- u
|
|
184
|
+
- P
|
|
185
|
+
- '*'
|
|
186
|
+
- ','
|
|
187
|
+
- 1
|
|
188
|
+
- o
|
|
189
|
+
- '>>'
|
|
190
|
+
- 1/4
|
|
191
|
+
- 1/2
|
|
192
|
+
- 3/4
|
|
193
|
+
- '?'
|
|
194
|
+
- A
|
|
195
|
+
- A
|
|
196
|
+
- A
|
|
197
|
+
- A
|
|
198
|
+
- A
|
|
199
|
+
- A
|
|
200
|
+
- AE
|
|
201
|
+
- C
|
|
202
|
+
- E
|
|
203
|
+
- E
|
|
204
|
+
- E
|
|
205
|
+
- E
|
|
206
|
+
- I
|
|
207
|
+
- I
|
|
208
|
+
- I
|
|
209
|
+
- I
|
|
210
|
+
- D
|
|
211
|
+
- N
|
|
212
|
+
- O
|
|
213
|
+
- O
|
|
214
|
+
- O
|
|
215
|
+
- O
|
|
216
|
+
- O
|
|
217
|
+
- x
|
|
218
|
+
- O
|
|
219
|
+
- U
|
|
220
|
+
- U
|
|
221
|
+
- U
|
|
222
|
+
- U
|
|
223
|
+
- U
|
|
224
|
+
- Th
|
|
225
|
+
- ss
|
|
226
|
+
- a
|
|
227
|
+
- a
|
|
228
|
+
- a
|
|
229
|
+
- a
|
|
230
|
+
- a
|
|
231
|
+
- a
|
|
232
|
+
- ae
|
|
233
|
+
- c
|
|
234
|
+
- e
|
|
235
|
+
- e
|
|
236
|
+
- e
|
|
237
|
+
- e
|
|
238
|
+
- i
|
|
239
|
+
- i
|
|
240
|
+
- i
|
|
241
|
+
- i
|
|
242
|
+
- d
|
|
243
|
+
- n
|
|
244
|
+
- o
|
|
245
|
+
- o
|
|
246
|
+
- o
|
|
247
|
+
- o
|
|
248
|
+
- o
|
|
249
|
+
- /
|
|
250
|
+
- o
|
|
251
|
+
- u
|
|
252
|
+
- u
|
|
253
|
+
- u
|
|
254
|
+
- u
|
|
255
|
+
- y
|
|
256
|
+
- th
|
|
257
|
+
- y
|