Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
  • 13 commits
  • 6 files changed
  • 1 comment
  • 6 contributors
5 README.rdoc
Source Rendered
@@ -18,6 +18,7 @@ which will populate the <tt>url</tt> attribute on the object with the converted
18 18 blank. Default is false (meaning url generation will happen always)
19 19 <tt>:sync_url</tt>:: If set to true, the url field will be updated when changes are made to the
20 20 attribute it is based on. Default is false.
  21 +<tt>:allow_slash</tt>:: If set to true, the url field will not convert slashes. Default is false.
21 22
22 23 In order to use the generated url attribute, you will probably want to override <tt>to_param</tt> like so, in your Model:
23 24
@@ -28,6 +29,8 @@ In order to use the generated url attribute, you will probably want to override
28 29
29 30 Routing called via named routes like <tt>foo_path(@foo)</tt> will automatically use the url. In your controllers you will need to call <tt>Foo.find_by_url(params[:id])</tt> instead of the regular find. Don't look for <tt>params[:url]</tt> unless you set it explicitly in the routing, <tt>to_param</tt> will generate <tt>params[:id]</tt>.
30 31
  32 +Note that if you add <tt>acts_as_url</tt> to an old model, the <tt>url</tt> database column will inititally be blank. To set this column for your old instances, you can use the <tt>initialize_urls</tt> method. So if your class is <tt>Post</tt>, just say <tt>Post.all.each{|p| p.initialize_urls}</tt>.
  33 +
31 34 Unlike other permalink solutions, ActsAsUrl doesn't rely on Iconv (which is inconsistent across platforms and doesn't provide great transliteration as is) but instead uses a transliteration scheme (see the code for Unidecoder) which produces much better results for Unicode characters. It also mixes in some custom helpers to translate common characters into a more URI-friendly format rather than just dump them completely. Examples:
32 35
33 36 # A simple prelude
@@ -81,7 +84,7 @@ In both the YAML and pure Hash implementation, the end result should be a Hash w
81 84
82 85 A collection of extensions on Ruby's String class. Please see the documentation for StringExtensions module for more information. There's not much to explain about them really.
83 86
84   -== Note to users of Devise
  87 +== Note to users of CanCan
