Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: unpatioli/stringex
base: 9461efa3de
...
head fork: unpatioli/stringex
compare: cdac489cb7
  • 13 commits
  • 6 files changed
  • 1 commit comment
  • 6 contributors
View
5 README.rdoc
@@ -18,6 +18,7 @@ which will populate the <tt>url</tt> attribute on the object with the converted
blank. Default is false (meaning url generation will happen always)
<tt>:sync_url</tt>:: If set to true, the url field will be updated when changes are made to the
attribute it is based on. Default is false.
+<tt>:allow_slash</tt>:: If set to true, the url field will not convert slashes. Default is false.
In order to use the generated url attribute, you will probably want to override <tt>to_param</tt> like so, in your Model:
@@ -28,6 +29,8 @@ In order to use the generated url attribute, you will probably want to override
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>.
+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>.
+
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:
# A simple prelude
@@ -81,7 +84,7 @@ In both the YAML and pure Hash implementation, the end result should be a Hash w
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.
-== Note to users of Devise
+== Note to users of CanCan
You'll need to add a <tt>:find_by => :url</tt> to your <tt>load_and_authorize_resource</tt>. Here's an example:
View
368 Rakefile
@@ -21,189 +21,189 @@ begin
README.rdoc
stringex.gemspec
lib/stringex.rb
- lib/lucky_sneaks/acts_as_url.rb
- lib/lucky_sneaks/string_extensions.rb
- lib/lucky_sneaks/unidecoder.rb
- lib/lucky_sneaks/unidecoder_data/x00.yml
- lib/lucky_sneaks/unidecoder_data/x01.yml
- lib/lucky_sneaks/unidecoder_data/x02.yml
- lib/lucky_sneaks/unidecoder_data/x03.yml
- lib/lucky_sneaks/unidecoder_data/x04.yml
- lib/lucky_sneaks/unidecoder_data/x05.yml
- lib/lucky_sneaks/unidecoder_data/x06.yml
- lib/lucky_sneaks/unidecoder_data/x07.yml
- lib/lucky_sneaks/unidecoder_data/x09.yml
- lib/lucky_sneaks/unidecoder_data/x0a.yml
- lib/lucky_sneaks/unidecoder_data/x0b.yml
- lib/lucky_sneaks/unidecoder_data/x0c.yml
- lib/lucky_sneaks/unidecoder_data/x0d.yml
- lib/lucky_sneaks/unidecoder_data/x0e.yml
- lib/lucky_sneaks/unidecoder_data/x0f.yml
- lib/lucky_sneaks/unidecoder_data/x10.yml
- lib/lucky_sneaks/unidecoder_data/x11.yml
- lib/lucky_sneaks/unidecoder_data/x12.yml
- lib/lucky_sneaks/unidecoder_data/x13.yml
- lib/lucky_sneaks/unidecoder_data/x14.yml
- lib/lucky_sneaks/unidecoder_data/x15.yml
- lib/lucky_sneaks/unidecoder_data/x16.yml
- lib/lucky_sneaks/unidecoder_data/x17.yml
- lib/lucky_sneaks/unidecoder_data/x18.yml
- lib/lucky_sneaks/unidecoder_data/x1e.yml
- lib/lucky_sneaks/unidecoder_data/x1f.yml
- lib/lucky_sneaks/unidecoder_data/x20.yml
- lib/lucky_sneaks/unidecoder_data/x21.yml
- lib/lucky_sneaks/unidecoder_data/x22.yml
- lib/lucky_sneaks/unidecoder_data/x23.yml
- lib/lucky_sneaks/unidecoder_data/x24.yml
- lib/lucky_sneaks/unidecoder_data/x25.yml
- lib/lucky_sneaks/unidecoder_data/x26.yml
- lib/lucky_sneaks/unidecoder_data/x27.yml
- lib/lucky_sneaks/unidecoder_data/x28.yml
- lib/lucky_sneaks/unidecoder_data/x2e.yml
- lib/lucky_sneaks/unidecoder_data/x2f.yml
- lib/lucky_sneaks/unidecoder_data/x30.yml
- lib/lucky_sneaks/unidecoder_data/x31.yml
- lib/lucky_sneaks/unidecoder_data/x32.yml
- lib/lucky_sneaks/unidecoder_data/x33.yml
- lib/lucky_sneaks/unidecoder_data/x4d.yml
- lib/lucky_sneaks/unidecoder_data/x4e.yml
- lib/lucky_sneaks/unidecoder_data/x4f.yml
- lib/lucky_sneaks/unidecoder_data/x50.yml
- lib/lucky_sneaks/unidecoder_data/x51.yml
- lib/lucky_sneaks/unidecoder_data/x52.yml
- lib/lucky_sneaks/unidecoder_data/x53.yml
- lib/lucky_sneaks/unidecoder_data/x54.yml
- lib/lucky_sneaks/unidecoder_data/x55.yml
- lib/lucky_sneaks/unidecoder_data/x56.yml
- lib/lucky_sneaks/unidecoder_data/x57.yml
- lib/lucky_sneaks/unidecoder_data/x58.yml
- lib/lucky_sneaks/unidecoder_data/x59.yml
- lib/lucky_sneaks/unidecoder_data/x5a.yml
- lib/lucky_sneaks/unidecoder_data/x5b.yml
- lib/lucky_sneaks/unidecoder_data/x5c.yml
- lib/lucky_sneaks/unidecoder_data/x5d.yml
- lib/lucky_sneaks/unidecoder_data/x5e.yml
- lib/lucky_sneaks/unidecoder_data/x5f.yml
- lib/lucky_sneaks/unidecoder_data/x60.yml
- lib/lucky_sneaks/unidecoder_data/x61.yml
- lib/lucky_sneaks/unidecoder_data/x62.yml
- lib/lucky_sneaks/unidecoder_data/x63.yml
- lib/lucky_sneaks/unidecoder_data/x64.yml
- lib/lucky_sneaks/unidecoder_data/x65.yml
- lib/lucky_sneaks/unidecoder_data/x66.yml
- lib/lucky_sneaks/unidecoder_data/x67.yml
- lib/lucky_sneaks/unidecoder_data/x68.yml
- lib/lucky_sneaks/unidecoder_data/x69.yml
- lib/lucky_sneaks/unidecoder_data/x6a.yml
- lib/lucky_sneaks/unidecoder_data/x6b.yml
- lib/lucky_sneaks/unidecoder_data/x6c.yml
- lib/lucky_sneaks/unidecoder_data/x6d.yml
- lib/lucky_sneaks/unidecoder_data/x6e.yml
- lib/lucky_sneaks/unidecoder_data/x6f.yml
- lib/lucky_sneaks/unidecoder_data/x70.yml
- lib/lucky_sneaks/unidecoder_data/x71.yml
- lib/lucky_sneaks/unidecoder_data/x72.yml
- lib/lucky_sneaks/unidecoder_data/x73.yml
- lib/lucky_sneaks/unidecoder_data/x74.yml
- lib/lucky_sneaks/unidecoder_data/x75.yml
- lib/lucky_sneaks/unidecoder_data/x76.yml
- lib/lucky_sneaks/unidecoder_data/x77.yml
- lib/lucky_sneaks/unidecoder_data/x78.yml
- lib/lucky_sneaks/unidecoder_data/x79.yml
- lib/lucky_sneaks/unidecoder_data/x7a.yml
- lib/lucky_sneaks/unidecoder_data/x7b.yml
- lib/lucky_sneaks/unidecoder_data/x7c.yml
- lib/lucky_sneaks/unidecoder_data/x7d.yml
- lib/lucky_sneaks/unidecoder_data/x7e.yml
- lib/lucky_sneaks/unidecoder_data/x7f.yml
- lib/lucky_sneaks/unidecoder_data/x80.yml
- lib/lucky_sneaks/unidecoder_data/x81.yml
- lib/lucky_sneaks/unidecoder_data/x82.yml
- lib/lucky_sneaks/unidecoder_data/x83.yml
- lib/lucky_sneaks/unidecoder_data/x84.yml
- lib/lucky_sneaks/unidecoder_data/x85.yml
- lib/lucky_sneaks/unidecoder_data/x86.yml
- lib/lucky_sneaks/unidecoder_data/x87.yml
- lib/lucky_sneaks/unidecoder_data/x88.yml
- lib/lucky_sneaks/unidecoder_data/x89.yml
- lib/lucky_sneaks/unidecoder_data/x8a.yml
- lib/lucky_sneaks/unidecoder_data/x8b.yml
- lib/lucky_sneaks/unidecoder_data/x8c.yml
- lib/lucky_sneaks/unidecoder_data/x8d.yml
- lib/lucky_sneaks/unidecoder_data/x8e.yml
- lib/lucky_sneaks/unidecoder_data/x8f.yml
- lib/lucky_sneaks/unidecoder_data/x90.yml
- lib/lucky_sneaks/unidecoder_data/x91.yml
- lib/lucky_sneaks/unidecoder_data/x92.yml
- lib/lucky_sneaks/unidecoder_data/x93.yml
- lib/lucky_sneaks/unidecoder_data/x94.yml
- lib/lucky_sneaks/unidecoder_data/x95.yml
- lib/lucky_sneaks/unidecoder_data/x96.yml
- lib/lucky_sneaks/unidecoder_data/x97.yml
- lib/lucky_sneaks/unidecoder_data/x98.yml
- lib/lucky_sneaks/unidecoder_data/x99.yml
- lib/lucky_sneaks/unidecoder_data/x9a.yml
- lib/lucky_sneaks/unidecoder_data/x9b.yml
- lib/lucky_sneaks/unidecoder_data/x9c.yml
- lib/lucky_sneaks/unidecoder_data/x9d.yml
- lib/lucky_sneaks/unidecoder_data/x9e.yml
- lib/lucky_sneaks/unidecoder_data/x9f.yml
- lib/lucky_sneaks/unidecoder_data/xa0.yml
- lib/lucky_sneaks/unidecoder_data/xa1.yml
- lib/lucky_sneaks/unidecoder_data/xa2.yml
- lib/lucky_sneaks/unidecoder_data/xa3.yml
- lib/lucky_sneaks/unidecoder_data/xa4.yml
- lib/lucky_sneaks/unidecoder_data/xac.yml
- lib/lucky_sneaks/unidecoder_data/xad.yml
- lib/lucky_sneaks/unidecoder_data/xae.yml
- lib/lucky_sneaks/unidecoder_data/xaf.yml
- lib/lucky_sneaks/unidecoder_data/xb0.yml
- lib/lucky_sneaks/unidecoder_data/xb1.yml
- lib/lucky_sneaks/unidecoder_data/xb2.yml
- lib/lucky_sneaks/unidecoder_data/xb3.yml
- lib/lucky_sneaks/unidecoder_data/xb4.yml
- lib/lucky_sneaks/unidecoder_data/xb5.yml
- lib/lucky_sneaks/unidecoder_data/xb6.yml
- lib/lucky_sneaks/unidecoder_data/xb7.yml
- lib/lucky_sneaks/unidecoder_data/xb8.yml
- lib/lucky_sneaks/unidecoder_data/xb9.yml
- lib/lucky_sneaks/unidecoder_data/xba.yml
- lib/lucky_sneaks/unidecoder_data/xbb.yml
- lib/lucky_sneaks/unidecoder_data/xbc.yml
- lib/lucky_sneaks/unidecoder_data/xbd.yml
- lib/lucky_sneaks/unidecoder_data/xbe.yml
- lib/lucky_sneaks/unidecoder_data/xbf.yml
- lib/lucky_sneaks/unidecoder_data/xc0.yml
- lib/lucky_sneaks/unidecoder_data/xc1.yml
- lib/lucky_sneaks/unidecoder_data/xc2.yml
- lib/lucky_sneaks/unidecoder_data/xc3.yml
- lib/lucky_sneaks/unidecoder_data/xc4.yml
- lib/lucky_sneaks/unidecoder_data/xc5.yml
- lib/lucky_sneaks/unidecoder_data/xc6.yml
- lib/lucky_sneaks/unidecoder_data/xc7.yml
- lib/lucky_sneaks/unidecoder_data/xc8.yml
- lib/lucky_sneaks/unidecoder_data/xc9.yml
- lib/lucky_sneaks/unidecoder_data/xca.yml
- lib/lucky_sneaks/unidecoder_data/xcb.yml
- lib/lucky_sneaks/unidecoder_data/xcc.yml
- lib/lucky_sneaks/unidecoder_data/xcd.yml
- lib/lucky_sneaks/unidecoder_data/xce.yml
- lib/lucky_sneaks/unidecoder_data/xcf.yml
- lib/lucky_sneaks/unidecoder_data/xd0.yml
- lib/lucky_sneaks/unidecoder_data/xd1.yml
- lib/lucky_sneaks/unidecoder_data/xd2.yml
- lib/lucky_sneaks/unidecoder_data/xd3.yml
- lib/lucky_sneaks/unidecoder_data/xd4.yml
- lib/lucky_sneaks/unidecoder_data/xd5.yml
- lib/lucky_sneaks/unidecoder_data/xd6.yml
- lib/lucky_sneaks/unidecoder_data/xd7.yml
- lib/lucky_sneaks/unidecoder_data/xf9.yml
- lib/lucky_sneaks/unidecoder_data/xfa.yml
- lib/lucky_sneaks/unidecoder_data/xfb.yml
- lib/lucky_sneaks/unidecoder_data/xfc.yml
- lib/lucky_sneaks/unidecoder_data/xfd.yml
- lib/lucky_sneaks/unidecoder_data/xfe.yml
- lib/lucky_sneaks/unidecoder_data/xff.yml
+ lib/stringex/acts_as_url.rb
+ lib/stringex/string_extensions.rb
+ lib/stringex/unidecoder.rb
+ lib/stringex/unidecoder_data/x00.yml
+ lib/stringex/unidecoder_data/x01.yml
+ lib/stringex/unidecoder_data/x02.yml
+ lib/stringex/unidecoder_data/x03.yml
+ lib/stringex/unidecoder_data/x04.yml
+ lib/stringex/unidecoder_data/x05.yml
+ lib/stringex/unidecoder_data/x06.yml
+ lib/stringex/unidecoder_data/x07.yml
+ lib/stringex/unidecoder_data/x09.yml
+ lib/stringex/unidecoder_data/x0a.yml
+ lib/stringex/unidecoder_data/x0b.yml
+ lib/stringex/unidecoder_data/x0c.yml
+ lib/stringex/unidecoder_data/x0d.yml
+ lib/stringex/unidecoder_data/x0e.yml
+ lib/stringex/unidecoder_data/x0f.yml
+ lib/stringex/unidecoder_data/x10.yml
+ lib/stringex/unidecoder_data/x11.yml
+ lib/stringex/unidecoder_data/x12.yml
+ lib/stringex/unidecoder_data/x13.yml
+ lib/stringex/unidecoder_data/x14.yml
+ lib/stringex/unidecoder_data/x15.yml
+ lib/stringex/unidecoder_data/x16.yml
+ lib/stringex/unidecoder_data/x17.yml
+ lib/stringex/unidecoder_data/x18.yml
+ lib/stringex/unidecoder_data/x1e.yml
+ lib/stringex/unidecoder_data/x1f.yml
+ lib/stringex/unidecoder_data/x20.yml
+ lib/stringex/unidecoder_data/x21.yml
+ lib/stringex/unidecoder_data/x22.yml
+ lib/stringex/unidecoder_data/x23.yml
+ lib/stringex/unidecoder_data/x24.yml
+ lib/stringex/unidecoder_data/x25.yml
+ lib/stringex/unidecoder_data/x26.yml
+ lib/stringex/unidecoder_data/x27.yml
+ lib/stringex/unidecoder_data/x28.yml
+ lib/stringex/unidecoder_data/x2e.yml
+ lib/stringex/unidecoder_data/x2f.yml
+ lib/stringex/unidecoder_data/x30.yml
+ lib/stringex/unidecoder_data/x31.yml
+ lib/stringex/unidecoder_data/x32.yml
+ lib/stringex/unidecoder_data/x33.yml
+ lib/stringex/unidecoder_data/x4d.yml
+ lib/stringex/unidecoder_data/x4e.yml
+ lib/stringex/unidecoder_data/x4f.yml
+ lib/stringex/unidecoder_data/x50.yml
+ lib/stringex/unidecoder_data/x51.yml
+ lib/stringex/unidecoder_data/x52.yml
+ lib/stringex/unidecoder_data/x53.yml
+ lib/stringex/unidecoder_data/x54.yml
+ lib/stringex/unidecoder_data/x55.yml
+ lib/stringex/unidecoder_data/x56.yml
+ lib/stringex/unidecoder_data/x57.yml
+ lib/stringex/unidecoder_data/x58.yml
+ lib/stringex/unidecoder_data/x59.yml
+ lib/stringex/unidecoder_data/x5a.yml
+ lib/stringex/unidecoder_data/x5b.yml
+ lib/stringex/unidecoder_data/x5c.yml
+ lib/stringex/unidecoder_data/x5d.yml
+ lib/stringex/unidecoder_data/x5e.yml
+ lib/stringex/unidecoder_data/x5f.yml
+ lib/stringex/unidecoder_data/x60.yml
+ lib/stringex/unidecoder_data/x61.yml
+ lib/stringex/unidecoder_data/x62.yml
+ lib/stringex/unidecoder_data/x63.yml
+ lib/stringex/unidecoder_data/x64.yml
+ lib/stringex/unidecoder_data/x65.yml
+ lib/stringex/unidecoder_data/x66.yml
+ lib/stringex/unidecoder_data/x67.yml
+ lib/stringex/unidecoder_data/x68.yml
+ lib/stringex/unidecoder_data/x69.yml
+ lib/stringex/unidecoder_data/x6a.yml
+ lib/stringex/unidecoder_data/x6b.yml
+ lib/stringex/unidecoder_data/x6c.yml
+ lib/stringex/unidecoder_data/x6d.yml
+ lib/stringex/unidecoder_data/x6e.yml
+ lib/stringex/unidecoder_data/x6f.yml
+ lib/stringex/unidecoder_data/x70.yml
+ lib/stringex/unidecoder_data/x71.yml
+ lib/stringex/unidecoder_data/x72.yml
+ lib/stringex/unidecoder_data/x73.yml
+ lib/stringex/unidecoder_data/x74.yml
+ lib/stringex/unidecoder_data/x75.yml
+ lib/stringex/unidecoder_data/x76.yml
+ lib/stringex/unidecoder_data/x77.yml
+ lib/stringex/unidecoder_data/x78.yml
+ lib/stringex/unidecoder_data/x79.yml
+ lib/stringex/unidecoder_data/x7a.yml
+ lib/stringex/unidecoder_data/x7b.yml
+ lib/stringex/unidecoder_data/x7c.yml
+ lib/stringex/unidecoder_data/x7d.yml
+ lib/stringex/unidecoder_data/x7e.yml
+ lib/stringex/unidecoder_data/x7f.yml
+ lib/stringex/unidecoder_data/x80.yml
+ lib/stringex/unidecoder_data/x81.yml
+ lib/stringex/unidecoder_data/x82.yml
+ lib/stringex/unidecoder_data/x83.yml
+ lib/stringex/unidecoder_data/x84.yml
+ lib/stringex/unidecoder_data/x85.yml
+ lib/stringex/unidecoder_data/x86.yml
+ lib/stringex/unidecoder_data/x87.yml
+ lib/stringex/unidecoder_data/x88.yml
+ lib/stringex/unidecoder_data/x89.yml
+ lib/stringex/unidecoder_data/x8a.yml
+ lib/stringex/unidecoder_data/x8b.yml
+ lib/stringex/unidecoder_data/x8c.yml
+ lib/stringex/unidecoder_data/x8d.yml
+ lib/stringex/unidecoder_data/x8e.yml
+ lib/stringex/unidecoder_data/x8f.yml
+ lib/stringex/unidecoder_data/x90.yml
+ lib/stringex/unidecoder_data/x91.yml
+ lib/stringex/unidecoder_data/x92.yml
+ lib/stringex/unidecoder_data/x93.yml
+ lib/stringex/unidecoder_data/x94.yml
+ lib/stringex/unidecoder_data/x95.yml
+ lib/stringex/unidecoder_data/x96.yml
+ lib/stringex/unidecoder_data/x97.yml
+ lib/stringex/unidecoder_data/x98.yml
+ lib/stringex/unidecoder_data/x99.yml
+ lib/stringex/unidecoder_data/x9a.yml
+ lib/stringex/unidecoder_data/x9b.yml
+ lib/stringex/unidecoder_data/x9c.yml
+ lib/stringex/unidecoder_data/x9d.yml
+ lib/stringex/unidecoder_data/x9e.yml
+ lib/stringex/unidecoder_data/x9f.yml
+ lib/stringex/unidecoder_data/xa0.yml
+ lib/stringex/unidecoder_data/xa1.yml
+ lib/stringex/unidecoder_data/xa2.yml
+ lib/stringex/unidecoder_data/xa3.yml
+ lib/stringex/unidecoder_data/xa4.yml
+ lib/stringex/unidecoder_data/xac.yml
+ lib/stringex/unidecoder_data/xad.yml
+ lib/stringex/unidecoder_data/xae.yml
+ lib/stringex/unidecoder_data/xaf.yml
+ lib/stringex/unidecoder_data/xb0.yml
+ lib/stringex/unidecoder_data/xb1.yml
+ lib/stringex/unidecoder_data/xb2.yml
+ lib/stringex/unidecoder_data/xb3.yml
+ lib/stringex/unidecoder_data/xb4.yml
+ lib/stringex/unidecoder_data/xb5.yml
+ lib/stringex/unidecoder_data/xb6.yml
+ lib/stringex/unidecoder_data/xb7.yml
+ lib/stringex/unidecoder_data/xb8.yml
+ lib/stringex/unidecoder_data/xb9.yml
+ lib/stringex/unidecoder_data/xba.yml
+ lib/stringex/unidecoder_data/xbb.yml
+ lib/stringex/unidecoder_data/xbc.yml
+ lib/stringex/unidecoder_data/xbd.yml
+ lib/stringex/unidecoder_data/xbe.yml
+ lib/stringex/unidecoder_data/xbf.yml
+ lib/stringex/unidecoder_data/xc0.yml
+ lib/stringex/unidecoder_data/xc1.yml
+ lib/stringex/unidecoder_data/xc2.yml
+ lib/stringex/unidecoder_data/xc3.yml
+ lib/stringex/unidecoder_data/xc4.yml
+ lib/stringex/unidecoder_data/xc5.yml
+ lib/stringex/unidecoder_data/xc6.yml
+ lib/stringex/unidecoder_data/xc7.yml
+ lib/stringex/unidecoder_data/xc8.yml
+ lib/stringex/unidecoder_data/xc9.yml
+ lib/stringex/unidecoder_data/xca.yml
+ lib/stringex/unidecoder_data/xcb.yml
+ lib/stringex/unidecoder_data/xcc.yml
+ lib/stringex/unidecoder_data/xcd.yml
+ lib/stringex/unidecoder_data/xce.yml
+ lib/stringex/unidecoder_data/xcf.yml
+ lib/stringex/unidecoder_data/xd0.yml
+ lib/stringex/unidecoder_data/xd1.yml
+ lib/stringex/unidecoder_data/xd2.yml
+ lib/stringex/unidecoder_data/xd3.yml
+ lib/stringex/unidecoder_data/xd4.yml
+ lib/stringex/unidecoder_data/xd5.yml
+ lib/stringex/unidecoder_data/xd6.yml
+ lib/stringex/unidecoder_data/xd7.yml
+ lib/stringex/unidecoder_data/xf9.yml
+ lib/stringex/unidecoder_data/xfa.yml
+ lib/stringex/unidecoder_data/xfb.yml
+ lib/stringex/unidecoder_data/xfc.yml
+ lib/stringex/unidecoder_data/xfd.yml
+ lib/stringex/unidecoder_data/xfe.yml
+ lib/stringex/unidecoder_data/xff.yml
}
gem.test_files = %w{
test/acts_as_url_test.rb
@@ -212,7 +212,7 @@ begin
}
gem.rdoc_options = %w{--main README.rdoc --charset utf-8 --line-numbers}
gem.extra_rdoc_files = %w{MIT-LICENSE README.rdoc}
- gem.version = "1.3.0"
+ gem.version = "1.3.2"
end
Jeweler::GemcutterTasks.new
View
4 lib/stringex/acts_as_url.rb
@@ -32,6 +32,7 @@ def acts_as_url(attribute, options = {})
cattr_accessor :url_attribute # The attribute on the DB
cattr_accessor :only_when_blank
cattr_accessor :duplicate_count_separator
+ cattr_accessor :allow_slash
if options[:sync_url]
before_validation(:ensure_unique_url)
@@ -48,6 +49,7 @@ def acts_as_url(attribute, options = {})
self.url_attribute = options[:url_attribute] || "url"
self.only_when_blank = options[:only_when_blank] || false
self.duplicate_count_separator = options[:duplicate_count_separator] || "-"
+ self.allow_slash = options[:allow_slash] || false
class_eval <<-"END"
def #{url_attribute}
@@ -81,7 +83,7 @@ def ensure_unique_url
url_attribute = self.class.url_attribute
separator = self.class.duplicate_count_separator
base_url = self.send(url_attribute)
- base_url = self.send(self.class.attribute_to_urlify).to_s.to_url if base_url.blank? || !self.only_when_blank
+ 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
conditions = ["#{url_attribute} LIKE ?", base_url+'%']
unless new_record?
conditions.first << " and id != ?"
View
18 lib/stringex/string_extensions.rb
@@ -35,14 +35,14 @@ def to_html(lite_mode = false)
# Create a URI-friendly representation of the string. This is used internally by
# acts_as_url[link:classes/Stringex/ActsAsUrl/ClassMethods.html#M000012]
# but can be called manually in order to generate an URI-friendly version of any string.
- def to_url
- remove_formatting.downcase.replace_whitespace("-").collapse("-")
+ def to_url(options = {})
+ remove_formatting(options).downcase.replace_whitespace("-").collapse("-")
end
# Performs multiple text manipulations. Essentially a shortcut for typing them all. View source
# below to see which methods are run.
- def remove_formatting
- strip_html_tags.convert_smart_punctuation.convert_accented_entities.convert_misc_entities.convert_misc_characters.to_ascii.collapse
+ def remove_formatting(options = {})
+ strip_html_tags.convert_smart_punctuation.convert_accented_entities.convert_misc_entities.convert_misc_characters(options).to_ascii.collapse
end
# Removes HTML tags from text. This code is simplified from Tobias Luettke's regular expression
@@ -132,7 +132,7 @@ def convert_smart_punctuation
# Note: Because this method will convert any & symbols to the string "and",
# you should run any methods which convert HTML entities (convert_html_entities and convert_misc_entities)
# before running this method.
- def convert_misc_characters
+ def convert_misc_characters(options = {})
dummy = dup.gsub(/\.{3,}/, " dot dot dot ") # Catch ellipses before single dot rule!
# Special rules for money
{
@@ -143,6 +143,7 @@ def convert_misc_characters
dummy.gsub!(found, replaced)
end
# Back to normal rules
+ misc_characters =
{
/\s*&\s*/ => "and",
/\s*#/ => "number",
@@ -153,14 +154,15 @@ def convert_misc_characters
/(\s|^)¥(\d*)(\s|$)/u => '\2 yen',
/\s*\*\s*/ => "star",
/\s*%\s*/ => "percent",
- /\s*(\\|\/)\s*/ => "slash",
/(\s*=\s*)/ => " equals ",
/\s*\+\s*/ => "plus"
- }.each do |found, replaced|
+ }
+ misc_characters[/\s*(\\|\/)\s*/] = 'slash' unless options[:allow_slash]
+ misc_characters.each do |found, replaced|
replaced = " #{replaced} " unless replaced =~ /\\1/
dummy.gsub!(found, replaced)
end
- dummy = dummy.gsub(/(^|\w)'(\w|$)/, '\1\2').gsub(/[\.,:;()\[\]\/\?!\^'"_]/, " ")
+ dummy = dummy.gsub(/(^|\w)'(\w|$)/, '\1\2').gsub(/[\.,:;()\[\]\?!\^'"_]/, " ")
end
# Replace runs of whitespace in string. Defaults to a single space but any replacement
View
2  lib/stringex/unidecoder.rb
@@ -115,7 +115,7 @@ def grouped_point(unpacked_character)
# Checks LOCAL_CODEPOINTS's Hash is in the format we expect before assigning it and raises
# instructive exception if not
def verify_local_codepoints(hash)
- pass_check = hash.all?{|key, value|
+ pass_check = hash.is_a?(Hash) && hash.all?{|key, value|
# Fuck a duck, eh?
[Symbol, String].include?(key.class) && value.is_a?(Hash) &&
value.keys.all?{|k| k.is_a?(String)} && value.values.all?{|v| v.is_a?(String)}
View
370 stringex.gemspec
@@ -5,11 +5,11 @@
Gem::Specification.new do |s|
s.name = %q{stringex}
- s.version = "1.3.0"
+ s.version = "1.3.2"
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Russell Norris"]
- s.date = %q{2011-08-08}
+ s.date = %q{2012-02-16}
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].}
s.email = %q{rsl@luckysneaks.com}
s.extra_rdoc_files = [
@@ -21,190 +21,190 @@ Gem::Specification.new do |s|
"README.rdoc",
"Rakefile",
"init.rb",
- "lib/lucky_sneaks/acts_as_url.rb",
- "lib/lucky_sneaks/string_extensions.rb",
- "lib/lucky_sneaks/unidecoder.rb",
- "lib/lucky_sneaks/unidecoder_data/x00.yml",
- "lib/lucky_sneaks/unidecoder_data/x01.yml",
- "lib/lucky_sneaks/unidecoder_data/x02.yml",
- "lib/lucky_sneaks/unidecoder_data/x03.yml",
- "lib/lucky_sneaks/unidecoder_data/x04.yml",
- "lib/lucky_sneaks/unidecoder_data/x05.yml",
- "lib/lucky_sneaks/unidecoder_data/x06.yml",
- "lib/lucky_sneaks/unidecoder_data/x07.yml",
- "lib/lucky_sneaks/unidecoder_data/x09.yml",
- "lib/lucky_sneaks/unidecoder_data/x0a.yml",
- "lib/lucky_sneaks/unidecoder_data/x0b.yml",
- "lib/lucky_sneaks/unidecoder_data/x0c.yml",
- "lib/lucky_sneaks/unidecoder_data/x0d.yml",
- "lib/lucky_sneaks/unidecoder_data/x0e.yml",
- "lib/lucky_sneaks/unidecoder_data/x0f.yml",
- "lib/lucky_sneaks/unidecoder_data/x10.yml",
- "lib/lucky_sneaks/unidecoder_data/x11.yml",
- "lib/lucky_sneaks/unidecoder_data/x12.yml",
- "lib/lucky_sneaks/unidecoder_data/x13.yml",
- "lib/lucky_sneaks/unidecoder_data/x14.yml",
- "lib/lucky_sneaks/unidecoder_data/x15.yml",
- "lib/lucky_sneaks/unidecoder_data/x16.yml",
- "lib/lucky_sneaks/unidecoder_data/x17.yml",
- "lib/lucky_sneaks/unidecoder_data/x18.yml",
- "lib/lucky_sneaks/unidecoder_data/x1e.yml",
- "lib/lucky_sneaks/unidecoder_data/x1f.yml",
- "lib/lucky_sneaks/unidecoder_data/x20.yml",
- "lib/lucky_sneaks/unidecoder_data/x21.yml",
- "lib/lucky_sneaks/unidecoder_data/x22.yml",
- "lib/lucky_sneaks/unidecoder_data/x23.yml",
- "lib/lucky_sneaks/unidecoder_data/x24.yml",
- "lib/lucky_sneaks/unidecoder_data/x25.yml",
- "lib/lucky_sneaks/unidecoder_data/x26.yml",
- "lib/lucky_sneaks/unidecoder_data/x27.yml",
- "lib/lucky_sneaks/unidecoder_data/x28.yml",
- "lib/lucky_sneaks/unidecoder_data/x2e.yml",
- "lib/lucky_sneaks/unidecoder_data/x2f.yml",
- "lib/lucky_sneaks/unidecoder_data/x30.yml",
- "lib/lucky_sneaks/unidecoder_data/x31.yml",
- "lib/lucky_sneaks/unidecoder_data/x32.yml",
- "lib/lucky_sneaks/unidecoder_data/x33.yml",
- "lib/lucky_sneaks/unidecoder_data/x4d.yml",
- "lib/lucky_sneaks/unidecoder_data/x4e.yml",
- "lib/lucky_sneaks/unidecoder_data/x4f.yml",
- "lib/lucky_sneaks/unidecoder_data/x50.yml",
- "lib/lucky_sneaks/unidecoder_data/x51.yml",
- "lib/lucky_sneaks/unidecoder_data/x52.yml",
- "lib/lucky_sneaks/unidecoder_data/x53.yml",
- "lib/lucky_sneaks/unidecoder_data/x54.yml",
- "lib/lucky_sneaks/unidecoder_data/x55.yml",
- "lib/lucky_sneaks/unidecoder_data/x56.yml",
- "lib/lucky_sneaks/unidecoder_data/x57.yml",
- "lib/lucky_sneaks/unidecoder_data/x58.yml",
- "lib/lucky_sneaks/unidecoder_data/x59.yml",
- "lib/lucky_sneaks/unidecoder_data/x5a.yml",
- "lib/lucky_sneaks/unidecoder_data/x5b.yml",
- "lib/lucky_sneaks/unidecoder_data/x5c.yml",
- "lib/lucky_sneaks/unidecoder_data/x5d.yml",
- "lib/lucky_sneaks/unidecoder_data/x5e.yml",
- "lib/lucky_sneaks/unidecoder_data/x5f.yml",
- "lib/lucky_sneaks/unidecoder_data/x60.yml",
- "lib/lucky_sneaks/unidecoder_data/x61.yml",
- "lib/lucky_sneaks/unidecoder_data/x62.yml",
- "lib/lucky_sneaks/unidecoder_data/x63.yml",
- "lib/lucky_sneaks/unidecoder_data/x64.yml",
- "lib/lucky_sneaks/unidecoder_data/x65.yml",
- "lib/lucky_sneaks/unidecoder_data/x66.yml",
- "lib/lucky_sneaks/unidecoder_data/x67.yml",
- "lib/lucky_sneaks/unidecoder_data/x68.yml",
- "lib/lucky_sneaks/unidecoder_data/x69.yml",
- "lib/lucky_sneaks/unidecoder_data/x6a.yml",
- "lib/lucky_sneaks/unidecoder_data/x6b.yml",
- "lib/lucky_sneaks/unidecoder_data/x6c.yml",
- "lib/lucky_sneaks/unidecoder_data/x6d.yml",
- "lib/lucky_sneaks/unidecoder_data/x6e.yml",
- "lib/lucky_sneaks/unidecoder_data/x6f.yml",
- "lib/lucky_sneaks/unidecoder_data/x70.yml",
- "lib/lucky_sneaks/unidecoder_data/x71.yml",
- "lib/lucky_sneaks/unidecoder_data/x72.yml",
- "lib/lucky_sneaks/unidecoder_data/x73.yml",
- "lib/lucky_sneaks/unidecoder_data/x74.yml",
- "lib/lucky_sneaks/unidecoder_data/x75.yml",
- "lib/lucky_sneaks/unidecoder_data/x76.yml",
- "lib/lucky_sneaks/unidecoder_data/x77.yml",
- "lib/lucky_sneaks/unidecoder_data/x78.yml",
- "lib/lucky_sneaks/unidecoder_data/x79.yml",
- "lib/lucky_sneaks/unidecoder_data/x7a.yml",
- "lib/lucky_sneaks/unidecoder_data/x7b.yml",
- "lib/lucky_sneaks/unidecoder_data/x7c.yml",
- "lib/lucky_sneaks/unidecoder_data/x7d.yml",
- "lib/lucky_sneaks/unidecoder_data/x7e.yml",
- "lib/lucky_sneaks/unidecoder_data/x7f.yml",
- "lib/lucky_sneaks/unidecoder_data/x80.yml",
- "lib/lucky_sneaks/unidecoder_data/x81.yml",
- "lib/lucky_sneaks/unidecoder_data/x82.yml",
- "lib/lucky_sneaks/unidecoder_data/x83.yml",
- "lib/lucky_sneaks/unidecoder_data/x84.yml",
- "lib/lucky_sneaks/unidecoder_data/x85.yml",
- "lib/lucky_sneaks/unidecoder_data/x86.yml",
- "lib/lucky_sneaks/unidecoder_data/x87.yml",
- "lib/lucky_sneaks/unidecoder_data/x88.yml",
- "lib/lucky_sneaks/unidecoder_data/x89.yml",
- "lib/lucky_sneaks/unidecoder_data/x8a.yml",
- "lib/lucky_sneaks/unidecoder_data/x8b.yml",
- "lib/lucky_sneaks/unidecoder_data/x8c.yml",
- "lib/lucky_sneaks/unidecoder_data/x8d.yml",
- "lib/lucky_sneaks/unidecoder_data/x8e.yml",
- "lib/lucky_sneaks/unidecoder_data/x8f.yml",
- "lib/lucky_sneaks/unidecoder_data/x90.yml",
- "lib/lucky_sneaks/unidecoder_data/x91.yml",
- "lib/lucky_sneaks/unidecoder_data/x92.yml",
- "lib/lucky_sneaks/unidecoder_data/x93.yml",
- "lib/lucky_sneaks/unidecoder_data/x94.yml",
- "lib/lucky_sneaks/unidecoder_data/x95.yml",
- "lib/lucky_sneaks/unidecoder_data/x96.yml",
- "lib/lucky_sneaks/unidecoder_data/x97.yml",
- "lib/lucky_sneaks/unidecoder_data/x98.yml",
- "lib/lucky_sneaks/unidecoder_data/x99.yml",
- "lib/lucky_sneaks/unidecoder_data/x9a.yml",
- "lib/lucky_sneaks/unidecoder_data/x9b.yml",
- "lib/lucky_sneaks/unidecoder_data/x9c.yml",
- "lib/lucky_sneaks/unidecoder_data/x9d.yml",
- "lib/lucky_sneaks/unidecoder_data/x9e.yml",
- "lib/lucky_sneaks/unidecoder_data/x9f.yml",
- "lib/lucky_sneaks/unidecoder_data/xa0.yml",
- "lib/lucky_sneaks/unidecoder_data/xa1.yml",
- "lib/lucky_sneaks/unidecoder_data/xa2.yml",
- "lib/lucky_sneaks/unidecoder_data/xa3.yml",
- "lib/lucky_sneaks/unidecoder_data/xa4.yml",
- "lib/lucky_sneaks/unidecoder_data/xac.yml",
- "lib/lucky_sneaks/unidecoder_data/xad.yml",
- "lib/lucky_sneaks/unidecoder_data/xae.yml",
- "lib/lucky_sneaks/unidecoder_data/xaf.yml",
- "lib/lucky_sneaks/unidecoder_data/xb0.yml",
- "lib/lucky_sneaks/unidecoder_data/xb1.yml",
- "lib/lucky_sneaks/unidecoder_data/xb2.yml",
- "lib/lucky_sneaks/unidecoder_data/xb3.yml",
- "lib/lucky_sneaks/unidecoder_data/xb4.yml",
- "lib/lucky_sneaks/unidecoder_data/xb5.yml",
- "lib/lucky_sneaks/unidecoder_data/xb6.yml",
- "lib/lucky_sneaks/unidecoder_data/xb7.yml",
- "lib/lucky_sneaks/unidecoder_data/xb8.yml",
- "lib/lucky_sneaks/unidecoder_data/xb9.yml",
- "lib/lucky_sneaks/unidecoder_data/xba.yml",
- "lib/lucky_sneaks/unidecoder_data/xbb.yml",
- "lib/lucky_sneaks/unidecoder_data/xbc.yml",
- "lib/lucky_sneaks/unidecoder_data/xbd.yml",
- "lib/lucky_sneaks/unidecoder_data/xbe.yml",
- "lib/lucky_sneaks/unidecoder_data/xbf.yml",
- "lib/lucky_sneaks/unidecoder_data/xc0.yml",
- "lib/lucky_sneaks/unidecoder_data/xc1.yml",
- "lib/lucky_sneaks/unidecoder_data/xc2.yml",
- "lib/lucky_sneaks/unidecoder_data/xc3.yml",
- "lib/lucky_sneaks/unidecoder_data/xc4.yml",
- "lib/lucky_sneaks/unidecoder_data/xc5.yml",
- "lib/lucky_sneaks/unidecoder_data/xc6.yml",
- "lib/lucky_sneaks/unidecoder_data/xc7.yml",
- "lib/lucky_sneaks/unidecoder_data/xc8.yml",
- "lib/lucky_sneaks/unidecoder_data/xc9.yml",
- "lib/lucky_sneaks/unidecoder_data/xca.yml",
- "lib/lucky_sneaks/unidecoder_data/xcb.yml",
- "lib/lucky_sneaks/unidecoder_data/xcc.yml",
- "lib/lucky_sneaks/unidecoder_data/xcd.yml",
- "lib/lucky_sneaks/unidecoder_data/xce.yml",
- "lib/lucky_sneaks/unidecoder_data/xcf.yml",
- "lib/lucky_sneaks/unidecoder_data/xd0.yml",
- "lib/lucky_sneaks/unidecoder_data/xd1.yml",
- "lib/lucky_sneaks/unidecoder_data/xd2.yml",
- "lib/lucky_sneaks/unidecoder_data/xd3.yml",
- "lib/lucky_sneaks/unidecoder_data/xd4.yml",
- "lib/lucky_sneaks/unidecoder_data/xd5.yml",
- "lib/lucky_sneaks/unidecoder_data/xd6.yml",
- "lib/lucky_sneaks/unidecoder_data/xd7.yml",
- "lib/lucky_sneaks/unidecoder_data/xf9.yml",
- "lib/lucky_sneaks/unidecoder_data/xfa.yml",
- "lib/lucky_sneaks/unidecoder_data/xfb.yml",
- "lib/lucky_sneaks/unidecoder_data/xfc.yml",
- "lib/lucky_sneaks/unidecoder_data/xfd.yml",
- "lib/lucky_sneaks/unidecoder_data/xfe.yml",
- "lib/lucky_sneaks/unidecoder_data/xff.yml",
"lib/stringex.rb",
+ "lib/stringex/acts_as_url.rb",
+ "lib/stringex/string_extensions.rb",
+ "lib/stringex/unidecoder.rb",
+ "lib/stringex/unidecoder_data/x00.yml",
+ "lib/stringex/unidecoder_data/x01.yml",
+ "lib/stringex/unidecoder_data/x02.yml",
+ "lib/stringex/unidecoder_data/x03.yml",
+ "lib/stringex/unidecoder_data/x04.yml",
+ "lib/stringex/unidecoder_data/x05.yml",
+ "lib/stringex/unidecoder_data/x06.yml",
+ "lib/stringex/unidecoder_data/x07.yml",
+ "lib/stringex/unidecoder_data/x09.yml",
+ "lib/stringex/unidecoder_data/x0a.yml",
+ "lib/stringex/unidecoder_data/x0b.yml",
+ "lib/stringex/unidecoder_data/x0c.yml",
+ "lib/stringex/unidecoder_data/x0d.yml",
+ "lib/stringex/unidecoder_data/x0e.yml",
+ "lib/stringex/unidecoder_data/x0f.yml",
+ "lib/stringex/unidecoder_data/x10.yml",
+ "lib/stringex/unidecoder_data/x11.yml",
+ "lib/stringex/unidecoder_data/x12.yml",
+ "lib/stringex/unidecoder_data/x13.yml",
+ "lib/stringex/unidecoder_data/x14.yml",
+ "lib/stringex/unidecoder_data/x15.yml",
+ "lib/stringex/unidecoder_data/x16.yml",
+ "lib/stringex/unidecoder_data/x17.yml",
+ "lib/stringex/unidecoder_data/x18.yml",
+ "lib/stringex/unidecoder_data/x1e.yml",
+ "lib/stringex/unidecoder_data/x1f.yml",
+ "lib/stringex/unidecoder_data/x20.yml",
+ "lib/stringex/unidecoder_data/x21.yml",
+ "lib/stringex/unidecoder_data/x22.yml",
+ "lib/stringex/unidecoder_data/x23.yml",
+ "lib/stringex/unidecoder_data/x24.yml",
+ "lib/stringex/unidecoder_data/x25.yml",
+ "lib/stringex/unidecoder_data/x26.yml",
+ "lib/stringex/unidecoder_data/x27.yml",
+ "lib/stringex/unidecoder_data/x28.yml",
+ "lib/stringex/unidecoder_data/x2e.yml",
+ "lib/stringex/unidecoder_data/x2f.yml",
+ "lib/stringex/unidecoder_data/x30.yml",
+ "lib/stringex/unidecoder_data/x31.yml",
+ "lib/stringex/unidecoder_data/x32.yml",
+ "lib/stringex/unidecoder_data/x33.yml",
+ "lib/stringex/unidecoder_data/x4d.yml",
+ "lib/stringex/unidecoder_data/x4e.yml",
+ "lib/stringex/unidecoder_data/x4f.yml",
+ "lib/stringex/unidecoder_data/x50.yml",
+ "lib/stringex/unidecoder_data/x51.yml",
+ "lib/stringex/unidecoder_data/x52.yml",
+ "lib/stringex/unidecoder_data/x53.yml",
+ "lib/stringex/unidecoder_data/x54.yml",
+ "lib/stringex/unidecoder_data/x55.yml",
+ "lib/stringex/unidecoder_data/x56.yml",
+ "lib/stringex/unidecoder_data/x57.yml",
+ "lib/stringex/unidecoder_data/x58.yml",
+ "lib/stringex/unidecoder_data/x59.yml",
+ "lib/stringex/unidecoder_data/x5a.yml",
+ "lib/stringex/unidecoder_data/x5b.yml",
+ "lib/stringex/unidecoder_data/x5c.yml",
+ "lib/stringex/unidecoder_data/x5d.yml",
+ "lib/stringex/unidecoder_data/x5e.yml",
+ "lib/stringex/unidecoder_data/x5f.yml",
+ "lib/stringex/unidecoder_data/x60.yml",
+ "lib/stringex/unidecoder_data/x61.yml",
+ "lib/stringex/unidecoder_data/x62.yml",
+ "lib/stringex/unidecoder_data/x63.yml",
+ "lib/stringex/unidecoder_data/x64.yml",
+ "lib/stringex/unidecoder_data/x65.yml",
+ "lib/stringex/unidecoder_data/x66.yml",
+ "lib/stringex/unidecoder_data/x67.yml",
+ "lib/stringex/unidecoder_data/x68.yml",
+ "lib/stringex/unidecoder_data/x69.yml",
+ "lib/stringex/unidecoder_data/x6a.yml",
+ "lib/stringex/unidecoder_data/x6b.yml",
+ "lib/stringex/unidecoder_data/x6c.yml",
+ "lib/stringex/unidecoder_data/x6d.yml",
+ "lib/stringex/unidecoder_data/x6e.yml",
+ "lib/stringex/unidecoder_data/x6f.yml",
+ "lib/stringex/unidecoder_data/x70.yml",
+ "lib/stringex/unidecoder_data/x71.yml",
+ "lib/stringex/unidecoder_data/x72.yml",
+ "lib/stringex/unidecoder_data/x73.yml",
+ "lib/stringex/unidecoder_data/x74.yml",
+ "lib/stringex/unidecoder_data/x75.yml",
+ "lib/stringex/unidecoder_data/x76.yml",
+ "lib/stringex/unidecoder_data/x77.yml",
+ "lib/stringex/unidecoder_data/x78.yml",
+ "lib/stringex/unidecoder_data/x79.yml",
+ "lib/stringex/unidecoder_data/x7a.yml",
+ "lib/stringex/unidecoder_data/x7b.yml",
+ "lib/stringex/unidecoder_data/x7c.yml",
+ "lib/stringex/unidecoder_data/x7d.yml",
+ "lib/stringex/unidecoder_data/x7e.yml",
+ "lib/stringex/unidecoder_data/x7f.yml",
+ "lib/stringex/unidecoder_data/x80.yml",
+ "lib/stringex/unidecoder_data/x81.yml",
+ "lib/stringex/unidecoder_data/x82.yml",
+ "lib/stringex/unidecoder_data/x83.yml",
+ "lib/stringex/unidecoder_data/x84.yml",
+ "lib/stringex/unidecoder_data/x85.yml",
+ "lib/stringex/unidecoder_data/x86.yml",
+ "lib/stringex/unidecoder_data/x87.yml",
+ "lib/stringex/unidecoder_data/x88.yml",
+ "lib/stringex/unidecoder_data/x89.yml",
+ "lib/stringex/unidecoder_data/x8a.yml",
+ "lib/stringex/unidecoder_data/x8b.yml",
+ "lib/stringex/unidecoder_data/x8c.yml",
+ "lib/stringex/unidecoder_data/x8d.yml",
+ "lib/stringex/unidecoder_data/x8e.yml",
+ "lib/stringex/unidecoder_data/x8f.yml",
+ "lib/stringex/unidecoder_data/x90.yml",
+ "lib/stringex/unidecoder_data/x91.yml",
+ "lib/stringex/unidecoder_data/x92.yml",
+ "lib/stringex/unidecoder_data/x93.yml",
+ "lib/stringex/unidecoder_data/x94.yml",
+ "lib/stringex/unidecoder_data/x95.yml",
+ "lib/stringex/unidecoder_data/x96.yml",
+ "lib/stringex/unidecoder_data/x97.yml",
+ "lib/stringex/unidecoder_data/x98.yml",
+ "lib/stringex/unidecoder_data/x99.yml",
+ "lib/stringex/unidecoder_data/x9a.yml",
+ "lib/stringex/unidecoder_data/x9b.yml",
+ "lib/stringex/unidecoder_data/x9c.yml",
+ "lib/stringex/unidecoder_data/x9d.yml",
+ "lib/stringex/unidecoder_data/x9e.yml",
+ "lib/stringex/unidecoder_data/x9f.yml",
+ "lib/stringex/unidecoder_data/xa0.yml",
+ "lib/stringex/unidecoder_data/xa1.yml",
+ "lib/stringex/unidecoder_data/xa2.yml",
+ "lib/stringex/unidecoder_data/xa3.yml",
+ "lib/stringex/unidecoder_data/xa4.yml",
+ "lib/stringex/unidecoder_data/xac.yml",
+ "lib/stringex/unidecoder_data/xad.yml",
+ "lib/stringex/unidecoder_data/xae.yml",
+ "lib/stringex/unidecoder_data/xaf.yml",
+ "lib/stringex/unidecoder_data/xb0.yml",
+ "lib/stringex/unidecoder_data/xb1.yml",
+ "lib/stringex/unidecoder_data/xb2.yml",
+ "lib/stringex/unidecoder_data/xb3.yml",
+ "lib/stringex/unidecoder_data/xb4.yml",
+ "lib/stringex/unidecoder_data/xb5.yml",
+ "lib/stringex/unidecoder_data/xb6.yml",
+ "lib/stringex/unidecoder_data/xb7.yml",
+ "lib/stringex/unidecoder_data/xb8.yml",
+ "lib/stringex/unidecoder_data/xb9.yml",
+ "lib/stringex/unidecoder_data/xba.yml",
+ "lib/stringex/unidecoder_data/xbb.yml",
+ "lib/stringex/unidecoder_data/xbc.yml",
+ "lib/stringex/unidecoder_data/xbd.yml",
+ "lib/stringex/unidecoder_data/xbe.yml",
+ "lib/stringex/unidecoder_data/xbf.yml",
+ "lib/stringex/unidecoder_data/xc0.yml",
+ "lib/stringex/unidecoder_data/xc1.yml",
+ "lib/stringex/unidecoder_data/xc2.yml",
+ "lib/stringex/unidecoder_data/xc3.yml",
+ "lib/stringex/unidecoder_data/xc4.yml",
+ "lib/stringex/unidecoder_data/xc5.yml",
+ "lib/stringex/unidecoder_data/xc6.yml",
+ "lib/stringex/unidecoder_data/xc7.yml",
+ "lib/stringex/unidecoder_data/xc8.yml",
+ "lib/stringex/unidecoder_data/xc9.yml",
+ "lib/stringex/unidecoder_data/xca.yml",
+ "lib/stringex/unidecoder_data/xcb.yml",
+ "lib/stringex/unidecoder_data/xcc.yml",
+ "lib/stringex/unidecoder_data/xcd.yml",
+ "lib/stringex/unidecoder_data/xce.yml",
+ "lib/stringex/unidecoder_data/xcf.yml",
+ "lib/stringex/unidecoder_data/xd0.yml",
+ "lib/stringex/unidecoder_data/xd1.yml",
+ "lib/stringex/unidecoder_data/xd2.yml",
+ "lib/stringex/unidecoder_data/xd3.yml",
+ "lib/stringex/unidecoder_data/xd4.yml",
+ "lib/stringex/unidecoder_data/xd5.yml",
+ "lib/stringex/unidecoder_data/xd6.yml",
+ "lib/stringex/unidecoder_data/xd7.yml",
+ "lib/stringex/unidecoder_data/xf9.yml",
+ "lib/stringex/unidecoder_data/xfa.yml",
+ "lib/stringex/unidecoder_data/xfb.yml",
+ "lib/stringex/unidecoder_data/xfc.yml",
+ "lib/stringex/unidecoder_data/xfd.yml",
+ "lib/stringex/unidecoder_data/xfe.yml",
+ "lib/stringex/unidecoder_data/xff.yml",
"stringex.gemspec"
]
s.homepage = %q{http://github.com/rsl/stringex}

Showing you all comments on commits in this comparison.

@rsl

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

Something went wrong with that request. Please try again.