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.
Files changed (196) hide show
  1. data/app/models/document.rb +18 -1
  2. data/app/models/website.rb +6 -4
  3. data/app/widgets/contact_us/base.rb +1 -1
  4. data/app/widgets/search/base.rb +6 -6
  5. data/db/migrate/20120628165503_add_dynamic_attributes_to_documents.rb +5 -0
  6. data/lib/knitkit/engine.rb +0 -1
  7. data/lib/knitkit/version.rb +1 -1
  8. data/lib/knitkit.rb +1 -0
  9. data/lib/permalink_fu/README.markdown +64 -0
  10. data/lib/permalink_fu/init.rb +1 -0
  11. data/lib/permalink_fu/lib/data/x00.yml +257 -0
  12. data/lib/permalink_fu/lib/data/x01.yml +257 -0
  13. data/lib/permalink_fu/lib/data/x02.yml +256 -0
  14. data/lib/permalink_fu/lib/data/x03.yml +256 -0
  15. data/lib/permalink_fu/lib/data/x04.yml +256 -0
  16. data/lib/permalink_fu/lib/data/x05.yml +256 -0
  17. data/lib/permalink_fu/lib/data/x06.yml +256 -0
  18. data/lib/permalink_fu/lib/data/x07.yml +256 -0
  19. data/lib/permalink_fu/lib/data/x09.yml +256 -0
  20. data/lib/permalink_fu/lib/data/x0a.yml +256 -0
  21. data/lib/permalink_fu/lib/data/x0b.yml +256 -0
  22. data/lib/permalink_fu/lib/data/x0c.yml +256 -0
  23. data/lib/permalink_fu/lib/data/x0d.yml +256 -0
  24. data/lib/permalink_fu/lib/data/x0e.yml +256 -0
  25. data/lib/permalink_fu/lib/data/x0f.yml +256 -0
  26. data/lib/permalink_fu/lib/data/x10.yml +256 -0
  27. data/lib/permalink_fu/lib/data/x11.yml +256 -0
  28. data/lib/permalink_fu/lib/data/x12.yml +257 -0
  29. data/lib/permalink_fu/lib/data/x13.yml +256 -0
  30. data/lib/permalink_fu/lib/data/x14.yml +257 -0
  31. data/lib/permalink_fu/lib/data/x15.yml +257 -0
  32. data/lib/permalink_fu/lib/data/x16.yml +256 -0
  33. data/lib/permalink_fu/lib/data/x17.yml +256 -0
  34. data/lib/permalink_fu/lib/data/x18.yml +256 -0
  35. data/lib/permalink_fu/lib/data/x1e.yml +256 -0
  36. data/lib/permalink_fu/lib/data/x1f.yml +256 -0
  37. data/lib/permalink_fu/lib/data/x20.yml +256 -0
  38. data/lib/permalink_fu/lib/data/x21.yml +256 -0
  39. data/lib/permalink_fu/lib/data/x22.yml +256 -0
  40. data/lib/permalink_fu/lib/data/x23.yml +256 -0
  41. data/lib/permalink_fu/lib/data/x24.yml +256 -0
  42. data/lib/permalink_fu/lib/data/x25.yml +256 -0
  43. data/lib/permalink_fu/lib/data/x26.yml +256 -0
  44. data/lib/permalink_fu/lib/data/x27.yml +256 -0
  45. data/lib/permalink_fu/lib/data/x28.yml +257 -0
  46. data/lib/permalink_fu/lib/data/x2e.yml +256 -0
  47. data/lib/permalink_fu/lib/data/x2f.yml +256 -0
  48. data/lib/permalink_fu/lib/data/x30.yml +256 -0
  49. data/lib/permalink_fu/lib/data/x31.yml +256 -0
  50. data/lib/permalink_fu/lib/data/x32.yml +256 -0
  51. data/lib/permalink_fu/lib/data/x33.yml +256 -0
  52. data/lib/permalink_fu/lib/data/x4d.yml +256 -0
  53. data/lib/permalink_fu/lib/data/x4e.yml +257 -0
  54. data/lib/permalink_fu/lib/data/x4f.yml +257 -0
  55. data/lib/permalink_fu/lib/data/x50.yml +257 -0
  56. data/lib/permalink_fu/lib/data/x51.yml +257 -0
  57. data/lib/permalink_fu/lib/data/x52.yml +257 -0
  58. data/lib/permalink_fu/lib/data/x53.yml +257 -0
  59. data/lib/permalink_fu/lib/data/x54.yml +257 -0
  60. data/lib/permalink_fu/lib/data/x55.yml +257 -0
  61. data/lib/permalink_fu/lib/data/x56.yml +257 -0
  62. data/lib/permalink_fu/lib/data/x57.yml +257 -0
  63. data/lib/permalink_fu/lib/data/x58.yml +257 -0
  64. data/lib/permalink_fu/lib/data/x59.yml +257 -0
  65. data/lib/permalink_fu/lib/data/x5a.yml +257 -0
  66. data/lib/permalink_fu/lib/data/x5b.yml +257 -0
  67. data/lib/permalink_fu/lib/data/x5c.yml +257 -0
  68. data/lib/permalink_fu/lib/data/x5d.yml +257 -0
  69. data/lib/permalink_fu/lib/data/x5e.yml +257 -0
  70. data/lib/permalink_fu/lib/data/x5f.yml +257 -0
  71. data/lib/permalink_fu/lib/data/x60.yml +257 -0
  72. data/lib/permalink_fu/lib/data/x61.yml +257 -0
  73. data/lib/permalink_fu/lib/data/x62.yml +257 -0
  74. data/lib/permalink_fu/lib/data/x63.yml +257 -0
  75. data/lib/permalink_fu/lib/data/x64.yml +257 -0
  76. data/lib/permalink_fu/lib/data/x65.yml +257 -0
  77. data/lib/permalink_fu/lib/data/x66.yml +257 -0
  78. data/lib/permalink_fu/lib/data/x67.yml +257 -0
  79. data/lib/permalink_fu/lib/data/x68.yml +257 -0
  80. data/lib/permalink_fu/lib/data/x69.yml +257 -0
  81. data/lib/permalink_fu/lib/data/x6a.yml +257 -0
  82. data/lib/permalink_fu/lib/data/x6b.yml +257 -0
  83. data/lib/permalink_fu/lib/data/x6c.yml +257 -0
  84. data/lib/permalink_fu/lib/data/x6d.yml +257 -0
  85. data/lib/permalink_fu/lib/data/x6e.yml +257 -0
  86. data/lib/permalink_fu/lib/data/x6f.yml +257 -0
  87. data/lib/permalink_fu/lib/data/x70.yml +257 -0
  88. data/lib/permalink_fu/lib/data/x71.yml +257 -0
  89. data/lib/permalink_fu/lib/data/x72.yml +257 -0
  90. data/lib/permalink_fu/lib/data/x73.yml +257 -0
  91. data/lib/permalink_fu/lib/data/x74.yml +257 -0
  92. data/lib/permalink_fu/lib/data/x75.yml +257 -0
  93. data/lib/permalink_fu/lib/data/x76.yml +257 -0
  94. data/lib/permalink_fu/lib/data/x77.yml +257 -0
  95. data/lib/permalink_fu/lib/data/x78.yml +257 -0
  96. data/lib/permalink_fu/lib/data/x79.yml +257 -0
  97. data/lib/permalink_fu/lib/data/x7a.yml +257 -0
  98. data/lib/permalink_fu/lib/data/x7b.yml +257 -0
  99. data/lib/permalink_fu/lib/data/x7c.yml +257 -0
  100. data/lib/permalink_fu/lib/data/x7d.yml +257 -0
  101. data/lib/permalink_fu/lib/data/x7e.yml +257 -0
  102. data/lib/permalink_fu/lib/data/x7f.yml +257 -0
  103. data/lib/permalink_fu/lib/data/x80.yml +257 -0
  104. data/lib/permalink_fu/lib/data/x81.yml +257 -0
  105. data/lib/permalink_fu/lib/data/x82.yml +257 -0
  106. data/lib/permalink_fu/lib/data/x83.yml +257 -0
  107. data/lib/permalink_fu/lib/data/x84.yml +257 -0
  108. data/lib/permalink_fu/lib/data/x85.yml +257 -0
  109. data/lib/permalink_fu/lib/data/x86.yml +257 -0
  110. data/lib/permalink_fu/lib/data/x87.yml +257 -0
  111. data/lib/permalink_fu/lib/data/x88.yml +257 -0
  112. data/lib/permalink_fu/lib/data/x89.yml +257 -0
  113. data/lib/permalink_fu/lib/data/x8a.yml +257 -0
  114. data/lib/permalink_fu/lib/data/x8b.yml +257 -0
  115. data/lib/permalink_fu/lib/data/x8c.yml +257 -0
  116. data/lib/permalink_fu/lib/data/x8d.yml +257 -0
  117. data/lib/permalink_fu/lib/data/x8e.yml +257 -0
  118. data/lib/permalink_fu/lib/data/x8f.yml +257 -0
  119. data/lib/permalink_fu/lib/data/x90.yml +257 -0
  120. data/lib/permalink_fu/lib/data/x91.yml +257 -0
  121. data/lib/permalink_fu/lib/data/x92.yml +257 -0
  122. data/lib/permalink_fu/lib/data/x93.yml +257 -0
  123. data/lib/permalink_fu/lib/data/x94.yml +257 -0
  124. data/lib/permalink_fu/lib/data/x95.yml +257 -0
  125. data/lib/permalink_fu/lib/data/x96.yml +257 -0
  126. data/lib/permalink_fu/lib/data/x97.yml +257 -0
  127. data/lib/permalink_fu/lib/data/x98.yml +257 -0
  128. data/lib/permalink_fu/lib/data/x99.yml +257 -0
  129. data/lib/permalink_fu/lib/data/x9a.yml +257 -0
  130. data/lib/permalink_fu/lib/data/x9b.yml +257 -0
  131. data/lib/permalink_fu/lib/data/x9c.yml +257 -0
  132. data/lib/permalink_fu/lib/data/x9d.yml +257 -0
  133. data/lib/permalink_fu/lib/data/x9e.yml +257 -0
  134. data/lib/permalink_fu/lib/data/x9f.yml +256 -0
  135. data/lib/permalink_fu/lib/data/xa0.yml +257 -0
  136. data/lib/permalink_fu/lib/data/xa1.yml +257 -0
  137. data/lib/permalink_fu/lib/data/xa2.yml +257 -0
  138. data/lib/permalink_fu/lib/data/xa3.yml +257 -0
  139. data/lib/permalink_fu/lib/data/xa4.yml +256 -0
  140. data/lib/permalink_fu/lib/data/xac.yml +257 -0
  141. data/lib/permalink_fu/lib/data/xad.yml +257 -0
  142. data/lib/permalink_fu/lib/data/xae.yml +257 -0
  143. data/lib/permalink_fu/lib/data/xaf.yml +257 -0
  144. data/lib/permalink_fu/lib/data/xb0.yml +257 -0
  145. data/lib/permalink_fu/lib/data/xb1.yml +257 -0
  146. data/lib/permalink_fu/lib/data/xb2.yml +257 -0
  147. data/lib/permalink_fu/lib/data/xb3.yml +257 -0
  148. data/lib/permalink_fu/lib/data/xb4.yml +257 -0
  149. data/lib/permalink_fu/lib/data/xb5.yml +257 -0
  150. data/lib/permalink_fu/lib/data/xb6.yml +257 -0
  151. data/lib/permalink_fu/lib/data/xb7.yml +257 -0
  152. data/lib/permalink_fu/lib/data/xb8.yml +257 -0
  153. data/lib/permalink_fu/lib/data/xb9.yml +257 -0
  154. data/lib/permalink_fu/lib/data/xba.yml +257 -0
  155. data/lib/permalink_fu/lib/data/xbb.yml +257 -0
  156. data/lib/permalink_fu/lib/data/xbc.yml +257 -0
  157. data/lib/permalink_fu/lib/data/xbd.yml +257 -0
  158. data/lib/permalink_fu/lib/data/xbe.yml +257 -0
  159. data/lib/permalink_fu/lib/data/xbf.yml +257 -0
  160. data/lib/permalink_fu/lib/data/xc0.yml +257 -0
  161. data/lib/permalink_fu/lib/data/xc1.yml +257 -0
  162. data/lib/permalink_fu/lib/data/xc2.yml +257 -0
  163. data/lib/permalink_fu/lib/data/xc3.yml +257 -0
  164. data/lib/permalink_fu/lib/data/xc4.yml +257 -0
  165. data/lib/permalink_fu/lib/data/xc5.yml +257 -0
  166. data/lib/permalink_fu/lib/data/xc6.yml +257 -0
  167. data/lib/permalink_fu/lib/data/xc7.yml +257 -0
  168. data/lib/permalink_fu/lib/data/xc8.yml +257 -0
  169. data/lib/permalink_fu/lib/data/xc9.yml +257 -0
  170. data/lib/permalink_fu/lib/data/xca.yml +257 -0
  171. data/lib/permalink_fu/lib/data/xcb.yml +257 -0
  172. data/lib/permalink_fu/lib/data/xcc.yml +257 -0
  173. data/lib/permalink_fu/lib/data/xcd.yml +257 -0
  174. data/lib/permalink_fu/lib/data/xce.yml +257 -0
  175. data/lib/permalink_fu/lib/data/xcf.yml +257 -0
  176. data/lib/permalink_fu/lib/data/xd0.yml +257 -0
  177. data/lib/permalink_fu/lib/data/xd1.yml +257 -0
  178. data/lib/permalink_fu/lib/data/xd2.yml +257 -0
  179. data/lib/permalink_fu/lib/data/xd3.yml +257 -0
  180. data/lib/permalink_fu/lib/data/xd4.yml +257 -0
  181. data/lib/permalink_fu/lib/data/xd5.yml +257 -0
  182. data/lib/permalink_fu/lib/data/xd6.yml +257 -0
  183. data/lib/permalink_fu/lib/data/xd7.yml +256 -0
  184. data/lib/permalink_fu/lib/data/xf9.yml +257 -0
  185. data/lib/permalink_fu/lib/data/xfa.yml +256 -0
  186. data/lib/permalink_fu/lib/data/xfb.yml +257 -0
  187. data/lib/permalink_fu/lib/data/xfc.yml +257 -0
  188. data/lib/permalink_fu/lib/data/xfd.yml +256 -0
  189. data/lib/permalink_fu/lib/data/xfe.yml +257 -0
  190. data/lib/permalink_fu/lib/data/xff.yml +257 -0
  191. data/lib/permalink_fu/lib/permalink_fu.rb +176 -0
  192. data/lib/permalink_fu/test/permalink_fu_test.rb +476 -0
  193. data/lib/permalink_fu/test/test_helper.rb +13 -0
  194. data/public/images/check.png +0 -0
  195. data/public/images/credit_card.png +0 -0
  196. metadata +214 -39
@@ -1,8 +1,25 @@
1
1
  class Document < ActiveRecord::Base
2
- has_relational_dynamic_attributes
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
@@ -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.create(
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)
@@ -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
@@ -0,0 +1,5 @@
1
+ class AddDynamicAttributesToDocuments < ActiveRecord::Migration
2
+ def change
3
+ add_column :documents, :dynamic_attributes, :text
4
+ end
5
+ end
@@ -1,5 +1,4 @@
1
1
  require 'nokogiri'
2
- require 'permalink_fu'
3
2
  require 'acts-as-taggable-on'
4
3
  require 'zip/zip'
5
4
  require 'zip/zipfilesystem'
@@ -2,7 +2,7 @@ module Knitkit
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 2
4
4
  MINOR = 0
5
- TINY = 4
5
+ TINY = 5
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].compact.join('.')
8
8
  end
data/lib/knitkit.rb CHANGED
@@ -2,6 +2,7 @@
2
2
  require 'erp_app'
3
3
  require 'erp_forms'
4
4
 
5
+ require "permalink_fu/lib/permalink_fu"
5
6
  require 'routing_filter'
6
7
  require "knitkit/version"
7
8
  require "knitkit/routing_filter/section_router.rb"
@@ -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