85 88
86 89 You'll need to add a <tt>:find_by => :url</tt> to your <tt>load_and_authorize_resource</tt>. Here's an example:
87 90
368 Rakefile
@@ -21,189 +21,189 @@ begin
21 21 README.rdoc
22 22 stringex.gemspec
23 23 lib/stringex.rb
24   - lib/lucky_sneaks/acts_as_url.rb
25   - lib/lucky_sneaks/string_extensions.rb
26   - lib/lucky_sneaks/unidecoder.rb
27   - lib/lucky_sneaks/unidecoder_data/x00.yml
28   - lib/lucky_sneaks/unidecoder_data/x01.yml
29   - lib/lucky_sneaks/unidecoder_data/x02.yml
30   - lib/lucky_sneaks/unidecoder_data/x03.yml
31   - lib/lucky_sneaks/unidecoder_data/x04.yml
32   - lib/lucky_sneaks/unidecoder_data/x05.yml
33   - lib/lucky_sneaks/unidecoder_data/x06.yml
34   - lib/lucky_sneaks/unidecoder_data/x07.yml
35   - lib/lucky_sneaks/unidecoder_data/x09.yml
36   - lib/lucky_sneaks/unidecoder_data/x0a.yml
37   - lib/lucky_sneaks/unidecoder_data/x0b.yml
38   - lib/lucky_sneaks/unidecoder_data/x0c.yml
39   - lib/lucky_sneaks/unidecoder_data/x0d.yml
40   - lib/lucky_sneaks/unidecoder_data/x0e.yml
41   - lib/lucky_sneaks/unidecoder_data/x0f.yml
42   - lib/lucky_sneaks/unidecoder_data/x10.yml
43   - lib/lucky_sneaks/unidecoder_data/x11.yml
44   - lib/lucky_sneaks/unidecoder_data/x12.yml
45   - lib/lucky_sneaks/unidecoder_data/x13.yml
46   - lib/lucky_sneaks/unidecoder_data/x14.yml
47   - lib/lucky_sneaks/unidecoder_data/x15.yml
48   - lib/lucky_sneaks/unidecoder_data/x16.yml
49   - lib/lucky_sneaks/unidecoder_data/x17.yml
50   - lib/lucky_sneaks/unidecoder_data/x18.yml
51   - lib/lucky_sneaks/unidecoder_data/x1e.yml
52   - lib/lucky_sneaks/unidecoder_data/x1f.yml
53   - lib/lucky_sneaks/unidecoder_data/x20.yml
54   - lib/lucky_sneaks/unidecoder_data/x21.yml
55   - lib/lucky_sneaks/unidecoder_data/x22.yml
56   - lib/lucky_sneaks/unidecoder_data/x23.yml
57   - lib/lucky_sneaks/unidecoder_data/x24.yml
58   - lib/lucky_sneaks/unidecoder_data/x25.yml
59   - lib/lucky_sneaks/unidecoder_data/x26.yml
60   - lib/lucky_sneaks/unidecoder_data/x27.yml
61   - lib/lucky_sneaks/unidecoder_data/x28.yml
62   - lib/lucky_sneaks/unidecoder_data/x2e.yml
63   - lib/lucky_sneaks/unidecoder_data/x2f.yml
64   - lib/lucky_sneaks/unidecoder_data/x30.yml
65   - lib/lucky_sneaks/unidecoder_data/x31.yml
66   - lib/lucky_sneaks/unidecoder_data/x32.yml
67   - lib/lucky_sneaks/unidecoder_data/x33.yml
68   - lib/lucky_sneaks/unidecoder_data/x4d.yml
69   - lib/lucky_sneaks/unidecoder_data/x4e.yml
70   - lib/lucky_sneaks/unidecoder_data/x4f.yml
71   - lib/lucky_sneaks/unidecoder_data/x50.yml
72   - lib/lucky_sneaks/unidecoder_data/x51.yml
73   - lib/lucky_sneaks/unidecoder_data/x52.yml
74   - lib/lucky_sneaks/unidecoder_data/x53.yml
75   - lib/lucky_sneaks/unidecoder_data/x54.yml
76   - lib/lucky_sneaks/unidecoder_data/x55.yml
77   - lib/lucky_sneaks/unidecoder_data/x56.yml
78   - lib/lucky_sneaks/unidecoder_data/x57.yml
79   - lib/lucky_sneaks/unidecoder_data/x58.yml
80   - lib/lucky_sneaks/unidecoder_data/x59.yml
81   - lib/lucky_sneaks/unidecoder_data/x5a.yml
82   - lib/lucky_sneaks/unidecoder_data/x5b.yml
83   - lib/lucky_sneaks/unidecoder_data/x5c.yml
84   - lib/lucky_sneaks/unidecoder_data/x5d.yml
85   - lib/lucky_sneaks/unidecoder_data/x5e.yml
86   - lib/lucky_sneaks/unidecoder_data/x5f.yml
87   - lib/lucky_sneaks/unidecoder_data/x60.yml
88   - lib/lucky_sneaks/unidecoder_data/x61.yml
89   - lib/lucky_sneaks/unidecoder_data/x62.yml
90   - lib/lucky_sneaks/unidecoder_data/x63.yml
91   - lib/lucky_sneaks/unidecoder_data/x64.yml
92   - lib/lucky_sneaks/unidecoder_data/x65.yml
93   - lib/lucky_sneaks/unidecoder_data/x66.yml
94   - lib/lucky_sneaks/unidecoder_data/x67.yml
95   - lib/lucky_sneaks/unidecoder_data/x68.yml
96   - lib/lucky_sneaks/unidecoder_data/x69.yml
97   - lib/lucky_sneaks/unidecoder_data/x6a.yml
98   - lib/lucky_sneaks/unidecoder_data/x6b.yml
99   - lib/lucky_sneaks/unidecoder_data/x6c.yml
100   - lib/lucky_sneaks/unidecoder_data/x6d.yml
101   - lib/lucky_sneaks/unidecoder_data/x6e.yml
102   - lib/lucky_sneaks/unidecoder_data/x6f.yml
103   - lib/lucky_sneaks/unidecoder_data/x70.yml
104   - lib/lucky_sneaks/unidecoder_data/x71.yml
105   - lib/lucky_sneaks/unidecoder_data/x72.yml
106   - lib/lucky_sneaks/unidecoder_data/x73.yml
107   - lib/lucky_sneaks/unidecoder_data/x74.yml
108   - lib/lucky_sneaks/unidecoder_data/x75.yml
109   - lib/lucky_sneaks/unidecoder_data/x76.yml
110   - lib/lucky_sneaks/unidecoder_data/x77.yml
111   - lib/lucky_sneaks/unidecoder_data/x78.yml
112   - lib/lucky_sneaks/unidecoder_data/x79.yml
113   - lib/lucky_sneaks/unidecoder_data/x7a.yml
114   - lib/lucky_sneaks/unidecoder_data/x7b.yml
115   - lib/lucky_sneaks/unidecoder_data/x7c.yml
116   - lib/lucky_sneaks/unidecoder_data/x7d.yml
117   - lib/lucky_sneaks/unidecoder_data/x7e.yml
118   - lib/lucky_sneaks/unidecoder_data/x7f.yml
119   - lib/lucky_sneaks/unidecoder_data/x80.yml
120   - lib/lucky_sneaks/unidecoder_data/x81.yml
121   - lib/lucky_sneaks/unidecoder_data/x82.yml
122   - lib/lucky_sneaks/unidecoder_data/x83.yml
123   - lib/lucky_sneaks/unidecoder_data/x84.yml
124   - lib/lucky_sneaks/unidecoder_data/x85.yml
125   - lib/lucky_sneaks/unidecoder_data/x86.yml
126   - lib/lucky_sneaks/unidecoder_data/x87.yml
127   - lib/lucky_sneaks/unidecoder_data/x88.yml
128   - lib/lucky_sneaks/unidecoder_data/x89.yml
129   - lib/lucky_sneaks/unidecoder_data/x8a.yml
130   - lib/lucky_sneaks/unidecoder_data/x8b.yml
131   - lib/lucky_sneaks/unidecoder_data/x8c.yml
132   - lib/lucky_sneaks/unidecoder_data/x8d.yml
133   - lib/lucky_sneaks/unidecoder_data/x8e.yml
134   - lib/lucky_sneaks/unidecoder_data/x8f.yml
135   - lib/lucky_sneaks/unidecoder_data/x90.yml
136   - lib/lucky_sneaks/unidecoder_data/x91.yml
137   - lib/lucky_sneaks/unidecoder_data/x92.yml
138   - lib/lucky_sneaks/unidecoder_data/x93.yml
139   - lib/lucky_sneaks/unidecoder_data/x94.yml
140   - lib/lucky_sneaks/unidecoder_data/x95.yml
141   - lib/lucky_sneaks/unidecoder_data/x96.yml
142   - lib/lucky_sneaks/unidecoder_data/x97.yml
143   - lib/lucky_sneaks/unidecoder_data/x98.yml
144   - lib/lucky_sneaks/unidecoder_data/x99.yml
145   - lib/lucky_sneaks/unidecoder_data/x9a.yml
146   - lib/lucky_sneaks/unidecoder_data/x9b.yml
147   - lib/lucky_sneaks/unidecoder_data/x9c.yml
148   - lib/lucky_sneaks/unidecoder_data/x9d.yml
149   - lib/lucky_sneaks/unidecoder_data/x9e.yml
150   - lib/lucky_sneaks/unidecoder_data/x9f.yml
151   - lib/lucky_sneaks/unidecoder_data/xa0.yml
152   - lib/lucky_sneaks/unidecoder_data/xa1.yml
153   - lib/lucky_sneaks/unidecoder_data/xa2.yml
154   - lib/lucky_sneaks/unidecoder_data/xa3.yml
155   - lib/lucky_sneaks/unidecoder_data/xa4.yml
156   - lib/lucky_sneaks/unidecoder_data/xac.yml
157   - lib/lucky_sneaks/unidecoder_data/xad.yml
158   - lib/lucky_sneaks/unidecoder_data/xae.yml
159   - lib/lucky_sneaks/unidecoder_data/xaf.yml
160   - lib/lucky_sneaks/unidecoder_data/xb0.yml
161   - lib/lucky_sneaks/unidecoder_data/xb1.yml
162   - lib/lucky_sneaks/unidecoder_data/xb2.yml
163   - lib/lucky_sneaks/unidecoder_data/xb3.yml
164   - lib/lucky_sneaks/unidecoder_data/xb4.yml
165   - lib/lucky_sneaks/unidecoder_data/xb5.yml
166   - lib/lucky_sneaks/unidecoder_data/xb6.yml
167   - lib/lucky_sneaks/unidecoder_data/xb7.yml
168   - lib/lucky_sneaks/unidecoder_data/xb8.yml
169   - lib/lucky_sneaks/unidecoder_data/xb9.yml
170   - lib/lucky_sneaks/unidecoder_data/xba.yml
171   - lib/lucky_sneaks/unidecoder_data/xbb.yml
172   - lib/lucky_sneaks/unidecoder_data/xbc.yml
173   - lib/lucky_sneaks/unidecoder_data/xbd.yml
174   - lib/lucky_sneaks/unidecoder_data/xbe.yml
175   - lib/lucky_sneaks/unidecoder_data/xbf.yml
176   - lib/lucky_sneaks/unidecoder_data/xc0.yml
177   - lib/lucky_sneaks/unidecoder_data/xc1.yml
178   - lib/lucky_sneaks/unidecoder_data/xc2.yml
179   - lib/lucky_sneaks/unidecoder_data/xc3.yml
180   - lib/lucky_sneaks/unidecoder_data/xc4.yml
181   - lib/lucky_sneaks/unidecoder_data/xc5.yml
182   - lib/lucky_sneaks/unidecoder_data/xc6.yml
183   - lib/lucky_sneaks/unidecoder_data/xc7.yml
184   - lib/lucky_sneaks/unidecoder_data/xc8.yml
185   - lib/lucky_sneaks/unidecoder_data/xc9.yml
186   - lib/lucky_sneaks/unidecoder_data/xca.yml
187   - lib/lucky_sneaks/unidecoder_data/xcb.yml
188   - lib/lucky_sneaks/unidecoder_data/xcc.yml
189   - lib/lucky_sneaks/unidecoder_data/xcd.yml
190   - lib/lucky_sneaks/unidecoder_data/xce.yml
191   - lib/lucky_sneaks/unidecoder_data/xcf.yml
192   - lib/lucky_sneaks/unidecoder_data/xd0.yml
193   - lib/lucky_sneaks/unidecoder_data/xd1.yml
194   - lib/lucky_sneaks/unidecoder_data/xd2.yml
195   - lib/lucky_sneaks/unidecoder_data/xd3.yml
196   - lib/lucky_sneaks/unidecoder_data/xd4.yml
197   - lib/lucky_sneaks/unidecoder_data/xd5.yml
198   - lib/lucky_sneaks/unidecoder_data/xd6.yml
199   - lib/lucky_sneaks/unidecoder_data/xd7.yml
200   - lib/lucky_sneaks/unidecoder_data/xf9.yml
201   - lib/lucky_sneaks/unidecoder_data/xfa.yml
202   - lib/lucky_sneaks/unidecoder_data/xfb.yml
203   - lib/lucky_sneaks/unidecoder_data/xfc.yml
204   - lib/lucky_sneaks/unidecoder_data/xfd.yml
205   - lib/lucky_sneaks/unidecoder_data/xfe.yml
206   - lib/lucky_sneaks/unidecoder_data/xff.yml
  24 + lib/stringex/acts_as_url.rb
  25 + lib/stringex/string_extensions.rb
  26 + lib/stringex/unidecoder.rb
  27 + lib/stringex/unidecoder_data/x00.yml
  28 + lib/stringex/unidecoder_data/x01.yml
  29 + lib/stringex/unidecoder_data/x02.yml
  30 + lib/stringex/unidecoder_data/x03.yml
  31 + lib/stringex/unidecoder_data/x04.yml
  32 + lib/stringex/unidecoder_data/x05.yml
  33 + lib/stringex/unidecoder_data/x06.yml
  34 + lib/stringex/unidecoder_data/x07.yml
  35 + lib/stringex/unidecoder_data/x09.yml
  36 + lib/stringex/unidecoder_data/x0a.yml
  37 + lib/stringex/unidecoder_data/x0b.yml
  38 + lib/stringex/unidecoder_data/x0c.yml
  39 + lib/stringex/unidecoder_data/x0d.yml
  40 + lib/stringex/unidecoder_data/x0e.yml
  41 + lib/stringex/unidecoder_data/x0f.yml
  42 + lib/stringex/unidecoder_data/x10.yml
  43 + lib/stringex/unidecoder_data/x11.yml
  44 + lib/stringex/unidecoder_data/x12.yml
  45 + lib/stringex/unidecoder_data/x13.yml
  46 + lib/stringex/unidecoder_data/x14.yml
  47 + lib/stringex/unidecoder_data/x15.yml
  48 + lib/stringex/unidecoder_data/x16.yml
  49 + lib/stringex/unidecoder_data/x17.yml
  50 + lib/stringex/unidecoder_data/x18.yml
  51 + lib/stringex/unidecoder_data/x1e.yml
  52 + lib/stringex/unidecoder_data/x1f.yml
  53 + lib/stringex/unidecoder_data/x20.yml
  54 + lib/stringex/unidecoder_data/x21.yml
  55 + lib/stringex/unidecoder_data/x22.yml
  56 + lib/stringex/unidecoder_data/x23.yml
  57 + lib/stringex/unidecoder_data/x24.yml
  58 + lib/stringex/unidecoder_data/x25.yml
  59 + lib/stringex/unidecoder_data/x26.yml
  60 + lib/stringex/unidecoder_data/x27.yml
  61 + lib/stringex/unidecoder_data/x28.yml
  62 + lib/stringex/unidecoder_data/x2e.yml
  63 + lib/stringex/unidecoder_data/x2f.yml
  64 + lib/stringex/unidecoder_data/x30.yml
  65 + lib/stringex/unidecoder_data/x31.yml
  66 + lib/stringex/unidecoder_data/x32.yml
  67 + lib/stringex/unidecoder_data/x33.yml
  68 + lib/stringex/unidecoder_data/x4d.yml
  69 + lib/stringex/unidecoder_data/x4e.yml
  70 + lib/stringex/unidecoder_data/x4f.yml
  71 + lib/stringex/unidecoder_data/x50.yml
  72 + lib/stringex/unidecoder_data/x51.yml
  73 + lib/stringex/unidecoder_data/x52.yml
  74 + lib/stringex/unidecoder_data/x53.yml
  75 + lib/stringex/unidecoder_data/x54.yml
  76 + lib/stringex/unidecoder_data/x55.yml
  77 + lib/stringex/unidecoder_data/x56.yml
  78 + lib/stringex/unidecoder_data/x57.yml
  79 + lib/stringex/unidecoder_data/x58.yml
  80 + lib/stringex/unidecoder_data/x59.yml
  81 + lib/stringex/unidecoder_data/x5a.yml
  82 + lib/stringex/unidecoder_data/x5b.yml
  83 + lib/stringex/unidecoder_data/x5c.yml
  84 + lib/stringex/unidecoder_data/x5d.yml
  85 + lib/stringex/unidecoder_data/x5e.yml
  86 + lib/stringex/unidecoder_data/x5f.yml
  87 + lib/stringex/unidecoder_data/x60.yml
  88 + lib/stringex/unidecoder_data/x61.yml
  89 + lib/stringex/unidecoder_data/x62.yml
  90 + lib/stringex/unidecoder_data/x63.yml
  91 + lib/stringex/unidecoder_data/x64.yml
  92 + lib/stringex/unidecoder_data/x65.yml
  93 + lib/stringex/unidecoder_data/x66.yml
  94 + lib/stringex/unidecoder_data/x67.yml
  95 + lib/stringex/unidecoder_data/x68.yml
  96 + lib/stringex/unidecoder_data/x69.yml
  97 + lib/stringex/unidecoder_data/x6a.yml
  98 + lib/stringex/unidecoder_data/x6b.yml
  99 + lib/stringex/unidecoder_data/x6c.yml
  100 + lib/stringex/unidecoder_data/x6d.yml
  101 + lib/stringex/unidecoder_data/x6e.yml
  102 + lib/stringex/unidecoder_data/x6f.yml
  103 + lib/stringex/unidecoder_data/x70.yml
  104 + lib/stringex/unidecoder_data/x71.yml
  105 + lib/stringex/unidecoder_data/x72.yml
  106 + lib/stringex/unidecoder_data/x73.yml
  107 + lib/stringex/unidecoder_data/x74.yml
  108 + lib/stringex/unidecoder_data/x75.yml
  109 + lib/stringex/unidecoder_data/x76.yml
  110 + lib/stringex/unidecoder_data/x77.yml
  111 + lib/stringex/unidecoder_data/x78.yml
  112 + lib/stringex/unidecoder_data/x79.yml
  113 + lib/stringex/unidecoder_data/x7a.yml
  114 + lib/stringex/unidecoder_data/x7b.yml
  115 + lib/stringex/unidecoder_data/x7c.yml
  116 + lib/stringex/unidecoder_data/x7d.yml
  117 + lib/stringex/unidecoder_data/x7e.yml
  118 + lib/stringex/unidecoder_data/x7f.yml
  119 + lib/stringex/unidecoder_data/x80.yml
  120 + lib/stringex/unidecoder_data/x81.yml
  121 + lib/stringex/unidecoder_data/x82.yml
  122 + lib/stringex/unidecoder_data/x83.yml
  123 + lib/stringex/unidecoder_data/x84.yml
  124 + lib/stringex/unidecoder_data/x85.yml
  125 + lib/stringex/unidecoder_data/x86.yml
  126 + lib/stringex/unidecoder_data/x87.yml
  127 + lib/stringex/unidecoder_data/x88.yml
  128 + lib/stringex/unidecoder_data/x89.yml
  129 + lib/stringex/unidecoder_data/x8a.yml
  130 + lib/stringex/unidecoder_data/x8b.yml
  131 + lib/stringex/unidecoder_data/x8c.yml
  132 + lib/stringex/unidecoder_data/x8d.yml
  133 + lib/stringex/unidecoder_data/x8e.yml
  134 + lib/stringex/unidecoder_data/x8f.yml
  135 + lib/stringex/unidecoder_data/x90.yml
  136 + lib/stringex/unidecoder_data/x91.yml
  137 + lib/stringex/unidecoder_data/x92.yml
  138 + lib/stringex/unidecoder_data/x93.yml
  139 + lib/stringex/unidecoder_data/x94.yml
  140 + lib/stringex/unidecoder_data/x95.yml
  141 + lib/stringex/unidecoder_data/x96.yml
  142 + lib/stringex/unidecoder_data/x97.yml
  143 + lib/stringex/unidecoder_data/x98.yml
  144 + lib/stringex/unidecoder_data/x99.yml
  145 + lib/stringex/unidecoder_data/x9a.yml
  146 + lib/stringex/unidecoder_data/x9b.yml
  147 + lib/stringex/unidecoder_data/x9c.yml
  148 + lib/stringex/unidecoder_data/x9d.yml
  149 + lib/stringex/unidecoder_data/x9e.yml
  150 + lib/stringex/unidecoder_data/x9f.yml
  151 + lib/stringex/unidecoder_data/xa0.yml
  152 + lib/stringex/unidecoder_data/xa1.yml
  153 + lib/stringex/unidecoder_data/xa2.yml
  154 + lib/stringex/unidecoder_data/xa3.yml
  155 + lib/stringex/unidecoder_data/xa4.yml
  156 + lib/stringex/unidecoder_data/xac.yml
  157 + lib/stringex/unidecoder_data/xad.yml
  158 + lib/stringex/unidecoder_data/xae.yml
  159 + lib/stringex/unidecoder_data/xaf.yml
  160 + lib/stringex/unidecoder_data/xb0.yml
  161 + lib/stringex/unidecoder_data/xb1.yml
  162 + lib/stringex/unidecoder_data/xb2.yml
  163 + lib/stringex/unidecoder_data/xb3.yml
  164 + lib/stringex/unidecoder_data/xb4.yml
  165 + lib/stringex/unidecoder_data/xb5.yml
  166 + lib/stringex/unidecoder_data/xb6.yml
  167 + lib/stringex/unidecoder_data/xb7.yml
  168 + lib/stringex/unidecoder_data/xb8.yml
  169 + lib/stringex/unidecoder_data/xb9.yml
  170 + lib/stringex/unidecoder_data/xba.yml
  171 + lib/stringex/unidecoder_data/xbb.yml
  172 + lib/stringex/unidecoder_data/xbc.yml
  173 + lib/stringex/unidecoder_data/xbd.yml
  174 + lib/stringex/unidecoder_data/xbe.yml
  175 + lib/stringex/unidecoder_data/xbf.yml
  176 + lib/stringex/unidecoder_data/xc0.yml
  177 + lib/stringex/unidecoder_data/xc1.yml
  178 + lib/stringex/unidecoder_data/xc2.yml
  179 + lib/stringex/unidecoder_data/xc3.yml
  180 + lib/stringex/unidecoder_data/xc4.yml
  181 + lib/stringex/unidecoder_data/xc5.yml
  182 + lib/stringex/unidecoder_data/xc6.yml
  183 + lib/stringex/unidecoder_data/xc7.yml
  184 + lib/stringex/unidecoder_data/xc8.yml
  185 + lib/stringex/unidecoder_data/xc9.yml
  186 + lib/stringex/unidecoder_data/xca.yml
  187 + lib/stringex/unidecoder_data/xcb.yml
  188 + lib/stringex/unidecoder_data/xcc.yml
  189 + lib/stringex/unidecoder_data/xcd.yml
  190 + lib/stringex/unidecoder_data/xce.yml
  191 + lib/stringex/unidecoder_data/xcf.yml
  192 + lib/stringex/unidecoder_data/xd0.yml
  193 + lib/stringex/unidecoder_data/xd1.yml
  194 + lib/stringex/unidecoder_data/xd2.yml
  195 + lib/stringex/unidecoder_data/xd3.yml
  196 + lib/stringex/unidecoder_data/xd4.yml
  197 + lib/stringex/unidecoder_data/xd5.yml
  198 + lib/stringex/unidecoder_data/xd6.yml
  199 + lib/stringex/unidecoder_data/xd7.yml
  200 + lib/stringex/unidecoder_data/xf9.yml
  201 + lib/stringex/unidecoder_data/xfa.yml
  202 + lib/stringex/unidecoder_data/xfb.yml
  203 + lib/stringex/unidecoder_data/xfc.yml
  204 + lib/stringex/unidecoder_data/xfd.yml
  205 + lib/stringex/unidecoder_data/xfe.yml
  206 + lib/stringex/unidecoder_data/xff.yml
