stringex 2.0.4 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. checksums.yaml +8 -8
  2. data/Rakefile +9 -1
  3. data/VERSION +1 -1
  4. data/lib/stringex/localization/backend/i18n.rb +16 -4
  5. data/stringex.gemspec +21 -20
  6. data/test/performance/localization_performance_test.rb +24 -0
  7. data/test/{acts_as_url → unit/acts_as_url}/adapter/active_record.rb +0 -0
  8. data/test/{acts_as_url → unit/acts_as_url}/adapter/data_mapper.rb +0 -0
  9. data/test/{acts_as_url → unit/acts_as_url}/adapter/mongoid.rb +0 -0
  10. data/test/{acts_as_url_configuration_test.rb → unit/acts_as_url_configuration_test.rb} +0 -0
  11. data/test/{acts_as_url_integration_test.rb → unit/acts_as_url_integration_test.rb} +0 -0
  12. data/test/{localization → unit/localization}/da_test.rb +0 -0
  13. data/test/{localization → unit/localization}/default_test.rb +0 -0
  14. data/test/{localization → unit/localization}/en_test.rb +0 -0
  15. data/test/{localization_test.rb → unit/localization_test.rb} +0 -0
  16. data/test/{redcloth_to_html_test.rb → unit/redcloth_to_html_test.rb} +0 -0
  17. data/test/{string_extensions_test.rb → unit/string_extensions_test.rb} +0 -0
  18. data/test/{unicode_point_suite → unit/unicode_point_suite}/basic_greek_test.rb +0 -0
  19. data/test/{unicode_point_suite → unit/unicode_point_suite}/basic_latin_test.rb +0 -0
  20. data/test/{unicode_point_suite → unit/unicode_point_suite}/codepoint_test_helper.rb +0 -0
  21. data/test/{unidecoder → unit/unidecoder}/bad_localization.yml +0 -0
  22. data/test/{unidecoder → unit/unidecoder}/localization.yml +0 -0
  23. data/test/{unidecoder_test.rb → unit/unidecoder_test.rb} +0 -0
  24. data/test/{version_test.rb → unit/version_test.rb} +0 -0
  25. metadata +21 -20
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OTk5MGJkMmU1Nzk5Yzc4YWEwYzExMmYzZDMzNmY4ODg0MmIwMjM1Mw==
4
+ YzJhYzkxYjk0MzM2YzY0NjA3YTJlNTQwMzJiZTY0MTk4MWZiNzI1YQ==
5
5
  data.tar.gz: !binary |-
6
- MTczNTY4NjEwMDFkNTdlNzQyZGI4MTZlNzJlOWZjODU1MWM2ZmE0ZQ==
6
+ M2JjNzFjZWJhN2NhZmZmNzhlMTM0ZThmNmUwMDNiZDQ2MGY1YTllZg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MzhlMWQwMmIxNDg1M2IyYjRmMjYwYTRlMGQyMWQ2YmI2ODhiNDVlNGZiZTE2
10
- NGY4OTM5Y2M3MjRmYTA5ZDM2YWRhNzM4OTFhNDgxMDg2Y2E3ODU5YmJjM2Nh
11
- ZGNmOTNjN2U3MDM2MzI4ZDNjYjc1MmM1YWVjZGY5ODk0MmE2MGU=
9
+ MDE4NDUxZjY1ZTdlMzc4M2E5NWVmNGFjN2MyY2M1ZDI4ZjQ0YzFlMzJiY2Y2
10
+ YjIzZGJlM2U2MDQ4NjgzNjA1NGRjYjdkNDQxYzdjMDBhZDMwYWVlNWRiMWVm
11
+ OTNkNjc0ZGM1YjlmODhjMDBhNzZhNGY4Mzc0M2U4NzE5M2NiMGY=
12
12
  data.tar.gz: !binary |-
13
- YzU4ODc0MGE4MTEyZjk1NzAxNGQ3MWIyM2U3NDE1OTZkNWJjMzU5NTBlMDMy
14
- MjRlNWYzZWVlZjI5YjUxZGNjNDJjYzg3ZjBiZjdkYzIyYjYxZWM4MTc2ZGQ4
15
- MmM2OTdkMTM4NDgxMWNiOTFjNjBjYzk5MzQ5N2QzODUzNWVkOTI=
13
+ Zjc2YTJkOTM0YmM1NzlhMTEzZGY0NGQwNTExOGNlOTJkNWM2MTNiYTg0MWU4
14
+ ZDM5ZTcyZGVkN2NmOTMxMjkzOTg0MjgwMmM5ZGU4ZGE1N2E3YThiYWNiOGJh
15
+ MTAxOGM0Mjk3MWI5NTg0ODc5YzFlMmUwMTJhNWVmYWE4Zjk0Y2U=
data/Rakefile CHANGED
@@ -29,10 +29,18 @@ end
29
29
 
