tr8n_core 4.0.7 → 4.0.9

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 (68) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/lib/tr8n/api_client.rb +28 -18
  4. data/lib/tr8n/application.rb +37 -64
  5. data/lib/tr8n/cache.rb +8 -41
  6. data/lib/tr8n/cache_adapters/file.rb +1 -2
  7. data/lib/tr8n/cache_adapters/memcache.rb +2 -2
  8. data/lib/tr8n/cache_adapters/redis.rb +2 -2
  9. data/lib/tr8n/config.rb +48 -13
  10. data/lib/tr8n/decorators/html.rb +3 -10
  11. data/lib/tr8n/language.rb +25 -112
  12. data/lib/tr8n/language_case.rb +1 -1
  13. data/lib/tr8n/session.rb +2 -9
  14. data/lib/tr8n/source.rb +12 -44
  15. data/lib/tr8n/{tokens/data_tokenizer.rb → tokenizers/data.rb} +4 -3
  16. data/lib/tr8n/{tokens/decoration_tokenizer.rb → tokenizers/decoration.rb} +6 -5
  17. data/lib/tr8n/tokenizers/dom.rb +346 -0
  18. data/lib/tr8n/tokens/data.rb +15 -22
  19. data/lib/tr8n/tokens/transform.rb +24 -12
  20. data/lib/tr8n/translation_key.rb +6 -29
  21. data/lib/tr8n/utils.rb +5 -0
  22. data/lib/tr8n_core/version.rb +1 -1
  23. data/lib/tr8n_core.rb +7 -26
  24. metadata +30 -100
  25. data/lib/tr8n/cache_adapters/cdb.rb +0 -87
  26. data/lib/tr8n/tokens/hidden.rb +0 -57
  27. data/spec/application_spec.rb +0 -52
  28. data/spec/base_spec.rb +0 -19
  29. data/spec/cache/adapters/file_spec.rb +0 -32
  30. data/spec/cache/adapters/memcache_spec.rb +0 -15
  31. data/spec/cache/generators/file_generator_spec.rb +0 -30
  32. data/spec/config_spec.rb +0 -32
  33. data/spec/decorator_spec.rb +0 -12
  34. data/spec/decorators/base_spec.rb +0 -14
  35. data/spec/decorators/default_spec.rb +0 -12
  36. data/spec/decorators/html_spec.rb +0 -50
  37. data/spec/ext/array_spec.rb +0 -12
  38. data/spec/ext/hash_spec.rb +0 -15
  39. data/spec/ext/string_spec.rb +0 -10
  40. data/spec/fixtures/application.json +0 -112
  41. data/spec/fixtures/languages/en-US.json +0 -1424
  42. data/spec/fixtures/languages/es.json +0 -291
  43. data/spec/fixtures/languages/ru.json +0 -582
  44. data/spec/fixtures/translations/ru/basic.json +0 -56
  45. data/spec/fixtures/translations/ru/counters.json +0 -43
  46. data/spec/fixtures/translations/ru/genders.json +0 -171
  47. data/spec/fixtures/translations/ru/last_names.txt +0 -200
  48. data/spec/fixtures/translations/ru/names.json +0 -1
  49. data/spec/fixtures/translations/ru/names.txt +0 -458
  50. data/spec/language_case_rule_spec.rb +0 -57
  51. data/spec/language_case_spec.rb +0 -58
  52. data/spec/language_context_rule_spec.rb +0 -75
  53. data/spec/language_context_spec.rb +0 -333
  54. data/spec/language_spec.rb +0 -615
  55. data/spec/logger_spec.rb +0 -15
  56. data/spec/rules_engine/evaluator_spec.rb +0 -150
  57. data/spec/rules_engine/parser_spec.rb +0 -31
  58. data/spec/source_spec.rb +0 -13
  59. data/spec/spec_helper.rb +0 -101
  60. data/spec/tokens/data_spec.rb +0 -114
  61. data/spec/tokens/data_tokenizer_spec.rb +0 -29
  62. data/spec/tokens/decoration_tokenizer_spec.rb +0 -81
  63. data/spec/tokens/hidden_spec.rb +0 -24
  64. data/spec/tokens/method_spec.rb +0 -84
  65. data/spec/tokens/transform_spec.rb +0 -50
  66. data/spec/translation_key_spec.rb +0 -96
  67. data/spec/translation_spec.rb +0 -24
  68. data/spec/utils_spec.rb +0 -62
