wovnrb 0.2.14 → 0.2.15
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/image_replacer.rb +21 -4
- data/lib/wovnrb/lang.rb +3 -1
- data/lib/wovnrb/store.rb +2 -0
- data/lib/wovnrb/version.rb +1 -1
- data/test/lib/headers_test.rb +6 -6
- data/test/lib/html_replacers/image_replacer_test.rb +39 -4
- data/test/lib/lang_test.rb +2 -1
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c527a83e2c6ab94014f55fb166f516fd5bf56941
|
|
4
|
+
data.tar.gz: 767806ed70c4ae6a32fd75e17dd7518417b7b51f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 00208abab45da12764dbb0eed8914fe69996de815a0f1e5f3e762924f48410419df89068eef4aea4e5a9839d0554134782e5c462e3e4e287295f24f3ae08ca76
|
|
7
|
+
data.tar.gz: ce166e7836b300fba7ea2e8ac02f815118f558e9fb6ed9beace3fa7d6ea810b83fb75c53662917cc2116af0037df00f1ce3091c53ecfeee699a6abc08ec2df9f
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
module Wovnrb
|
|
2
2
|
class ImageReplacer < ReplacerBase
|
|
3
|
-
def initialize(url, text_index, src_index, img_src_prefix)
|
|
3
|
+
def initialize(url, text_index, src_index, img_src_prefix, host_aliases)
|
|
4
4
|
@url = url
|
|
5
5
|
@text_index = text_index
|
|
6
6
|
@src_index = src_index
|
|
7
7
|
@img_src_prefix = img_src_prefix
|
|
8
|
+
@host_aliases = host_aliases
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
def replace(dom, lang)
|
|
@@ -26,9 +27,18 @@ module Wovnrb
|
|
|
26
27
|
end
|
|
27
28
|
end
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
unless replace_src_if_match(node, lang, src)
|
|
31
|
+
# host name exclude port number
|
|
32
|
+
host_match = %r!://([^/:]+)!.match(src)
|
|
33
|
+
host_name = host_match ? host_match[1] : ''
|
|
34
|
+
|
|
35
|
+
# replace image if match host alias
|
|
36
|
+
if host_match and @host_aliases.include?(host_name)
|
|
37
|
+
@host_aliases.find do |host_alias|
|
|
38
|
+
src_alias = src.gsub(host_name, host_alias)
|
|
39
|
+
replace_src_if_match(node, lang, src_alias)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
32
42
|
end
|
|
33
43
|
end
|
|
34
44
|
|
|
@@ -43,6 +53,13 @@ module Wovnrb
|
|
|
43
53
|
end
|
|
44
54
|
|
|
45
55
|
private
|
|
56
|
+
def replace_src_if_match(node, lang, src)
|
|
57
|
+
# shouldn't need size check, but for now...
|
|
58
|
+
if @src_index[src] && @src_index[src][lang.lang_code] && @src_index[src][lang.lang_code].size > 0
|
|
59
|
+
node.attribute('src').value = "#{@img_src_prefix}#{@src_index[src][lang.lang_code][0]['data']}"
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
46
63
|
def join_path(x, y)
|
|
47
64
|
separator = (x[-1] != '/' and y[0] != '/') ? '/' : ''
|
|
48
65
|
"#{x}#{separator}#{y}"
|
data/lib/wovnrb/lang.rb
CHANGED
|
@@ -21,6 +21,7 @@ module Wovnrb
|
|
|
21
21
|
'ko' => {name: '한국어', code: 'ko', en: 'Korean'},
|
|
22
22
|
'ms' => {name: 'Bahasa Melayu', code: 'ms', en: 'Malay'},
|
|
23
23
|
'my' => { name: 'ဗမာစာ', code: 'my', en: 'Burmese' },
|
|
24
|
+
'ne' => {name: 'नेपाली भाषा', code: 'ne', en: 'Nepali'},
|
|
24
25
|
'no' => {name: 'Norsk', code: 'no', en: 'Norwegian'},
|
|
25
26
|
'pl' => {name: 'Polski', code: 'pl', en: 'Polish'},
|
|
26
27
|
'pt' => {name: 'Português', code: 'pt', en: 'Portuguese'},
|
|
@@ -170,6 +171,7 @@ module Wovnrb
|
|
|
170
171
|
text_index = values['text_vals'] || {}
|
|
171
172
|
src_index = values['img_vals'] || {}
|
|
172
173
|
img_src_prefix = values['img_src_prefix'] || ''
|
|
174
|
+
host_aliases = values['host_aliases'] || []
|
|
173
175
|
|
|
174
176
|
replacers = []
|
|
175
177
|
# add lang code to anchors href if not default lang
|
|
@@ -181,7 +183,7 @@ module Wovnrb
|
|
|
181
183
|
replacers << TextReplacer.new(text_index)
|
|
182
184
|
replacers << MetaReplacer.new(text_index)
|
|
183
185
|
replacers << InputReplacer.new(text_index)
|
|
184
|
-
replacers << ImageReplacer.new(url, text_index, src_index, img_src_prefix)
|
|
186
|
+
replacers << ImageReplacer.new(url, text_index, src_index, img_src_prefix, host_aliases)
|
|
185
187
|
replacers << ScriptReplacer.new(store)
|
|
186
188
|
|
|
187
189
|
replacers.each do |replacer|
|
data/lib/wovnrb/store.rb
CHANGED
data/lib/wovnrb/version.rb
CHANGED
data/test/lib/headers_test.rb
CHANGED
|
@@ -5975,7 +5975,7 @@ module Wovnrb
|
|
|
5975
5975
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings)
|
|
5976
5976
|
|
|
5977
5977
|
keys = Wovnrb::Lang::LANG.keys
|
|
5978
|
-
assert_equal(
|
|
5978
|
+
assert_equal(30, keys.size)
|
|
5979
5979
|
|
|
5980
5980
|
for key in keys
|
|
5981
5981
|
uri_without_scheme = h.remove_lang("wovn.io/#{key}", key)
|
|
@@ -5989,7 +5989,7 @@ module Wovnrb
|
|
|
5989
5989
|
def test_remove_lang_path_with_nil_lang
|
|
5990
5990
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings)
|
|
5991
5991
|
keys = Wovnrb::Lang::LANG.keys
|
|
5992
|
-
assert_equal(
|
|
5992
|
+
assert_equal(30, keys.size)
|
|
5993
5993
|
|
|
5994
5994
|
uri_without_scheme = h.remove_lang('wovn.io', nil)
|
|
5995
5995
|
assert_equal('wovn.io', uri_without_scheme)
|
|
@@ -6012,7 +6012,7 @@ module Wovnrb
|
|
|
6012
6012
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'query'))
|
|
6013
6013
|
|
|
6014
6014
|
keys = Wovnrb::Lang::LANG.keys
|
|
6015
|
-
assert_equal(
|
|
6015
|
+
assert_equal(30, keys.size)
|
|
6016
6016
|
|
|
6017
6017
|
for key in keys
|
|
6018
6018
|
uri_without_scheme = h.remove_lang("wovn.io/?wovn=#{key}", key)
|
|
@@ -6026,7 +6026,7 @@ module Wovnrb
|
|
|
6026
6026
|
def test_remove_lang_query_with_nil_lang
|
|
6027
6027
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'query'))
|
|
6028
6028
|
keys = Wovnrb::Lang::LANG.keys
|
|
6029
|
-
assert_equal(
|
|
6029
|
+
assert_equal(30, keys.size)
|
|
6030
6030
|
|
|
6031
6031
|
uri_without_scheme = h.remove_lang('wovn.io', nil)
|
|
6032
6032
|
assert_equal('wovn.io', uri_without_scheme)
|
|
@@ -6049,7 +6049,7 @@ module Wovnrb
|
|
|
6049
6049
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'subdomain'))
|
|
6050
6050
|
|
|
6051
6051
|
keys = Wovnrb::Lang::LANG.keys
|
|
6052
|
-
assert_equal(
|
|
6052
|
+
assert_equal(30, keys.size)
|
|
6053
6053
|
|
|
6054
6054
|
for key in keys
|
|
6055
6055
|
uri_without_scheme = h.remove_lang("#{key.downcase}.wovn.io/", key)
|
|
@@ -6063,7 +6063,7 @@ module Wovnrb
|
|
|
6063
6063
|
def test_remove_lang_subdomain_with_nil_lang
|
|
6064
6064
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'subdomain'))
|
|
6065
6065
|
keys = Wovnrb::Lang::LANG.keys
|
|
6066
|
-
assert_equal(
|
|
6066
|
+
assert_equal(30, keys.size)
|
|
6067
6067
|
|
|
6068
6068
|
uri_without_scheme = h.remove_lang('wovn.io', nil)
|
|
6069
6069
|
assert_equal('wovn.io', uri_without_scheme)
|
|
@@ -17,7 +17,7 @@ module Wovnrb
|
|
|
17
17
|
'http://www.example.com/test.img' => {'ja' => [{'data' => 'http://test.com/ttt.img'}]}
|
|
18
18
|
}
|
|
19
19
|
img_src_prefix = 'prefix::'
|
|
20
|
-
replacer = ImageReplacer.new(url, text_index, src_index, img_src_prefix)
|
|
20
|
+
replacer = ImageReplacer.new(url, text_index, src_index, img_src_prefix, [])
|
|
21
21
|
|
|
22
22
|
dom = Wovnrb.get_dom('<img src="http://www.example.com/test.img" alt="Hello"')
|
|
23
23
|
replacer.replace(dom, Lang.new('ja'))
|
|
@@ -38,7 +38,7 @@ module Wovnrb
|
|
|
38
38
|
src_index = {
|
|
39
39
|
'http://www.example.com/hello/test.img' => {'ja' => [{'data' => 'http://test.com/ttt.img'}]}
|
|
40
40
|
}
|
|
41
|
-
replacer = ImageReplacer.new(url, text_index, src_index, '')
|
|
41
|
+
replacer = ImageReplacer.new(url, text_index, src_index, '', [])
|
|
42
42
|
|
|
43
43
|
dom = Wovnrb.get_dom('<img src="test.img"')
|
|
44
44
|
replacer.replace(dom, Lang.new('ja'))
|
|
@@ -58,7 +58,7 @@ module Wovnrb
|
|
|
58
58
|
src_index = {
|
|
59
59
|
'http://www.example.com/test.img' => {'ja' => [{'data' => 'http://test.com/ttt.img'}]}
|
|
60
60
|
}
|
|
61
|
-
replacer = ImageReplacer.new(url, text_index, src_index, '')
|
|
61
|
+
replacer = ImageReplacer.new(url, text_index, src_index, '', [])
|
|
62
62
|
|
|
63
63
|
dom = Wovnrb.get_dom('<img src="/test.img"')
|
|
64
64
|
replacer.replace(dom, Lang.new('ja'))
|
|
@@ -91,10 +91,45 @@ module Wovnrb
|
|
|
91
91
|
src_index = {
|
|
92
92
|
'http://www.test.com/test.img' => {'ja' => [{'data' => 'http://test.com/ttt.img'}]}
|
|
93
93
|
}
|
|
94
|
-
replacer = ImageReplacer.new(url, text_index, src_index, '')
|
|
94
|
+
replacer = ImageReplacer.new(url, text_index, src_index, '', [])
|
|
95
95
|
dom = Wovnrb.get_dom('<img src="http://www.test.com/test.img"')
|
|
96
96
|
replacer.replace(dom, Lang.new('ja'))
|
|
97
97
|
dom.xpath('//img')[0]
|
|
98
98
|
end
|
|
99
|
+
|
|
100
|
+
def test_replace_host_alias
|
|
101
|
+
url = {
|
|
102
|
+
:protocol => 'http',
|
|
103
|
+
:host => 'www.example.com',
|
|
104
|
+
:path => '/hello/'
|
|
105
|
+
}
|
|
106
|
+
src_index = {
|
|
107
|
+
'http://www.test.com/test.img' => {'ja' => [{'data' => 'http://test.com/ttt.img'}]}
|
|
108
|
+
}
|
|
109
|
+
path = '/test.img'
|
|
110
|
+
|
|
111
|
+
# no replace image if not exist host alias
|
|
112
|
+
img = img_dom_helper(url, src_index, path, [])
|
|
113
|
+
assert_equal('/test.img', img.get_attribute('src'))
|
|
114
|
+
img = img_dom_helper(url, src_index, path, ['www.test.com'])
|
|
115
|
+
assert_equal('/test.img', img.get_attribute('src'))
|
|
116
|
+
img = img_dom_helper(url, src_index, path, ['www.example.com'])
|
|
117
|
+
assert_equal('/test.img', img.get_attribute('src'))
|
|
118
|
+
img = img_dom_helper(url, src_index, path, ['www.test.com', 'www.wrong.com'])
|
|
119
|
+
assert_equal('/test.img', img.get_attribute('src'))
|
|
120
|
+
|
|
121
|
+
# replace image if exist host alias
|
|
122
|
+
img = img_dom_helper(url, src_index, path, ['www.test.com', 'www.example.com'])
|
|
123
|
+
assert_equal('http://test.com/ttt.img', img.get_attribute('src'))
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
private
|
|
127
|
+
def img_dom_helper(url, src_index, path, host_aliases)
|
|
128
|
+
text_index = {}
|
|
129
|
+
replacer = ImageReplacer.new(url, text_index, src_index, '', host_aliases)
|
|
130
|
+
dom = Wovnrb.get_dom('<img src="' + path + '"')
|
|
131
|
+
replacer.replace(dom, Lang.new('ja'))
|
|
132
|
+
dom.xpath('//img')[0]
|
|
133
|
+
end
|
|
99
134
|
end
|
|
100
135
|
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(30, Wovnrb::Lang::LANG.length)
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def test_keys_exist
|
|
@@ -41,6 +41,7 @@ module Wovnrb
|
|
|
41
41
|
assert_equal('ko', Lang::iso_639_1_normalization('ko'))
|
|
42
42
|
assert_equal('ms', Lang::iso_639_1_normalization('ms'))
|
|
43
43
|
assert_equal('my', Lang::iso_639_1_normalization('my'))
|
|
44
|
+
assert_equal('ne', Lang::iso_639_1_normalization('ne'))
|
|
44
45
|
assert_equal('no', Lang::iso_639_1_normalization('no'))
|
|
45
46
|
assert_equal('pl', Lang::iso_639_1_normalization('pl'))
|
|
46
47
|
assert_equal('pt', Lang::iso_639_1_normalization('pt'))
|
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.15
|
|
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-04-05 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: nokogumbo
|
|
@@ -397,7 +397,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
397
397
|
version: '0'
|
|
398
398
|
requirements: []
|
|
399
399
|
rubyforge_project:
|
|
400
|
-
rubygems_version: 2.
|
|
400
|
+
rubygems_version: 2.2.0
|
|
401
401
|
signing_key:
|
|
402
402
|
specification_version: 4
|
|
403
403
|
summary: Gem for WOVN.io
|
|
@@ -423,3 +423,4 @@ test_files:
|
|
|
423
423
|
- test/lib/wovnrb_test.rb
|
|
424
424
|
- test/services/url_test.rb
|
|
425
425
|
- test/test_helper.rb
|
|
426
|
+
has_rdoc:
|