30
30
  Rake::TestTask.new do |t|
31
31
  t.libs << 'lib' << 'test'
32
- t.pattern = 'test/**/*_test.rb'
32
+ t.pattern = 'test/unit/**/*_test.rb'
33
33
  t.verbose = true
34
34
  end
35
35
 
36
+ namespace :test do
37
+ Rake::TestTask.new(:performance) do |t|
38
+ t.libs << 'lib' << 'test'
39
+ t.pattern = 'test/performance/**/*_test.rb'
40
+ t.verbose = true
41
+ end
42
+ end
43
+
36
44
  desc 'Default: Run Stringex test suite using ActiveRecord as the ORM'
37
45
  task :default => [:setup_active_record_suite, :test]
38
46
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.4
1
+ 2.0.5
@@ -27,13 +27,16 @@ module Stringex
27
27
 
28
28
  def store_translations(locale, scope, data)
29
29
  ::I18n.backend.store_translations(locale, { :stringex => { scope => data } })
30
+ reset_translations_cache
31
+ end
32
+
33
+ def translations
34
+ # Set up hash like translations[:en][:transliterations]["é"]
35
+ @translations ||= Hash.new { |hsh, locale| hsh[locale] = Hash.new({}).merge(i18n_translations_for(locale)) }
30
36
  end
31
37
 
32
38
  def initial_translation(scope, key, locale)
33
- # I18n can't return a nil as default as this gets interpreted as if no default
34
- # is specified, so we use a string instead.
35
- translated = ::I18n.translate(key, :scope => [:stringex, scope], :locale => locale, :default => "__default__")
36
- translated == "__default__" ? nil : translated
39
+ translations[locale][scope][key.to_sym]
37
40
  end
38
41
 
39
42
  def load_translations(locale = nil)
@@ -41,6 +44,15 @@ module Stringex
41
44
  path = Dir[File.join(LOAD_PATH_BASE, "#{locale}.yml")]
42
45
  ::I18n.load_path |= Dir[File.join(LOAD_PATH_BASE, "#{locale}.yml")]
43
46
  ::I18n.backend.load_translations
47
+ reset_translations_cache
48
+ end
49
+
50
+ def i18n_translations_for(locale)
51
+ ::I18n.translate("stringex", :locale => locale, :default => {})
52
+ end
53
+
54
+ def reset_translations_cache
55
+ @translations = nil
44
56
  end
45
57
  end
46
58
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "stringex"
8
- s.version = "2.0.4"
8
+ s.version = "2.0.5"
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-07-15"
12
+ s.date = "2013-07-16"
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 = [
@@ -231,25 +231,26 @@ Gem::Specification.new do |s|
231
231
  "locales/en.yml",
232
232
  "locales/pt-BR.yml",
233
233
  "stringex.gemspec",
234
- "test/acts_as_url/adapter/active_record.rb",
235
- "test/acts_as_url/adapter/data_mapper.rb",
236
- "test/acts_as_url/adapter/mongoid.rb",
237
- "test/acts_as_url_configuration_test.rb",
238
- "test/acts_as_url_integration_test.rb",
239
- "test/localization/da_test.rb",
240
- "test/localization/default_test.rb",
241
- "test/localization/en_test.rb",
242
- "test/localization_test.rb",
243
- "test/redcloth_to_html_test.rb",
244
- "test/string_extensions_test.rb",
234
+ "test/performance/localization_performance_test.rb",
245
235
  "test/test_helper.rb",
246
- "test/unicode_point_suite/basic_greek_test.rb",
247
- "test/unicode_point_suite/basic_latin_test.rb",
248
- "test/unicode_point_suite/codepoint_test_helper.rb",
249
- "test/unidecoder/bad_localization.yml",
250
- "test/unidecoder/localization.yml",
251
- "test/unidecoder_test.rb",
252
- "test/version_test.rb"
236
+ "test/unit/acts_as_url/adapter/active_record.rb",
237
+ "test/unit/acts_as_url/adapter/data_mapper.rb",
238
+ "test/unit/acts_as_url/adapter/mongoid.rb",
239
+ "test/unit/acts_as_url_configuration_test.rb",
240
+ "test/unit/acts_as_url_integration_test.rb",
241
+ "test/unit/localization/da_test.rb",
242
+ "test/unit/localization/default_test.rb",
243
+ "test/unit/localization/en_test.rb",
244
+ "test/unit/localization_test.rb",
245
+ "test/unit/redcloth_to_html_test.rb",
246
+ "test/unit/string_extensions_test.rb",
247
+ "test/unit/unicode_point_suite/basic_greek_test.rb",
248
+ "test/unit/unicode_point_suite/basic_latin_test.rb",
249
+ "test/unit/unicode_point_suite/codepoint_test_helper.rb",
250
+ "test/unit/unidecoder/bad_localization.yml",
251
+ "test/unit/unidecoder/localization.yml",
252
+ "test/unit/unidecoder_test.rb",
253
+ "test/unit/version_test.rb"
253
254
  ]
