wovnrb 0.2.12 → 0.2.13
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.
- checksums.yaml +4 -4
- data/lib/wovnrb/html_replacers/input_replacer.rb +27 -0
- data/lib/wovnrb/lang.rb +2 -0
- data/lib/wovnrb/version.rb +1 -1
- data/lib/wovnrb.rb +1 -0
- data/test/lib/headers_test.rb +3 -3
- data/test/lib/html_replacers/image_replacer_test.rb +3 -3
- data/test/lib/html_replacers/input_replacer_test.rb +103 -0
- data/test/lib/html_replacers/text_replacer_test.rb +1 -1
- data/test/lib/lang_test.rb +34 -33
- data/test/lib/text_caches/memory_cache_test.rb +3 -3
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7a5d23716e7d22fccb8f9d0b06fff9dc8294971
|
4
|
+
data.tar.gz: 4cc426edd9f14e9d9a279341511624b0de5f0814
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2a3c450d18e28a21cce41b283bbab25f6ddb47b15cf176fb7338b14d3f4219c39b34d5764a7bb58f16e19eb64ec1a867369f8069f0aeb4e2b498153793a1a41
|
7
|
+
data.tar.gz: a890117992550bcd36f389771e6ebff1fbc387e80af682ef6720744825784a07da6106f20a57e209e33e29d1f7f1bd5988f35bb6cb433cbfba351c4024ef7056
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Wovnrb
|
2
|
+
class InputReplacer < ReplacerBase
|
3
|
+
def initialize(text_index)
|
4
|
+
@text_index = text_index
|
5
|
+
end
|
6
|
+
|
7
|
+
def replace(dom, lang)
|
8
|
+
dom.xpath('//input').select { |node|
|
9
|
+
next if wovn_ignore?(node)
|
10
|
+
(node.get_attribute('value') &&
|
11
|
+
node.get_attribute('value') != '' &&
|
12
|
+
node.get_attribute('type') &&
|
13
|
+
node.get_attribute('type') != 'text' &&
|
14
|
+
node.get_attribute('type') != 'hidden' &&
|
15
|
+
node.get_attribute('type') != 'password' &&
|
16
|
+
node.get_attribute('type') != 'url' &&
|
17
|
+
node.get_attribute('type') != 'search')
|
18
|
+
}.each do |node|
|
19
|
+
node_value = node.get_attribute('value').strip
|
20
|
+
# shouldn't need size check, but for now...
|
21
|
+
if @text_index[node_value] && @text_index[node_value][lang.lang_code] && @text_index[node_value][lang.lang_code].size > 0
|
22
|
+
node.set_attribute('value', replace_text(node.get_attribute('value'), @text_index[node_value][lang.lang_code][0]['data']))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/wovnrb/lang.rb
CHANGED
@@ -20,6 +20,7 @@ module Wovnrb
|
|
20
20
|
'ja' => {name: '日本語', code: 'ja', en: 'Japanese'},
|
21
21
|
'ko' => {name: '한국어', code: 'ko', en: 'Korean'},
|
22
22
|
'ms' => {name: 'Bahasa Melayu', code: 'ms', en: 'Malay'},
|
23
|
+
'my' => { name: 'ဗမာစာ', code: 'my', en: 'Burmese' },
|
23
24
|
'no' => {name: 'Norsk', code: 'no', en: 'Norwegian'},
|
24
25
|
'pl' => {name: 'Polski', code: 'pl', en: 'Polish'},
|
25
26
|
'pt' => {name: 'Português', code: 'pt', en: 'Portuguese'},
|
@@ -175,6 +176,7 @@ module Wovnrb
|
|
175
176
|
|
176
177
|
replacers << TextReplacer.new(text_index)
|
177
178
|
replacers << MetaReplacer.new(text_index)
|
179
|
+
replacers << InputReplacer.new(text_index)
|
178
180
|
replacers << ImageReplacer.new(url, text_index, src_index, img_src_prefix)
|
179
181
|
replacers << ScriptReplacer.new(store)
|
180
182
|
|
data/lib/wovnrb/version.rb
CHANGED
data/lib/wovnrb.rb
CHANGED
@@ -10,6 +10,7 @@ require 'wovnrb/html_replacers/replacer_base'
|
|
10
10
|
require 'wovnrb/html_replacers/link_replacer'
|
11
11
|
require 'wovnrb/html_replacers/text_replacer'
|
12
12
|
require 'wovnrb/html_replacers/meta_replacer'
|
13
|
+
require 'wovnrb/html_replacers/input_replacer'
|
13
14
|
require 'wovnrb/html_replacers/image_replacer'
|
14
15
|
require 'wovnrb/html_replacers/script_replacer'
|
15
16
|
require 'wovnrb/railtie' if defined?(Rails)
|
data/test/lib/headers_test.rb
CHANGED
@@ -5917,7 +5917,7 @@ class HeadersTest < Minitest::Test
|
|
5917
5917
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings)
|
5918
5918
|
|
5919
5919
|
keys = Wovnrb::Lang::LANG.keys
|
5920
|
-
assert_equal(
|
5920
|
+
assert_equal(29, keys.size)
|
5921
5921
|
|
5922
5922
|
for key in keys
|
5923
5923
|
uri_without_scheme = h.remove_lang("wovn.io/#{key}", key)
|
@@ -5952,7 +5952,7 @@ class HeadersTest < Minitest::Test
|
|
5952
5952
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'query'))
|
5953
5953
|
|
5954
5954
|
keys = Wovnrb::Lang::LANG.keys
|
5955
|
-
assert_equal(
|
5955
|
+
assert_equal(29, keys.size)
|
5956
5956
|
|
5957
5957
|
for key in keys
|
5958
5958
|
uri_without_scheme = h.remove_lang("wovn.io/?wovn=#{key}", key)
|
@@ -5987,7 +5987,7 @@ class HeadersTest < Minitest::Test
|
|
5987
5987
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'subdomain'))
|
5988
5988
|
|
5989
5989
|
keys = Wovnrb::Lang::LANG.keys
|
5990
|
-
assert_equal(
|
5990
|
+
assert_equal(29, keys.size)
|
5991
5991
|
|
5992
5992
|
for key in keys
|
5993
5993
|
uri_without_scheme = h.remove_lang("#{key.downcase}.wovn.io/", key)
|
@@ -45,7 +45,7 @@ module Wovnrb
|
|
45
45
|
|
46
46
|
img = dom.xpath('//img')[0]
|
47
47
|
assert_equal('http://test.com/ttt.img', img.get_attribute('src'))
|
48
|
-
|
48
|
+
assert_nil(img.previous)
|
49
49
|
end
|
50
50
|
|
51
51
|
def test_replace_root_path
|
@@ -65,7 +65,7 @@ module Wovnrb
|
|
65
65
|
|
66
66
|
img = dom.xpath('//img')[0]
|
67
67
|
assert_equal('http://test.com/ttt.img', img.get_attribute('src'))
|
68
|
-
|
68
|
+
assert_nil(img.previous)
|
69
69
|
end
|
70
70
|
|
71
71
|
def test_replace_absolute_path
|
@@ -85,7 +85,7 @@ module Wovnrb
|
|
85
85
|
|
86
86
|
img = dom.xpath('//img')[0]
|
87
87
|
assert_equal('http://test.com/ttt.img', img.get_attribute('src'))
|
88
|
-
|
88
|
+
assert_nil(img.previous)
|
89
89
|
end
|
90
90
|
end
|
91
91
|
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
# -*- encoding: UTF-8 -*-
|
2
|
+
require 'test_helper'
|
3
|
+
require 'webmock/minitest'
|
4
|
+
|
5
|
+
module Wovnrb
|
6
|
+
class InputReplacerTest < WovnMiniTest
|
7
|
+
def test_replace_submit_value
|
8
|
+
replacer = InputReplacer.new({
|
9
|
+
'Hello' => {'ja' => [{'data' => 'こんにちは'}]}
|
10
|
+
})
|
11
|
+
|
12
|
+
dom = Wovnrb.get_dom('<input type="submit" value="Hello">')
|
13
|
+
replacer.replace(dom, Lang.new('ja'))
|
14
|
+
|
15
|
+
content = dom.xpath('//input')[0].get_attribute('value')
|
16
|
+
assert_equal('こんにちは', content)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_dont_replace_empty_submit_value
|
20
|
+
replacer = InputReplacer.new({
|
21
|
+
'Hello' => {'ja' => [{'data' => 'こんにちは'}]}
|
22
|
+
})
|
23
|
+
|
24
|
+
dom = Wovnrb.get_dom('<input type="submit" value="">')
|
25
|
+
replacer.replace(dom, Lang.new('ja'))
|
26
|
+
|
27
|
+
content = dom.xpath('//input')[0].get_attribute('value')
|
28
|
+
assert_equal('', content)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_dont_replace_type_text_value
|
32
|
+
replacer = InputReplacer.new({
|
33
|
+
'Hello' => {'ja' => [{'data' => 'こんにちは'}]}
|
34
|
+
})
|
35
|
+
|
36
|
+
dom = Wovnrb.get_dom('<input type="text" value="Hello">')
|
37
|
+
replacer.replace(dom, Lang.new('ja'))
|
38
|
+
|
39
|
+
content = dom.xpath('//input')[0].get_attribute('value')
|
40
|
+
assert_equal('Hello', content)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_dont_replace_type_search_value
|
44
|
+
replacer = InputReplacer.new({
|
45
|
+
'Hello' => {'ja' => [{'data' => 'こんにちは'}]}
|
46
|
+
})
|
47
|
+
|
48
|
+
dom = Wovnrb.get_dom('<input type="search" value="Hello">')
|
49
|
+
replacer.replace(dom, Lang.new('ja'))
|
50
|
+
|
51
|
+
content = dom.xpath('//input')[0].get_attribute('value')
|
52
|
+
assert_equal('Hello', content)
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_dont_replace_type_hidden_value
|
56
|
+
replacer = InputReplacer.new({
|
57
|
+
'Hello' => {'ja' => [{'data' => 'こんにちは'}]}
|
58
|
+
})
|
59
|
+
|
60
|
+
dom = Wovnrb.get_dom('<input type="hidden" value="Hello">')
|
61
|
+
replacer.replace(dom, Lang.new('ja'))
|
62
|
+
|
63
|
+
content = dom.xpath('//input')[0].get_attribute('value')
|
64
|
+
assert_equal('Hello', content)
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_dont_replace_type_password_value
|
68
|
+
replacer = InputReplacer.new({
|
69
|
+
'Hello' => {'ja' => [{'data' => 'こんにちは'}]}
|
70
|
+
})
|
71
|
+
|
72
|
+
dom = Wovnrb.get_dom('<input type="password" value="Hello">')
|
73
|
+
replacer.replace(dom, Lang.new('ja'))
|
74
|
+
|
75
|
+
content = dom.xpath('//input')[0].get_attribute('value')
|
76
|
+
assert_equal('Hello', content)
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_dont_replace_type_url_value
|
80
|
+
replacer = InputReplacer.new({
|
81
|
+
'Hello' => {'ja' => [{'data' => 'こんにちは'}]}
|
82
|
+
})
|
83
|
+
|
84
|
+
dom = Wovnrb.get_dom('<input type="url" value="Hello">')
|
85
|
+
replacer.replace(dom, Lang.new('ja'))
|
86
|
+
|
87
|
+
content = dom.xpath('//input')[0].get_attribute('value')
|
88
|
+
assert_equal('Hello', content)
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_dont_replace_no_type_value
|
92
|
+
replacer = InputReplacer.new({
|
93
|
+
'Hello' => {'ja' => [{'data' => 'こんにちは'}]}
|
94
|
+
})
|
95
|
+
|
96
|
+
dom = Wovnrb.get_dom('<input value="Hello">')
|
97
|
+
replacer.replace(dom, Lang.new('ja'))
|
98
|
+
|
99
|
+
content = dom.xpath('//input')[0].get_attribute('value')
|
100
|
+
assert_equal('Hello', content)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
data/test/lib/lang_test.rb
CHANGED
@@ -10,7 +10,7 @@ module Wovnrb
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_langs_length
|
13
|
-
assert_equal(
|
13
|
+
assert_equal(29, Wovnrb::Lang::LANG.length)
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_keys_exist
|
@@ -23,34 +23,35 @@ module Wovnrb
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_iso_639_1_normalization
|
26
|
-
assert_equal('ar', Lang::iso_639_1_normalization('ar'))
|
27
|
-
assert_equal('bg', Lang::iso_639_1_normalization('bg'))
|
28
|
-
assert_equal('zh-Hans', Lang::iso_639_1_normalization('zh-CHS'))
|
29
|
-
assert_equal('zh-Hant', Lang::iso_639_1_normalization('zh-CHT'))
|
30
|
-
assert_equal('da', Lang::iso_639_1_normalization('da'))
|
31
|
-
assert_equal('nl', Lang::iso_639_1_normalization('nl'))
|
32
|
-
assert_equal('en', Lang::iso_639_1_normalization('en'))
|
33
|
-
assert_equal('fi', Lang::iso_639_1_normalization('fi'))
|
34
|
-
assert_equal('fr', Lang::iso_639_1_normalization('fr'))
|
35
|
-
assert_equal('de', Lang::iso_639_1_normalization('de'))
|
36
|
-
assert_equal('el', Lang::iso_639_1_normalization('el'))
|
37
|
-
assert_equal('he', Lang::iso_639_1_normalization('he'))
|
38
|
-
assert_equal('id', Lang::iso_639_1_normalization('id'))
|
39
|
-
assert_equal('it', Lang::iso_639_1_normalization('it'))
|
40
|
-
assert_equal('ja', Lang::iso_639_1_normalization('ja'))
|
41
|
-
assert_equal('ko', Lang::iso_639_1_normalization('ko'))
|
42
|
-
assert_equal('ms', Lang::iso_639_1_normalization('ms'))
|
43
|
-
assert_equal('
|
44
|
-
assert_equal('
|
45
|
-
assert_equal('
|
46
|
-
assert_equal('
|
47
|
-
assert_equal('
|
48
|
-
assert_equal('
|
49
|
-
assert_equal('
|
50
|
-
assert_equal('
|
51
|
-
assert_equal('
|
52
|
-
assert_equal('
|
53
|
-
assert_equal('
|
26
|
+
assert_equal('ar', Lang::iso_639_1_normalization('ar'))
|
27
|
+
assert_equal('bg', Lang::iso_639_1_normalization('bg'))
|
28
|
+
assert_equal('zh-Hans', Lang::iso_639_1_normalization('zh-CHS'))
|
29
|
+
assert_equal('zh-Hant', Lang::iso_639_1_normalization('zh-CHT'))
|
30
|
+
assert_equal('da', Lang::iso_639_1_normalization('da'))
|
31
|
+
assert_equal('nl', Lang::iso_639_1_normalization('nl'))
|
32
|
+
assert_equal('en', Lang::iso_639_1_normalization('en'))
|
33
|
+
assert_equal('fi', Lang::iso_639_1_normalization('fi'))
|
34
|
+
assert_equal('fr', Lang::iso_639_1_normalization('fr'))
|
35
|
+
assert_equal('de', Lang::iso_639_1_normalization('de'))
|
36
|
+
assert_equal('el', Lang::iso_639_1_normalization('el'))
|
37
|
+
assert_equal('he', Lang::iso_639_1_normalization('he'))
|
38
|
+
assert_equal('id', Lang::iso_639_1_normalization('id'))
|
39
|
+
assert_equal('it', Lang::iso_639_1_normalization('it'))
|
40
|
+
assert_equal('ja', Lang::iso_639_1_normalization('ja'))
|
41
|
+
assert_equal('ko', Lang::iso_639_1_normalization('ko'))
|
42
|
+
assert_equal('ms', Lang::iso_639_1_normalization('ms'))
|
43
|
+
assert_equal('my', Lang::iso_639_1_normalization('my'))
|
44
|
+
assert_equal('no', Lang::iso_639_1_normalization('no'))
|
45
|
+
assert_equal('pl', Lang::iso_639_1_normalization('pl'))
|
46
|
+
assert_equal('pt', Lang::iso_639_1_normalization('pt'))
|
47
|
+
assert_equal('ru', Lang::iso_639_1_normalization('ru'))
|
48
|
+
assert_equal('es', Lang::iso_639_1_normalization('es'))
|
49
|
+
assert_equal('sv', Lang::iso_639_1_normalization('sv'))
|
50
|
+
assert_equal('th', Lang::iso_639_1_normalization('th'))
|
51
|
+
assert_equal('hi', Lang::iso_639_1_normalization('hi'))
|
52
|
+
assert_equal('tr', Lang::iso_639_1_normalization('tr'))
|
53
|
+
assert_equal('uk', Lang::iso_639_1_normalization('uk'))
|
54
|
+
assert_equal('vi', Lang::iso_639_1_normalization('vi'))
|
54
55
|
end
|
55
56
|
|
56
57
|
def test_get_code_with_valid_code
|
@@ -70,15 +71,15 @@ module Wovnrb
|
|
70
71
|
end
|
71
72
|
|
72
73
|
def test_get_code_with_invalid_name
|
73
|
-
|
74
|
+
assert_nil(Wovnrb::Lang.get_code('WOVN4LYFE'))
|
74
75
|
end
|
75
76
|
|
76
77
|
def test_get_code_with_empty_string
|
77
|
-
|
78
|
+
assert_nil(Wovnrb::Lang.get_code(''))
|
78
79
|
end
|
79
80
|
|
80
81
|
def test_get_code_with_nil
|
81
|
-
|
82
|
+
assert_nil(Wovnrb::Lang.get_code(nil))
|
82
83
|
end
|
83
84
|
|
84
85
|
def test_add_lang_code
|
@@ -204,7 +205,7 @@ module Wovnrb
|
|
204
205
|
def test_add_lang_code_nil_href
|
205
206
|
lang = Lang.new('en')
|
206
207
|
h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://favy.tips'), Wovnrb.get_settings)
|
207
|
-
|
208
|
+
assert_nil(lang.add_lang_code(nil,'path', h))
|
208
209
|
end
|
209
210
|
def test_add_lang_code_absolute_different_host
|
210
211
|
lang = Lang.new('fr')
|
@@ -62,7 +62,7 @@ class MemoryCacheTest < Minitest::Test
|
|
62
62
|
|
63
63
|
def test_get_without_cache
|
64
64
|
memory = Wovnrb::MemoryCache.new({})
|
65
|
-
|
65
|
+
assert_nil(memory.get('a'))
|
66
66
|
|
67
67
|
end
|
68
68
|
|
@@ -70,7 +70,7 @@ class MemoryCacheTest < Minitest::Test
|
|
70
70
|
memory = Wovnrb::MemoryCache.new({})
|
71
71
|
memory.put('a', 'b')
|
72
72
|
Timecop.travel(1.day.since)
|
73
|
-
|
73
|
+
assert_nil(memory.get('a'))
|
74
74
|
end
|
75
75
|
|
76
76
|
def test_get_with_over_memory
|
@@ -80,7 +80,7 @@ class MemoryCacheTest < Minitest::Test
|
|
80
80
|
})
|
81
81
|
memory.put('a', 'c')
|
82
82
|
memory.put('b', 'd')
|
83
|
-
|
83
|
+
assert_nil(memory.get('a'))
|
84
84
|
assert_equal('d', memory.get('b'))
|
85
85
|
end
|
86
86
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wovnrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Sandford
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-03-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogumbo
|
@@ -338,6 +338,7 @@ files:
|
|
338
338
|
- lib/wovnrb/api_data.rb
|
339
339
|
- lib/wovnrb/headers.rb
|
340
340
|
- lib/wovnrb/html_replacers/image_replacer.rb
|
341
|
+
- lib/wovnrb/html_replacers/input_replacer.rb
|
341
342
|
- lib/wovnrb/html_replacers/link_replacer.rb
|
342
343
|
- lib/wovnrb/html_replacers/meta_replacer.rb
|
343
344
|
- lib/wovnrb/html_replacers/replacer_base.rb
|
@@ -357,6 +358,7 @@ files:
|
|
357
358
|
- test/lib/api_data_test.rb
|
358
359
|
- test/lib/headers_test.rb
|
359
360
|
- test/lib/html_replacers/image_replacer_test.rb
|
361
|
+
- test/lib/html_replacers/input_replacer_test.rb
|
360
362
|
- test/lib/html_replacers/link_replacer_test.rb
|
361
363
|
- test/lib/html_replacers/meta_replacer_test.rb
|
362
364
|
- test/lib/html_replacers/replacer_base_test.rb
|
@@ -404,6 +406,7 @@ test_files:
|
|
404
406
|
- test/lib/api_data_test.rb
|
405
407
|
- test/lib/headers_test.rb
|
406
408
|
- test/lib/html_replacers/image_replacer_test.rb
|
409
|
+
- test/lib/html_replacers/input_replacer_test.rb
|
407
410
|
- test/lib/html_replacers/link_replacer_test.rb
|
408
411
|
- test/lib/html_replacers/meta_replacer_test.rb
|
409
412
|
- test/lib/html_replacers/replacer_base_test.rb
|