207 207 }
208 208 gem.test_files = %w{
209 209 test/acts_as_url_test.rb
@@ -212,7 +212,7 @@ begin
212 212 }
213 213 gem.rdoc_options = %w{--main README.rdoc --charset utf-8 --line-numbers}
214 214 gem.extra_rdoc_files = %w{MIT-LICENSE README.rdoc}
215   - gem.version = "1.3.0"
  215 + gem.version = "1.3.2"
216 216 end
217 217
218 218 Jeweler::GemcutterTasks.new
4 lib/stringex/acts_as_url.rb
@@ -32,6 +32,7 @@ def acts_as_url(attribute, options = {})
32 32 cattr_accessor :url_attribute # The attribute on the DB
33 33 cattr_accessor :only_when_blank
34 34 cattr_accessor :duplicate_count_separator
  35 + cattr_accessor :allow_slash
35 36
36 37 if options[:sync_url]
37 38 before_validation(:ensure_unique_url)
@@ -48,6 +49,7 @@ def acts_as_url(attribute, options = {})
48 49 self.url_attribute = options[:url_attribute] || "url"
49 50 self.only_when_blank = options[:only_when_blank] || false
50 51 self.duplicate_count_separator = options[:duplicate_count_separator] || "-"
  52 + self.allow_slash = options[:allow_slash] || false
