stringex 2.0.3 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YmMxOWVlZjNkYzk5YTMyOWM1MGViNWNjZWE3Y2EyYzc4OGNiZTJiNA==
4
+ OTk5MGJkMmU1Nzk5Yzc4YWEwYzExMmYzZDMzNmY4ODg0MmIwMjM1Mw==
5
5
  data.tar.gz: !binary |-
6
- NWM2ZjYwODhmZDU3ZDk0MzQzM2U4YmE2MGE5YzE0MzhmYzVmZWI5YQ==
6
+ MTczNTY4NjEwMDFkNTdlNzQyZGI4MTZlNzJlOWZjODU1MWM2ZmE0ZQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MGI1Y2FiMGVhOGNmMjE4MmQwZDMyYjkwNzY2YzA0ZWQwN2I5NjAzZTZiODll
10
- ZDRkZTdlOWVhMDkxYmQxOTE2OWYyM2IwZjdjMzk4ZTRmMGE2M2ZjYTBjYjdj
11
- MDNhNDExZTIyNGJjMDE3OTk1NjA3NWFjMjFlYzYxMzI5ZDA1MjQ=
9
+ MzhlMWQwMmIxNDg1M2IyYjRmMjYwYTRlMGQyMWQ2YmI2ODhiNDVlNGZiZTE2
10
+ NGY4OTM5Y2M3MjRmYTA5ZDM2YWRhNzM4OTFhNDgxMDg2Y2E3ODU5YmJjM2Nh
11
+ ZGNmOTNjN2U3MDM2MzI4ZDNjYjc1MmM1YWVjZGY5ODk0MmE2MGU=
12
12
  data.tar.gz: !binary |-
13
- NTdlMjBlMWZmOGQ4YzBiNjk1MWExNGQyNTRiOTgxYjUxZjY1OTUwZTg3Mzgy
14
- MWNhNzQ2YmQ2NjQ1MjM2YjAwMDBjYmUwZTRiN2JiZGIyZTJhNTlhMGJjNzIy
15
- MzYyZGNjNGRiZjNiMDQ4MjA5Yzg5NTk5ZWMyODBjOGY0N2ZhNTM=
13
+ YzU4ODc0MGE4MTEyZjk1NzAxNGQ3MWIyM2U3NDE1OTZkNWJjMzU5NTBlMDMy
14
+ MjRlNWYzZWVlZjI5YjUxZGNjNDJjYzg3ZjBiZjdkYzIyYjYxZWM4MTc2ZGQ4
15
+ MmM2OTdkMTM4NDgxMWNiOTFjNjBjYzk5MzQ5N2QzODUzNWVkOTI=
data/README.rdoc CHANGED
@@ -95,14 +95,15 @@ A small collection of extensions on Ruby's String class. Please see the document
95
95
 