254
255
  s.homepage = "http://github.com/rsl/stringex"
255
256
  s.licenses = ["MIT"]
@@ -0,0 +1,24 @@
1
+ require "test_helper"
2
+ require 'stringex'
3
+ require 'i18n'
4
+ require 'benchmark'
5
+
6
+ class LocalizationPerformanceTest < Test::Unit::TestCase
7
+ def setup
8
+ I18n.locale = :en
9
+ Stringex::Localization.reset!
10
+ end
11
+
12
+ def test_i18n_performance
13
+ Stringex::Localization.backend = :internal
14
+ internal_time = Benchmark.realtime { 100.times{ "alskdjfal".to_url } }
15
+
16
+ Stringex::Localization.backend = :i18n
17
+ i18n_time = Benchmark.realtime { 100.times{ "alskdjfal".to_url } }
18
+
19
+ percentage_difference = ((i18n_time - internal_time) / internal_time) * 100
20
+ allowed_difference = 25
21
+
22
+ assert percentage_difference <= allowed_difference, "The I18n backend is #{percentage_difference.to_i} percent slower than the internal backend. The allowed difference is #{allowed_difference} percent."
23
+ end
24
+ 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.4
4
+ version: 2.0.5
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-07-15 00:00:00.000000000 Z
11
+ date: 2013-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -389,25 +389,26 @@ files:
389
389
  - locales/en.yml
390
390
  - locales/pt-BR.yml
391
391
  - stringex.gemspec
392
- - test/acts_as_url/adapter/active_record.rb
393
- - test/acts_as_url/adapter/data_mapper.rb
394
- - test/acts_as_url/adapter/mongoid.rb
395
- - test/acts_as_url_configuration_test.rb
396
- - test/acts_as_url_integration_test.rb
397
- - test/localization/da_test.rb
398
- - test/localization/default_test.rb
399
- - test/localization/en_test.rb
400
- - test/localization_test.rb
401
- - test/redcloth_to_html_test.rb
402
- - test/string_extensions_test.rb
392
+ - test/performance/localization_performance_test.rb
403
393
  - test/test_helper.rb
404
- - test/unicode_point_suite/basic_greek_test.rb
405
- - test/unicode_point_suite/basic_latin_test.rb
406
- - test/unicode_point_suite/codepoint_test_helper.rb
407
- - test/unidecoder/bad_localization.yml
408
- - test/unidecoder/localization.yml
409
- - test/unidecoder_test.rb
410
- - test/version_test.rb
394
+ - test/unit/acts_as_url/adapter/active_record.rb
395
+ - test/unit/acts_as_url/adapter/data_mapper.rb
396
+ - test/unit/acts_as_url/adapter/mongoid.rb
397
+ - test/unit/acts_as_url_configuration_test.rb
398
+ - test/unit/acts_as_url_integration_test.rb
399
+ - test/unit/localization/da_test.rb
400
+ - test/unit/localization/default_test.rb
401
+ - test/unit/localization/en_test.rb
402
+ - test/unit/localization_test.rb
403
+ - test/unit/redcloth_to_html_test.rb
404
+ - test/unit/string_extensions_test.rb
405
+ - test/unit/unicode_point_suite/basic_greek_test.rb
406
+ - test/unit/unicode_point_suite/basic_latin_test.rb
407
+ - test/unit/unicode_point_suite/codepoint_test_helper.rb
408
+ - test/unit/unidecoder/bad_localization.yml
409
+ - test/unit/unidecoder/localization.yml
410
+ - test/unit/unidecoder_test.rb
411
+ - test/unit/version_test.rb
411
412
  homepage: http://github.com/rsl/stringex
412
413
  licenses:
413
414
  - MIT