51 53
52 54 class_eval <<-"END"
53 55 def #{url_attribute}
@@ -81,7 +83,7 @@ def ensure_unique_url
81 83 url_attribute = self.class.url_attribute
82 84 separator = self.class.duplicate_count_separator
83 85 base_url = self.send(url_attribute)
84   - base_url = self.send(self.class.attribute_to_urlify).to_s.to_url if base_url.blank? || !self.only_when_blank
  86 + base_url = self.send(self.class.attribute_to_urlify).to_s.to_url(:allow_slash => self.allow_slash) if base_url.blank? || !self.only_when_blank
85 87 conditions = ["#{url_attribute} LIKE ?", base_url+'%']
86 88 unless new_record?
87 89 conditions.first << " and id != ?"
18 lib/stringex/string_extensions.rb
@@ -35,14 +35,14 @@ def to_html(lite_mode = false)
35 35 # Create a URI-friendly representation of the string. This is used internally by
36 36 # acts_as_url[link:classes/Stringex/ActsAsUrl/ClassMethods.html#M000012]
37 37 # but can be called manually in order to generate an URI-friendly version of any string.
38   - def to_url
39   - remove_formatting.downcase.replace_whitespace("-").collapse("-")
  38 + def to_url(options = {})
  39 + remove_formatting(options).downcase.replace_whitespace("-").collapse("-")
40 40 end
41 41
42 42 # Performs multiple text manipulations. Essentially a shortcut for typing them all. View source
43 43 # below to see which methods are run.
44   - def remove_formatting
45   - strip_html_tags.convert_smart_punctuation.convert_accented_entities.convert_misc_entities.convert_misc_characters.to_ascii.collapse
  44 + def remove_formatting(options = {})
  45 + strip_html_tags.convert_smart_punctuation.convert_accented_entities.convert_misc_entities.convert_misc_characters(options).to_ascii.collapse