96
96
  With Stringex version 2.0 and higher, you can localize the different conversions in Stringex. Read more here[https://github.com/rsl/stringex/wiki/Localization-of-Stringex-conversions]. If you add a new language, please submit a pull request so we can make it available to other users also.
97
97
 
98
- == Using with Rails
98
+ == Ruby on Rails Usage
99
99
 
100
- When using Stringex with Ruby on Rails, you automatically get built-in translations for miscellaneous characters, HTML entities, and vulgar fractions.
101
-
102
- You can see Stringex's standard translations here[https://github.com/rsl/stringex/tree/master/locales].
100
+ When using Stringex with Ruby on Rails, you automatically get built-in translations for miscellaneous characters, HTML entities, and vulgar fractions. You can see Stringex's standard translations here[https://github.com/rsl/stringex/tree/master/locales].
103
101
 
104
102
  Currently, built-in translations are available for the following languages:
105
- English (en), Danish (da)
103
+
104
+ * English (en)
105
+ * Danish (da)
106
+ * Portugueuse Brazilian (pt-BR)
106
107
 
107
108
  You can easily add your own or customize the built-in translations - read here[https://github.com/rsl/stringex/wiki/Localization-of-Stringex-conversions]. If you add a new language, please submit a pull request so we can make it available to other users also.
108
109
 
@@ -110,7 +111,7 @@ If you don't want to use the Stringex built-in translations, you can force Strin
110
111
 
111
112
  Stringex::Localization.locale = :en
112
113
 
113
- == Note to users of CanCan
114
+ == CanCan Usage Note
114
115
 
115
116
  You'll need to add a <tt>:find_by => :url</tt> to your <tt>load_and_authorize_resource</tt>. Here's an example:
116
117
 
@@ -120,4 +121,6 @@ You'll need to add a <tt>:find_by => :url</tt> to your <tt>load_and_authorize_re
120
121
 
121
122
  If it's not obvious, some of the code for ActsAsUrl is based on Rick Olsen's permalink_fu[http://svn.techno-weenie.net/projects/plugins/permalink_fu/] plugin. Unidecoder is a Ruby port of Sean Burke's Text::Unidecode[http://interglacial.com/~sburke/tpj/as_html/tpj22.html] module for Perl. And, finally, the bulk of strip_html_tags[link:classes/Stringex/StringExtensions.html#M000005] in StringExtensions was stolen from Tobias Lütke's Regex in Typo[http://typosphere.org/].
122
123
 
124
+ GIANT thanks to the many contributors who have helped make Stringex better and better: http://github.com/rsl/stringex/contributors
125
+
123
126
  copyright (c) 2008-2012 Lucky Sneaks, released under the MIT license
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.3
1
+ 2.0.4
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'stringex/localization/converter'
4
4
  require 'stringex/localization/default_conversions'
5
+ require 'stringex/localization/backend/base'
5
6
  require 'stringex/localization/backend/internal'
6
7
  require 'stringex/localization/backend/i18n'
7
8
 
@@ -0,0 +1,13 @@
1
+ module Stringex
2
+ module Localization
3
+ module Backend
4
+ class Base
5
+ class << self
6
+ def reset!
7
+ instance_variables.each { |var| remove_instance_variable var }
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,16 +1,16 @@
1
1
  module Stringex
2
2
  module Localization
3
3
  module Backend
4
- module I18n
4
+ class I18n < Base
5
5
  LOAD_PATH_BASE = File.join(File.expand_path(File.dirname(__FILE__)), '..', '..', '..', '..', 'locales')
6
6
 
7
7
  class << self
8
8
  def locale
9
- ::I18n.locale
9
+ @locale || ::I18n.locale
10
10
  end
11
11
 
12
12
  def locale=(new_locale)
13
- ::I18n.locale = new_locale
13
+ @locale = new_locale
14
14
  end
15
15
 
16
16
  def default_locale
@@ -37,15 +37,11 @@ module Stringex
37
37
  end
38
38
 
39
39
  def load_translations(locale = nil)
40
- locale ||= ::I18n.locale
40
+ locale ||= self.locale
41
41
  path = Dir[File.join(LOAD_PATH_BASE, "#{locale}.yml")]
42
42
  ::I18n.load_path |= Dir[File.join(LOAD_PATH_BASE, "#{locale}.yml")]
43
43
  ::I18n.backend.load_translations
44
44
  end
45
-
46
- def reset!
47
- # Can't reset I18n. Needed?
48
- end
49
45
  end
50
46
  end
51
47
  end
@@ -1,7 +1,7 @@
1
1
  module Stringex
2
2
  module Localization
3
3
  module Backend
4
- module Internal
4
+ class Internal < Base
5
5
  DEFAULT_LOCALE = :en
6
6
 
7
7
  class << self
@@ -40,10 +40,6 @@ module Stringex
40
40
  def initial_translation(scope, key, locale)
41
41
  translations[locale][scope][key.to_sym]
42
42
  end
43
-
44
- def reset!
45
- @translations = @locale = @default_locale = nil
46
- end
47
43
  end
48
44
  end
49
45
  end
@@ -25,7 +25,7 @@ module Stringex
25
25
  }
26
26
 
27
27
  # Things that just get converted to spaces
28
- CLEANUP_CHARACTERS = /[\.,:;(){}\[\]\?!\^'ʼ"_\|]/
28
+ CLEANUP_CHARACTERS = /[\.,:;(){}\[\]\?!\^'ʼ"_\|<>]/
29
29
  CLEANUP_HTML_ENTITIES = /&[^;]+;/
30
30
 
31
31
  CURRENCIES_SUPPORTED_SIMPLE = {
@@ -36,6 +36,10 @@ module Stringex
36
36
  end
37
37
  end
38
38
 
39
+ def normalize_currency!
40
+ string.gsub! /(\d+),(\d+)/, '\1\2'
41
+ end
42
+
39
43
  def smart_strip!
40
44
  string.strip!
41
45
  @string = "#{starting_whitespace}#{string}#{ending_whitespace}"
@@ -71,7 +75,7 @@ module Stringex
71
75
  expressions.characters.each do |key, expression|
72
76
  next if key == :slash && options[:allow_slash]
73
77
  replacement = translate(key)
74
- replacement = " #{replacement} " unless key == :dot
78
+ replacement = " #{replacement} " unless replacement == '' || key == :dot
75
79
  string.gsub! expression, replacement
76
80
  end
77
81
  end
@@ -53,6 +53,7 @@ module Stringex
53
53
  # before running this method.
54
54
  def convert_miscellaneous_characters(options = {})
55
55
  stringex_convert(options) do
56
+ normalize_currency!
56
57
  translate! :ellipses, :currencies, :abbreviations, :characters, :apostrophes
57
58
  cleanup_characters!
58
59
  end
data/stringex.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "stringex"
8
- s.version = "2.0.3"
8
+ s.version = "2.0.4"
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 = "2013-06-17"
12
+ s.date = "2013-07-15"
13
13
  s.description = "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 = "rsl@luckysneaks.com"
15
15
  s.extra_rdoc_files = [
@@ -37,6 +37,7 @@ Gem::Specification.new do |s|
37
37
  "lib/stringex/configuration/configurator.rb",
38
38
  "lib/stringex/configuration/string_extensions.rb",
39
39
  "lib/stringex/localization.rb",
40
+ "lib/stringex/localization/backend/base.rb",
40
41
  "lib/stringex/localization/backend/i18n.rb",
41
42
  "lib/stringex/localization/backend/internal.rb",
42
43
  "lib/stringex/localization/conversion_expressions.rb",
@@ -4,6 +4,7 @@ require 'i18n'
4
4
 
5
5
  class LocalizationTest < Test::Unit::TestCase
6
6
  def setup
7
+ I18n.locale = :en
7
8
  Stringex::Localization.reset!
8
9
  end
9
10
 
@@ -120,4 +121,22 @@ class LocalizationTest < Test::Unit::TestCase
120
121
  assert_equal "Testblank", "Test&nbsp;blank".convert_miscellaneous_html_entities
121
122
  end
122
123
  end
124
+
125
+ def test_assigns_locale_in_i18n_backend
126
+ I18n.locale = :en
127
+ Stringex::Localization.backend = :i18n
128
+
129
+ assert_equal :en, Stringex::Localization.locale
130
+
131
+ I18n.locale = :jp
132
+ assert_equal :jp, Stringex::Localization.locale
133
+
134
+ Stringex::Localization.locale = :de
135
+ assert_equal :de, Stringex::Localization.locale
136
+ assert_equal :jp, I18n.locale
137
+
138
+ Stringex::Localization.locale = nil
139
+ assert_equal :jp, Stringex::Localization.locale
140
+ assert_equal :jp, I18n.locale
141
+ end
123
142
  end
@@ -71,7 +71,11 @@ class StringExtensionsTest < Test::Unit::TestCase
71
71
  "У лукоморья дуб зеленый" =>
72
72
  "u-lukomoria-dub-zielienyi",
73
73
  "Here are some {braces}" =>
74
- "here-are-some-braces"
74
+ "here-are-some-braces",
75
+ "$1,000" =>
76
+ "1000-dollars",
77
+ "«zut alors»" =>
78
+ "zut-alors"
75
79
  }.each do |html, plain|
76
80
  assert_equal plain, html.to_url
77
81
  end
@@ -214,4 +218,15 @@ class StringExtensionsTest < Test::Unit::TestCase
214
218
 
215
219
  assert_equal "now-with-hyphens", "----now---------with-hyphens--------".collapse("-")
216
220
  end
221
+
222
+ def test_empty_translations
223
+ Stringex::Localization.backend = :internal
224
+ Stringex::Localization.store_translations :de, :characters, {
225
+ :star => "",
226
+ :percent => "prozent"
227
+ }
228
+ Stringex::Localization.locale = :de
229
+
230
+ assert_equal "foobar ist 100 prozent gut", "foo*bar ist 100% gut".convert_miscellaneous_characters
231
+ end
217
232
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stringex
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Russell Norris
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-17 00:00:00.000000000 Z
11
+ date: 2013-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -195,6 +195,7 @@ files:
195
195
  - lib/stringex/configuration/configurator.rb
196
196
  - lib/stringex/configuration/string_extensions.rb
197
197
  - lib/stringex/localization.rb
198
+ - lib/stringex/localization/backend/base.rb
198
199
  - lib/stringex/localization/backend/i18n.rb
199
200
  - lib/stringex/localization/backend/internal.rb
200
201
  - lib/stringex/localization/conversion_expressions.rb