stringex 2.0.4 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
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