46 46 end
47 47
48 48 # Removes HTML tags from text. This code is simplified from Tobias Luettke's regular expression
@@ -132,7 +132,7 @@ def convert_smart_punctuation
132 132 # Note: Because this method will convert any & symbols to the string "and",
133 133 # you should run any methods which convert HTML entities (convert_html_entities and convert_misc_entities)
134 134 # before running this method.
135   - def convert_misc_characters
  135 + def convert_misc_characters(options = {})
136 136 dummy = dup.gsub(/\.{3,}/, " dot dot dot ") # Catch ellipses before single dot rule!
137 137 # Special rules for money
138 138 {
@@ -143,6 +143,7 @@ def convert_misc_characters
143 143 dummy.gsub!(found, replaced)
144 144 end
145 145 # Back to normal rules
  146 + misc_characters =
146 147 {
147 148 /\s*&\s*/ => "and",
148 149 /\s*#/ => "number",
@@ -153,14 +154,15 @@ def convert_misc_characters
153 154 /(\s|^)¥(\d*)(\s|$)/u => '\2 yen',
154 155 /\s*\*\s*/ => "star",
155 156 /\s*%\s*/ => "percent",
156   - /\s*(\\|\/)\s*/ => "slash",
157 157 /(\s*=\s*)/ => " equals ",
158 158 /\s*\+\s*/ => "plus"
159   - }.each do |found, replaced|
  159 + }
  160 + misc_characters[/\s*(\\|\/)\s*/] = 'slash' unless options[:allow_slash]
  161 + misc_characters.each do |found, replaced|