@@ -1,52 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Tr8n::Application do
6
- describe "#configuration" do
7
- it "sets class attributes" do
8
- expect(Tr8n::Application.attributes).to eq([:host, :key, :secret, :access_token,
9
- :name, :description, :threshold, :default_locale, :default_level,
10
- :features, :languages, :featured_locales, :sources, :components, :tokens,
11
- :css, :shortcuts])
12
- end
13
- end
14
-
15
- describe "#initialize" do
16
- before do
17
- @app = init_application
18
- end
19
-
20
- it "loads application attributes" do
21
- expect(@app.key).to eq("default")
22
- expect(@app.name).to eq("Tr8n Translation Service")
23
-
24
- expect(@app.default_data_token('nbsp')).to eq(" ")
25
- expect(@app.default_decoration_token('strong')).to eq("<strong>{$0}</strong>")
26
-
27
- expect(@app.feature_enabled?(:language_cases)).to be_truthy
28
- expect(@app.feature_enabled?(:language_flags)).to be_truthy
29
- end
30
-
31
- it "loads application language" do
32
- expect(@app.languages.size).to eq(14)
33
-
34
- russian = @app.language('ru')
35
- expect(russian.locale).to eq('ru')
36
- expect(russian.contexts.keys.size).to eq(6)
37
- expect(russian.contexts.keys).to eq(["date", "gender", "genders", "list", "number", "value"])
38
- end
39
-
40
- it "should reset translations" do
41
- @app.reset_translation_cache
42
- expect(@app.translation_keys).to eq({})
43
- end
44
-
45
- it "should reset translations" do
46
- @app.register_missing_key(Tr8n::TranslationKey.new(:application => @app, :label => "Hello"), Tr8n::Source.new(:key => "test"))
47
- end
48
-
49
- end
50
-
51
-
52
- end
data/spec/base_spec.rb DELETED
@@ -1,19 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Tr8n::Base do
6
- describe "hash value method" do
7
- it "must return correct values" do
8
- expect(Tr8n::Base.hash_value({"a" => "b"}, "a")).to eq("b")
9
- expect(Tr8n::Base.hash_value({:a => "b"}, "a")).to eq("b")
10
- expect(Tr8n::Base.hash_value({:a => "b"}, :a)).to eq("b")
11
- expect(Tr8n::Base.hash_value({"a" => "b"}, :a)).to eq("b")
12
-
13
- expect(Tr8n::Base.hash_value({"a" => {:b => "c"}}, "a.b")).to eq("c")
14
- expect(Tr8n::Base.hash_value({:a => {:b => "c"}}, "a.b")).to eq("c")
15
- expect(Tr8n::Base.hash_value({:a => {:b => "c"}}, "a.d")).to be_nil
16
- expect(Tr8n::Base.hash_value({:a => {:b => {:c => :d}}}, "a.b.c")).to eq(:d)
17
- end
18
- end
19
- end
@@ -1,32 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Tr8n::CacheAdapters::File do
6
- describe "#configuration" do
7
- it "provides correct values" do
8
-
9
- Tr8n.with_config_settings do |config|
10
-
11
- config.cache = {
12
- :path => "./cache"
13
- }
14
-
15
- c = Tr8n::CacheAdapters::File.new
16
-
17
- expect(c.class.cache_path).to eq("./cache/files/current")
18
-
19
- expect(c.class.file_name("test_key")).to eq("test_key.json")
20
- expect(c.class.file_name("test/key")).to eq("test-key.json")
21
- expect(c.class.file_path("test/key")).to eq("./cache/files/current/test-key.json")
22
-
23
- c.store("a", "b")
24
- c.delete("a")
25
- c.clear()
26
-
27
- expect(c.exist?("some_new_key")).to be_falsey
28
- end
29
-
30
- end
31
- end
32
- end
@@ -1,15 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Tr8n::CacheAdapters::Memcache do
6
- describe "#configuration" do
7
- it "provides correct values" do
8
-
9
- Tr8n.with_config_settings do |config|
10
-
11
- end
12
-
13
- end
14
- end
15
- end
@@ -1,30 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Tr8nCore::Generators::Cache::File do
6
- describe "#configuration" do
7
- it "provides correct values" do
8
-
9
- Tr8n.with_config_settings do |config|
10
- Tr8n.session.application = init_application
11
-
12
- config.cache = {
13
- :path => "./cache"
14
- }
15
-
16
- #g = Tr8nCore::Generators::Cache::File.new
17
- #g.started_at = Time.new(2014, 01, 01, 10, 11, 12)
18
- #expect(g.cache_path).to eq("./cache/files/tr8n_default_2014_01_01_10_11_12")
19
- #expect(g.symlink_path).to eq("./cache/files/current")
20
- #
21
- #expect(g.file_path("test_key")).to eq("./cache/files/tr8n_default_2014_01_01_10_11_12/test_key.json")
22
- #
23
- #g.cache("test_key", {"a" => "b"})
24
- #expect(File.exists?(g.file_path("test_key"))).to be_truthy
25
-
26
- end
27
-
28
- end
29
- end
30
- end
data/spec/config_spec.rb DELETED
@@ -1,32 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Tr8n::Config do
6
- describe "loading defaults" do
7
- it "should load correct values" do
8
- expect(Tr8n.config.logger[:enabled]).to be_falsey
9
- expect(Tr8n.config.enabled?).to be_truthy
10
- expect(Tr8n.config.default_locale).to eq("en-US")
11
- expect(Tr8n.config.cache[:enabled]).to be_falsey
12
- expect(Tr8n.config.logger[:path]).to eq("./log/tr8n.log")
13
- expect(Tr8n.config.cache[:adapter]).to eq("memcache")
14
- end
15
- end
16
-
17
- describe "configuring settings" do
18
- it "should preserve changes" do
19
- expect(Tr8n.config.default_locale).to eq("en-US")
20
- Tr8n.configure do |config|
21
- config.default_locale= 'ru'
22
- end
23
- expect(Tr8n.config.default_locale).to eq("ru")
24
-
25
- Tr8n.configure do |config|
26
- config.default_locale= 'en-US'
27
- end
28
- expect(Tr8n.config.default_locale).to eq("en-US")
29
- end
30
- end
31
-
32
- end
@@ -1,12 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Tr8n::Decorators::Default do
6
- describe "#initialize" do
7
- it "sets language attributes" do
8
- # decorator = Tr8n::Decorators::Default.new(:language => "a")
9
- # pp decorator
10
- end
11
- end
12
- end
@@ -1,14 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Tr8n::Decorators::Base do
6
- describe "creating new decorator" do
7
- it "must return a decorator specified in the config file" do
8
- decor = Tr8n::Decorators::Base.decorator
9
- expect(decor.class.name).to eq("Tr8n::Decorators::Default")
10
-
11
- expect{Tr8n::Decorators::Base.new.decorate(nil, nil, nil, nil)}.to raise_error(Tr8n::Exception)
12
- end
13
- end
14
- end
@@ -1,12 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Tr8n::Decorators::Default do
6
- describe "default decorator" do
7
- it "should return label as is without applying decorations" do
8
- decor = Tr8n::Decorators::Default.new
9
- expect(decor.decorate("Hello World", nil, nil, nil)).to eq("Hello World")
10
- end
11
- end
12
- end
@@ -1,50 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Tr8n::Decorators::Html do
6
- describe "html decorator" do
7
- it "should decorate the label according to the options" do
8
- decor = Tr8n::Decorators::Html.new
9
-
10
- app = init_application
11
- en = app.language('en-US')
12
- ru = app.language('ru')
13
- es = app.language('es')
14
-
15
- tkey = Tr8n::TranslationKey.new({
16
- :label => "Hello World",
17
- :application => app,
18
- :locale => 'en-US'
19
- })
20
-
21
- expect(decor.decorate("Hello World", en, en, tkey, {:skip_decorations => true})).to eq("Hello World")
22
- Tr8n.session.current_translator = nil
23
- expect(decor.decorate("Hello World", en, en, tkey)).to eq("Hello World")
24
-
25
- Tr8n.session.current_translator = Tr8n::Translator.new
26
- expect(decor.decorate("Hello World", en, en, tkey)).to eq("Hello World")
27
-
28
- Tr8n.session.current_translator = Tr8n::Translator.new
29
- Tr8n.session.current_translator.inline = false
30
- expect(decor.decorate("Hello World", en, en, tkey)).to eq("Hello World")
31
- Tr8n.session.current_translator.inline = true
32
- expect(decor.decorate("Hello World", en, en, tkey)).to eq("Hello World")
33
- expect(decor.decorate("Privet Mir", ru, ru, tkey)).to eq("<span class='tr8n_pending'>Privet Mir</span>")
34
- expect(decor.decorate("Privet Mir", ru, ru, tkey, {:use_div => true})).to eq("<div class='tr8n_pending'>Privet Mir</div>")
35
-
36
- tkey.id = 5
37
- expect(decor.decorate("Hello World", en, ru, tkey)).to eq("<span class='tr8n_translatable tr8n_not_translated' data-translation_key_id='5'>Hello World</span>")
38
- expect(decor.decorate("Privet Mir", ru, ru, tkey)).to eq("<span class='tr8n_translatable tr8n_translated' data-translation_key_id='5'>Privet Mir</span>")
39
-
40
- expect(decor.decorate("Hola Mir", es, ru, tkey)).to eq("<span class='tr8n_translatable tr8n_fallback' data-translation_key_id='5'>Hola Mir</span>")
41
-
42
- tkey.locked = true
43
- expect(decor.decorate("Privet Mir", ru, ru, tkey)).to eq("Privet Mir")
44
-
45
- Tr8n.session.current_translator.features = {"show_locked_keys" => true}
46
- Tr8n.session.current_translator.manager = true
47
- expect(decor.decorate("Privet Mir", ru, ru, tkey)).to eq("<span class='tr8n_translatable tr8n_locked' data-translation_key_id='5'>Privet Mir</span>")
48
- end
49
- end
50
- end
@@ -1,12 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Array do
6
- it "must provide correct attributes" do
7
- expect([].tr8n_translated?).to be_nil
8
-
9
- a = [].tr8n_translated
10
- expect(a.tr8n_translated?).to be_truthy
11
- end
12
- end
@@ -1,15 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Hash do
6
- it "must provide correct attributes" do
7
- h = {}.tr8n_translated
8
- expect(h.tr8n_translated?).to be_truthy
9
-
10
- h1 = {"a" => 100, "b" => 200, "c" => {"c1" => 12, "c2" => 14}}
11
- h2 = {"b" => 254, "c" => 300, "c" => {"c1" => 16, "c3" => 94}}
12
- expect(h1.rmerge(h2)).to eq({"a" => 100, "b" => 254, "c" => {"c1" => 16, "c2" => 14, "c3" => 94}})
13
- expect(h1.rmerge!(h2)).to eq({"a" => 100, "b" => 254, "c" => {"c1" => 16, "c2" => 14, "c3" => 94}})
14
- end
15
- end
@@ -1,10 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe String do
6
- it "must provide correct attributes" do
7
- s = "".tr8n_translated
8
- expect(s.tr8n_translated?).to be_truthy
9
- end
10
- end
@@ -1,112 +0,0 @@
1
- {
2
- "key":"default",
3
- "name":"Tr8n Translation Service",
4
- "description":"",
5
- "default_locale":"en-US",
6
- "languages":[
7
- {
8
- "locale":"da",
9
- "name":"Danske",
10
- "english_name":"Danish",
11
- "native_name":"Danske",
12
- "flag_url":"http://localhost:3000/media/22/6/63/49/2d1982f07d7e7c2b0.png"
13
- },
14
- {
15
- "locale":"nl",
16
- "name":"Flemish",
17
- "english_name":"Dutch",
18
- "native_name":"Flemish",
19
- "flag_url":"http://localhost:3000/media/5/2/45/67/0915799fae203af51.png"
20
- },
21
- {
22
- "locale":"en-US",
23
- "name":"English (US)",
24
- "english_name":"English (US)",
25
- "native_name":"English (US)",
26
- "flag_url":"http://localhost:3000/media/57/23/20/19/cf185dab9566b718e.png"
27
- },
28
- {
29
- "locale":"et",
30
- "name":"Eesti",
31
- "english_name":"Estonian",
32
- "native_name":"Eesti",
33
- "flag_url":"http://localhost:3000/media/71/5/89/63/5f40bc0a610274b28.png"
34
- },
35
- {
36
- "locale":"fr",
37
- "name":"Français",
38
- "english_name":"French",
39
- "native_name":"Français",
40
- "flag_url":"http://localhost:3000/media/22/5/6/87/e52809adf86d81215.png"
41
- },
42
- {
43
- "locale":"de",
44
- "name":"Deutsch",
45
- "english_name":"German",
46
- "native_name":"Deutsch",
47
- "flag_url":"http://localhost:3000/media/5/11/98/10/bc99d7cc527101e6d.png"
48
- },
49
- {
50
- "locale":"he",
51
- "name":"עברית",
52
- "english_name":"Hebrew",
53
- "native_name":"עברית",
54
- "right_to_left":true,
55
- "flag_url":"http://localhost:3000/media/42/62/44/29/8720a6f403329ec30.png"
56
- },
57
- {
58
- "locale":"no",
59
- "name":"Norsk (bokmål)",
60
- "english_name":"Norwegian",
61
- "native_name":"Norsk (bokmål)",
62
- "flag_url":"http://localhost:3000/media/23/60/15/78/a3c7c6e81482ffa63.png"
63
- },
64
- {
65
- "locale":"ru",
66
- "name":"Русский",
67
- "english_name":"Russian",
68
- "native_name":"Русский",
69
- "flag_url":"http://localhost:3000/media/54/39/11/49/cb768f030bde97f97.png"
70
- },
71
- {
72
- "locale":"es",
73
- "name":"Español",
74
- "english_name":"Spanish",
75
- "native_name":"Español",
76
- "flag_url":"http://localhost:3000/media/52/47/56/19/6594b760c14053ef4.png"
77
- },
78
- {
79
- "locale":"sv",
80
- "name":"Svenska",
81
- "english_name":"Swedish",
82
- "native_name":"Svenska",
83
- "flag_url":"http://localhost:3000/media/38/75/53/53/89753a508d8179af1.png"
84
- }
85
- ],
86
- "threshold":1,
87
- "translator_level":1,
88
- "features":{
89
- "inline_translations":true,
90
- "google_suggestions":true,
91
- "decorations":true,
92
- "shortcuts":true,
93
- "context_rules":true,
94
- "language_cases":true,
95
- "javascript_sdk":false,
96
- "glossary":true,
97
- "forum":true,
98
- "awards":true,
99
- "admin_translations":true,
100
- "open_registration":false,
101
- "language_flags":true
102
- },
103
- "tokens":{
104
- "data":{
105
- "nbsp":"&nbsp;"
106
- },
107
- "decoration":{
108
- "link":"<a href=\"{$href}\">{$0}</a>",
109
- "strong":"<strong>{$0}</strong>"
110
- }
111
- }
112
- }