160 162 replaced = " #{replaced} " unless replaced =~ /\\1/
161 163 dummy.gsub!(found, replaced)
162 164 end
163   - dummy = dummy.gsub(/(^|\w)'(\w|$)/, '\1\2').gsub(/[\.,:;()\[\]\/\?!\^'"_]/, " ")
  165 + dummy = dummy.gsub(/(^|\w)'(\w|$)/, '\1\2').gsub(/[\.,:;()\[\]\?!\^'"_]/, " ")
164 166 end
165 167
166 168 # Replace runs of whitespace in string. Defaults to a single space but any replacement
2  lib/stringex/unidecoder.rb
@@ -115,7 +115,7 @@ def grouped_point(unpacked_character)
115 115 # Checks LOCAL_CODEPOINTS's Hash is in the format we expect before assigning it and raises
116 116 # instructive exception if not
117 117 def verify_local_codepoints(hash)
118   - pass_check = hash.all?{|key, value|
  118 + pass_check = hash.is_a?(Hash) && hash.all?{|key, value|
119 119 # Fuck a duck, eh?
120 120 [Symbol, String].include?(key.class) && value.is_a?(Hash) &&
121 121 value.keys.all?{|k| k.is_a?(String)} && value.values.all?{|v| v.is_a?(String)}
370 stringex.gemspec
@@ -5,11 +5,11 @@
5 5
6 6 Gem::Specification.new do |s|
7 7 s.name = %q{stringex}
8   - s.version = "1.3.0"
  8 + s.version = "1.3.2"
9 9
10 10 s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11 11 s.authors = ["Russell Norris"]
12   - s.date = %q{2011-08-08}
  12 + s.date = %q{2012-02-16}
13 13 s.description = %q{Some [hopefully] useful extensions to Ruby's String class. Stringex is made up of three libraries: ActsAsUrl [permalink solution with better character translation], Unidecoder [Unicode to ASCII transliteration], and StringExtensions [miscellaneous helper methods for the String class].}
14 14 s.email = %q{rsl@luckysneaks.com}
15 15 s.extra_rdoc_files = [
@@ -21,190 +21,190 @@ Gem::Specification.new do |s|
21 21 "README.rdoc",
22 22 "Rakefile",
23 23 "init.rb",
24   - "lib/lucky_sneaks/acts_as_url.rb",
25   - "lib/lucky_sneaks/string_extensions.rb",
26   - "lib/lucky_sneaks/unidecoder.rb",
27   - "lib/lucky_sneaks/unidecoder_data/x00.yml",
28   - "lib/lucky_sneaks/unidecoder_data/x01.yml",
29   - "lib/lucky_sneaks/unidecoder_data/x02.yml",
30   - "lib/lucky_sneaks/unidecoder_data/x03.yml",
31   - "lib/lucky_sneaks/unidecoder_data/x04.yml",
32   - "lib/lucky_sneaks/unidecoder_data/x05.yml",
33   - "lib/lucky_sneaks/unidecoder_data/x06.yml",
34   - "lib/lucky_sneaks/unidecoder_data/x07.yml",
35   - "lib/lucky_sneaks/unidecoder_data/x09.yml",
36   - "lib/lucky_sneaks/unidecoder_data/x0a.yml",
37   - "lib/lucky_sneaks/unidecoder_data/x0b.yml",
38   - "lib/lucky_sneaks/unidecoder_data/x0c.yml",
39   - "lib/lucky_sneaks/unidecoder_data/x0d.yml",
40   - "lib/lucky_sneaks/unidecoder_data/x0e.yml",
41   - "lib/lucky_sneaks/unidecoder_data/x0f.yml",
42   - "lib/lucky_sneaks/unidecoder_data/x10.yml",
43   - "lib/lucky_sneaks/unidecoder_data/x11.yml",
44   - "lib/lucky_sneaks/unidecoder_data/x12.yml",
45   - "lib/lucky_sneaks/unidecoder_data/x13.yml",
46   - "lib/lucky_sneaks/unidecoder_data/x14.yml",
47   - "lib/lucky_sneaks/unidecoder_data/x15.yml",
48   - "lib/lucky_sneaks/unidecoder_data/x16.yml",
49   - "lib/lucky_sneaks/unidecoder_data/x17.yml",
50   - "lib/lucky_sneaks/unidecoder_data/x18.yml",
51   - "lib/lucky_sneaks/unidecoder_data/x1e.yml",
52   - "lib/lucky_sneaks/unidecoder_data/x1f.yml",
53   - "lib/lucky_sneaks/unidecoder_data/x20.yml",
54   - "lib/lucky_sneaks/unidecoder_data/x21.yml",
55   - "lib/lucky_sneaks/unidecoder_data/x22.yml",
56   - "lib/lucky_sneaks/unidecoder_data/x23.yml",
57   - "lib/lucky_sneaks/unidecoder_data/x24.yml",
58   - "lib/lucky_sneaks/unidecoder_data/x25.yml",
59   - "lib/lucky_sneaks/unidecoder_data/x26.yml",
60   - "lib/lucky_sneaks/unidecoder_data/x27.yml",
61   - "lib/lucky_sneaks/unidecoder_data/x28.yml",
62   - "lib/lucky_sneaks/unidecoder_data/x2e.yml",
63   - "lib/lucky_sneaks/unidecoder_data/x2f.yml",
64   - "lib/lucky_sneaks/unidecoder_data/x30.yml",
65   - "lib/lucky_sneaks/unidecoder_data/x31.yml",
66   - "lib/lucky_sneaks/unidecoder_data/x32.yml",
67   - "lib/lucky_sneaks/unidecoder_data/x33.yml",
68   - "lib/lucky_sneaks/unidecoder_data/x4d.yml",
69   - "lib/lucky_sneaks/unidecoder_data/x4e.yml",
70   - "lib/lucky_sneaks/unidecoder_data/x4f.yml",
71   - "lib/lucky_sneaks/unidecoder_data/x50.yml",
72   - "lib/lucky_sneaks/unidecoder_data/x51.yml",
73   - "lib/lucky_sneaks/unidecoder_data/x52.yml",
74   - "lib/lucky_sneaks/unidecoder_data/x53.yml",
75   - "lib/lucky_sneaks/unidecoder_data/x54.yml",
76   - "lib/lucky_sneaks/unidecoder_data/x55.yml",
77   - "lib/lucky_sneaks/unidecoder_data/x56.yml",
78   - "lib/lucky_sneaks/unidecoder_data/x57.yml",
79   - "lib/lucky_sneaks/unidecoder_data/x58.yml",
80   - "lib/lucky_sneaks/unidecoder_data/x59.yml",
81   - "lib/lucky_sneaks/unidecoder_data/x5a.yml",
82   - "lib/lucky_sneaks/unidecoder_data/x5b.yml",
83   - "lib/lucky_sneaks/unidecoder_data/x5c.yml",
84   - "lib/lucky_sneaks/unidecoder_data/x5d.yml",
85   - "lib/lucky_sneaks/unidecoder_data/x5e.yml",
86   - "lib/lucky_sneaks/unidecoder_data/x5f.yml",
87   - "lib/lucky_sneaks/unidecoder_data/x60.yml",
88   - "lib/lucky_sneaks/unidecoder_data/x61.yml",
89   - "lib/lucky_sneaks/unidecoder_data/x62.yml",
90   - "lib/lucky_sneaks/unidecoder_data/x63.yml",
91   - "lib/lucky_sneaks/unidecoder_data/x64.yml",
92   - "lib/lucky_sneaks/unidecoder_data/x65.yml",
93   - "lib/lucky_sneaks/unidecoder_data/x66.yml",
94   - "lib/lucky_sneaks/unidecoder_data/x67.yml",
95   - "lib/lucky_sneaks/unidecoder_data/x68.yml",
96   - "lib/lucky_sneaks/unidecoder_data/x69.yml",
97   - "lib/lucky_sneaks/unidecoder_data/x6a.yml",
98   - "lib/lucky_sneaks/unidecoder_data/x6b.yml",
99   - "lib/lucky_sneaks/unidecoder_data/x6c.yml",
100   - "lib/lucky_sneaks/unidecoder_data/x6d.yml",
101   - "lib/lucky_sneaks/unidecoder_data/x6e.yml",
102   - "lib/lucky_sneaks/unidecoder_data/x6f.yml",
103   - "lib/lucky_sneaks/unidecoder_data/x70.yml",
104   - "lib/lucky_sneaks/unidecoder_data/x71.yml",
105   - "lib/lucky_sneaks/unidecoder_data/x72.yml",
106   - "lib/lucky_sneaks/unidecoder_data/x73.yml",
107   - "lib/lucky_sneaks/unidecoder_data/x74.yml",
108   - "lib/lucky_sneaks/unidecoder_data/x75.yml",
109   - "lib/lucky_sneaks/unidecoder_data/x76.yml",
110   - "lib/lucky_sneaks/unidecoder_data/x77.yml",
111   - "lib/lucky_sneaks/unidecoder_data/x78.yml",
112   - "lib/lucky_sneaks/unidecoder_data/x79.yml",
113   - "lib/lucky_sneaks/unidecoder_data/x7a.yml",
114   - "lib/lucky_sneaks/unidecoder_data/x7b.yml",
115   - "lib/lucky_sneaks/unidecoder_data/x7c.yml",
116   - "lib/lucky_sneaks/unidecoder_data/x7d.yml",
117   - "lib/lucky_sneaks/unidecoder_data/x7e.yml",
118   - "lib/lucky_sneaks/unidecoder_data/x7f.yml",
119   - "lib/lucky_sneaks/unidecoder_data/x80.yml",
120   - "lib/lucky_sneaks/unidecoder_data/x81.yml",
121   - "lib/lucky_sneaks/unidecoder_data/x82.yml",
122   - "lib/lucky_sneaks/unidecoder_data/x83.yml",
123   - "lib/lucky_sneaks/unidecoder_data/x84.yml",
124   - "lib/lucky_sneaks/unidecoder_data/x85.yml",
125   - "lib/lucky_sneaks/unidecoder_data/x86.yml",
126   - "lib/lucky_sneaks/unidecoder_data/x87.yml",
127   - "lib/lucky_sneaks/unidecoder_data/x88.yml",
128   - "lib/lucky_sneaks/unidecoder_data/x89.yml",
129   - "lib/lucky_sneaks/unidecoder_data/x8a.yml",
130   - "lib/lucky_sneaks/unidecoder_data/x8b.yml",
131   - "lib/lucky_sneaks/unidecoder_data/x8c.yml",
132   - "lib/lucky_sneaks/unidecoder_data/x8d.yml",
133   - "lib/lucky_sneaks/unidecoder_data/x8e.yml",
134   - "lib/lucky_sneaks/unidecoder_data/x8f.yml",
135   - "lib/lucky_sneaks/unidecoder_data/x90.yml",
136   - "lib/lucky_sneaks/unidecoder_data/x91.yml",
137   - "lib/lucky_sneaks/unidecoder_data/x92.yml",
138   - "lib/lucky_sneaks/unidecoder_data/x93.yml",
139   - "lib/lucky_sneaks/unidecoder_data/x94.yml",
140   - "lib/lucky_sneaks/unidecoder_data/x95.yml",
141   - "lib/lucky_sneaks/unidecoder_data/x96.yml",
142   - "lib/lucky_sneaks/unidecoder_data/x97.yml",
143   - "lib/lucky_sneaks/unidecoder_data/x98.yml",
144   - "lib/lucky_sneaks/unidecoder_data/x99.yml",
145   - "lib/lucky_sneaks/unidecoder_data/x9a.yml",
146   - "lib/lucky_sneaks/unidecoder_data/x9b.yml",
147   - "lib/lucky_sneaks/unidecoder_data/x9c.yml",
148   - "lib/lucky_sneaks/unidecoder_data/x9d.yml",
149   - "lib/lucky_sneaks/unidecoder_data/x9e.yml",
150   - "lib/lucky_sneaks/unidecoder_data/x9f.yml",
151   - "lib/lucky_sneaks/unidecoder_data/xa0.yml",
152   - "lib/lucky_sneaks/unidecoder_data/xa1.yml",
153   - "lib/lucky_sneaks/unidecoder_data/xa2.yml",
154   - "lib/lucky_sneaks/unidecoder_data/xa3.yml",
155   - "lib/lucky_sneaks/unidecoder_data/xa4.yml",
156   - "lib/lucky_sneaks/unidecoder_data/xac.yml",
157   - "lib/lucky_sneaks/unidecoder_data/xad.yml",
158   - "lib/lucky_sneaks/unidecoder_data/xae.yml",
159   - "lib/lucky_sneaks/unidecoder_data/xaf.yml",
160   - "lib/lucky_sneaks/unidecoder_data/xb0.yml",
161   - "lib/lucky_sneaks/unidecoder_data/xb1.yml",
162   - "lib/lucky_sneaks/unidecoder_data/xb2.yml",
163   - "lib/lucky_sneaks/unidecoder_data/xb3.yml",
164   - "lib/lucky_sneaks/unidecoder_data/xb4.yml",
165   - "lib/lucky_sneaks/unidecoder_data/xb5.yml",
166   - "lib/lucky_sneaks/unidecoder_data/xb6.yml",
167   - "lib/lucky_sneaks/unidecoder_data/xb7.yml",
168   - "lib/lucky_sneaks/unidecoder_data/xb8.yml",
169   - "lib/lucky_sneaks/unidecoder_data/xb9.yml",
170   - "lib/lucky_sneaks/unidecoder_data/xba.yml",
171   - "lib/lucky_sneaks/unidecoder_data/xbb.yml",
172   - "lib/lucky_sneaks/unidecoder_data/xbc.yml",
173   - "lib/lucky_sneaks/unidecoder_data/xbd.yml",
174   - "lib/lucky_sneaks/unidecoder_data/xbe.yml",
175   - "lib/lucky_sneaks/unidecoder_data/xbf.yml",
176   - "lib/lucky_sneaks/unidecoder_data/xc0.yml",
177   - "lib/lucky_sneaks/unidecoder_data/xc1.yml",
178   - "lib/lucky_sneaks/unidecoder_data/xc2.yml",
179   - "lib/lucky_sneaks/unidecoder_data/xc3.yml",
180   - "lib/lucky_sneaks/unidecoder_data/xc4.yml",
181   - "lib/lucky_sneaks/unidecoder_data/xc5.yml",
182   - "lib/lucky_sneaks/unidecoder_data/xc6.yml",
183   - "lib/lucky_sneaks/unidecoder_data/xc7.yml",
184   - "lib/lucky_sneaks/unidecoder_data/xc8.yml",
185   - "lib/lucky_sneaks/unidecoder_data/xc9.yml",
186   - "lib/lucky_sneaks/unidecoder_data/xca.yml",
187   - "lib/lucky_sneaks/unidecoder_data/xcb.yml",
188   - "lib/lucky_sneaks/unidecoder_data/xcc.yml",
189   - "lib/lucky_sneaks/unidecoder_data/xcd.yml",
190   - "lib/lucky_sneaks/unidecoder_data/xce.yml",
191   - "lib/lucky_sneaks/unidecoder_data/xcf.yml",
192   - "lib/lucky_sneaks/unidecoder_data/xd0.yml",
193   - "lib/lucky_sneaks/unidecoder_data/xd1.yml",
194   - "lib/lucky_sneaks/unidecoder_data/xd2.yml",
195   - "lib/lucky_sneaks/unidecoder_data/xd3.yml",
196   - "lib/lucky_sneaks/unidecoder_data/xd4.yml",
197   - "lib/lucky_sneaks/unidecoder_data/xd5.yml",
198   - "lib/lucky_sneaks/unidecoder_data/xd6.yml",
199   - "lib/lucky_sneaks/unidecoder_data/xd7.yml",
200   - "lib/lucky_sneaks/unidecoder_data/xf9.yml",
201   - "lib/lucky_sneaks/unidecoder_data/xfa.yml",
202   - "lib/lucky_sneaks/unidecoder_data/xfb.yml",
203   - "lib/lucky_sneaks/unidecoder_data/xfc.yml",
204   - "lib/lucky_sneaks/unidecoder_data/xfd.yml",
205   - "lib/lucky_sneaks/unidecoder_data/xfe.yml",
206   - "lib/lucky_sneaks/unidecoder_data/xff.yml",
207 24 "lib/stringex.rb",
  25 + "lib/stringex/acts_as_url.rb",
  26 + "lib/stringex/string_extensions.rb",
  27 + "lib/stringex/unidecoder.rb",
  28 + "lib/stringex/unidecoder_data/x00.yml",
  29 + "lib/stringex/unidecoder_data/x01.yml",
  30 + "lib/stringex/unidecoder_data/x02.yml",
  31 + "lib/stringex/unidecoder_data/x03.yml",
  32 + "lib/stringex/unidecoder_data/x04.yml",
  33 + "lib/stringex/unidecoder_data/x05.yml",
  34 + "lib/stringex/unidecoder_data/x06.yml",
  35 + "lib/stringex/unidecoder_data/x07.yml",
  36 + "lib/stringex/unidecoder_data/x09.yml",
  37 + "lib/stringex/unidecoder_data/x0a.yml",
  38 + "lib/stringex/unidecoder_data/x0b.yml",
  39 + "lib/stringex/unidecoder_data/x0c.yml",
  40 + "lib/stringex/unidecoder_data/x0d.yml",
  41 + "lib/stringex/unidecoder_data/x0e.yml",
  42 + "lib/stringex/unidecoder_data/x0f.yml",
  43 + "lib/stringex/unidecoder_data/x10.yml",
  44 + "lib/stringex/unidecoder_data/x11.yml",
  45 + "lib/stringex/unidecoder_data/x12.yml",
  46 + "lib/stringex/unidecoder_data/x13.yml",
  47 + "lib/stringex/unidecoder_data/x14.yml",
  48 + "lib/stringex/unidecoder_data/x15.yml",
  49 + "lib/stringex/unidecoder_data/x16.yml",
  50 + "lib/stringex/unidecoder_data/x17.yml",
  51 + "lib/stringex/unidecoder_data/x18.yml",
  52 + "lib/stringex/unidecoder_data/x1e.yml",
  53 + "lib/stringex/unidecoder_data/x1f.yml",
  54 + "lib/stringex/unidecoder_data/x20.yml",
  55 + "lib/stringex/unidecoder_data/x21.yml",
  56 + "lib/stringex/unidecoder_data/x22.yml",
  57 + "lib/stringex/unidecoder_data/x23.yml",
  58 + "lib/stringex/unidecoder_data/x24.yml",
  59 + "lib/stringex/unidecoder_data/x25.yml",
  60 + "lib/stringex/unidecoder_data/x26.yml",
  61 + "lib/stringex/unidecoder_data/x27.yml",
  62 + "lib/stringex/unidecoder_data/x28.yml",
  63 + "lib/stringex/unidecoder_data/x2e.yml",
  64 + "lib/stringex/unidecoder_data/x2f.yml",
  65 + "lib/stringex/unidecoder_data/x30.yml",
  66 + "lib/stringex/unidecoder_data/x31.yml",
  67 + "lib/stringex/unidecoder_data/x32.yml",
  68 + "lib/stringex/unidecoder_data/x33.yml",
  69 + "lib/stringex/unidecoder_data/x4d.yml",
  70 + "lib/stringex/unidecoder_data/x4e.yml",
  71 + "lib/stringex/unidecoder_data/x4f.yml",
  72 + "lib/stringex/unidecoder_data/x50.yml",
  73 + "lib/stringex/unidecoder_data/x51.yml",
  74 + "lib/stringex/unidecoder_data/x52.yml",
  75 + "lib/stringex/unidecoder_data/x53.yml",
  76 + "lib/stringex/unidecoder_data/x54.yml",
  77 + "lib/stringex/unidecoder_data/x55.yml",
  78 + "lib/stringex/unidecoder_data/x56.yml",
  79 + "lib/stringex/unidecoder_data/x57.yml",
  80 + "lib/stringex/unidecoder_data/x58.yml",
  81 + "lib/stringex/unidecoder_data/x59.yml",
  82 + "lib/stringex/unidecoder_data/x5a.yml",
  83 + "lib/stringex/unidecoder_data/x5b.yml",
  84 + "lib/stringex/unidecoder_data/x5c.yml",
  85 + "lib/stringex/unidecoder_data/x5d.yml",
  86 + "lib/stringex/unidecoder_data/x5e.yml",
  87 + "lib/stringex/unidecoder_data/x5f.yml",
  88 + "lib/stringex/unidecoder_data/x60.yml",
  89 + "lib/stringex/unidecoder_data/x61.yml",
  90 + "lib/stringex/unidecoder_data/x62.yml",
  91 + "lib/stringex/unidecoder_data/x63.yml",
  92 + "lib/stringex/unidecoder_data/x64.yml",
  93 + "lib/stringex/unidecoder_data/x65.yml",
  94 + "lib/stringex/unidecoder_data/x66.yml",
  95 + "lib/stringex/unidecoder_data/x67.yml",
  96 + "lib/stringex/unidecoder_data/x68.yml",
  97 + "lib/stringex/unidecoder_data/x69.yml",
  98 + "lib/stringex/unidecoder_data/x6a.yml",
  99 + "lib/stringex/unidecoder_data/x6b.yml",
  100 + "lib/stringex/unidecoder_data/x6c.yml",
  101 + "lib/stringex/unidecoder_data/x6d.yml",
  102 + "lib/stringex/unidecoder_data/x6e.yml",
  103 + "lib/stringex/unidecoder_data/x6f.yml",
  104 + "lib/stringex/unidecoder_data/x70.yml",
  105 + "lib/stringex/unidecoder_data/x71.yml",
  106 + "lib/stringex/unidecoder_data/x72.yml",
  107 + "lib/stringex/unidecoder_data/x73.yml",
  108 + "lib/stringex/unidecoder_data/x74.yml",
  109 + "lib/stringex/unidecoder_data/x75.yml",
  110 + "lib/stringex/unidecoder_data/x76.yml",
  111 + "lib/stringex/unidecoder_data/x77.yml",
  112 + "lib/stringex/unidecoder_data/x78.yml",
  113 + "lib/stringex/unidecoder_data/x79.yml",
  114 + "lib/stringex/unidecoder_data/x7a.yml",
  115 + "lib/stringex/unidecoder_data/x7b.yml",
  116 + "lib/stringex/unidecoder_data/x7c.yml",
  117 + "lib/stringex/unidecoder_data/x7d.yml",
  118 + "lib/stringex/unidecoder_data/x7e.yml",
  119 + "lib/stringex/unidecoder_data/x7f.yml",
  120 + "lib/stringex/unidecoder_data/x80.yml",
  121 + "lib/stringex/unidecoder_data/x81.yml",
  122 + "lib/stringex/unidecoder_data/x82.yml",
  123 + "lib/stringex/unidecoder_data/x83.yml",
  124 + "lib/stringex/unidecoder_data/x84.yml",
  125 + "lib/stringex/unidecoder_data/x85.yml",
  126 + "lib/stringex/unidecoder_data/x86.yml",
  127 + "lib/stringex/unidecoder_data/x87.yml",
  128 + "lib/stringex/unidecoder_data/x88.yml",
  129 + "lib/stringex/unidecoder_data/x89.yml",
  130 + "lib/stringex/unidecoder_data/x8a.yml",
  131 + "lib/stringex/unidecoder_data/x8b.yml",
  132 + "lib/stringex/unidecoder_data/x8c.yml",
  133 + "lib/stringex/unidecoder_data/x8d.yml",
  134 + "lib/stringex/unidecoder_data/x8e.yml",
  135 + "lib/stringex/unidecoder_data/x8f.yml",
  136 + "lib/stringex/unidecoder_data/x90.yml",
  137 + "lib/stringex/unidecoder_data/x91.yml",
  138 + "lib/stringex/unidecoder_data/x92.yml",
  139 + "lib/stringex/unidecoder_data/x93.yml",
  140 + "lib/stringex/unidecoder_data/x94.yml",
  141 + "lib/stringex/unidecoder_data/x95.yml",
  142 + "lib/stringex/unidecoder_data/x96.yml",
  143 + "lib/stringex/unidecoder_data/x97.yml",
  144 + "lib/stringex/unidecoder_data/x98.yml",
  145 + "lib/stringex/unidecoder_data/x99.yml",
  146 + "lib/stringex/unidecoder_data/x9a.yml",
  147 + "lib/stringex/unidecoder_data/x9b.yml",
  148 + "lib/stringex/unidecoder_data/x9c.yml",
  149 + "lib/stringex/unidecoder_data/x9d.yml",
  150 + "lib/stringex/unidecoder_data/x9e.yml",
  151 + "lib/stringex/unidecoder_data/x9f.yml",
  152 + "lib/stringex/unidecoder_data/xa0.yml",
  153 + "lib/stringex/unidecoder_data/xa1.yml",
  154 + "lib/stringex/unidecoder_data/xa2.yml",
  155 + "lib/stringex/unidecoder_data/xa3.yml",
  156 + "lib/stringex/unidecoder_data/xa4.yml",
  157 + "lib/stringex/unidecoder_data/xac.yml",
  158 + "lib/stringex/unidecoder_data/xad.yml",
  159 + "lib/stringex/unidecoder_data/xae.yml",
  160 + "lib/stringex/unidecoder_data/xaf.yml",
  161 + "lib/stringex/unidecoder_data/xb0.yml",
  162 + "lib/stringex/unidecoder_data/xb1.yml",
  163 + "lib/stringex/unidecoder_data/xb2.yml",
  164 + "lib/stringex/unidecoder_data/xb3.yml",
  165 + "lib/stringex/unidecoder_data/xb4.yml",
  166 + "lib/stringex/unidecoder_data/xb5.yml",
  167 + "lib/stringex/unidecoder_data/xb6.yml",
  168 + "lib/stringex/unidecoder_data/xb7.yml",
  169 + "lib/stringex/unidecoder_data/xb8.yml",
  170 + "lib/stringex/unidecoder_data/xb9.yml",
  171 + "lib/stringex/unidecoder_data/xba.yml",
  172 + "lib/stringex/unidecoder_data/xbb.yml",
  173 + "lib/stringex/unidecoder_data/xbc.yml",
  174 + "lib/stringex/unidecoder_data/xbd.yml",
  175 + "lib/stringex/unidecoder_data/xbe.yml",
  176 + "lib/stringex/unidecoder_data/xbf.yml",
  177 + "lib/stringex/unidecoder_data/xc0.yml",
  178 + "lib/stringex/unidecoder_data/xc1.yml",
  179 + "lib/stringex/unidecoder_data/xc2.yml",
  180 + "lib/stringex/unidecoder_data/xc3.yml",
  181 + "lib/stringex/unidecoder_data/xc4.yml",
  182 + "lib/stringex/unidecoder_data/xc5.yml",
  183 + "lib/stringex/unidecoder_data/xc6.yml",
  184 + "lib/stringex/unidecoder_data/xc7.yml",
  185 + "lib/stringex/unidecoder_data/xc8.yml",
  186 + "lib/stringex/unidecoder_data/xc9.yml",
  187 + "lib/stringex/unidecoder_data/xca.yml",
  188 + "lib/stringex/unidecoder_data/xcb.yml",
  189 + "lib/stringex/unidecoder_data/xcc.yml",
  190 + "lib/stringex/unidecoder_data/xcd.yml",
  191 + "lib/stringex/unidecoder_data/xce.yml",
  192 + "lib/stringex/unidecoder_data/xcf.yml",
  193 + "lib/stringex/unidecoder_data/xd0.yml",
  194 + "lib/stringex/unidecoder_data/xd1.yml",
  195 + "lib/stringex/unidecoder_data/xd2.yml",
  196 + "lib/stringex/unidecoder_data/xd3.yml",
  197 + "lib/stringex/unidecoder_data/xd4.yml",
  198 + "lib/stringex/unidecoder_data/xd5.yml",
  199 + "lib/stringex/unidecoder_data/xd6.yml",
  200 + "lib/stringex/unidecoder_data/xd7.yml",
  201 + "lib/stringex/unidecoder_data/xf9.yml",
  202 + "lib/stringex/unidecoder_data/xfa.yml",
  203 + "lib/stringex/unidecoder_data/xfb.yml",
  204 + "lib/stringex/unidecoder_data/xfc.yml",
  205 + "lib/stringex/unidecoder_data/xfd.yml",
  206 + "lib/stringex/unidecoder_data/xfe.yml",
  207 + "lib/stringex/unidecoder_data/xff.yml",
208 208 "stringex.gemspec"
209 209 ]
210 210 s.homepage = %q{http://github.com/rsl/stringex}

Showing you all comments on commits in this comparison.

Russell Norris

looks good. sorry about delay on this. never got notifications from github. email was old.

Something went wrong with that request. Please try again.