wovnrb 1.0.0 → 1.0.1
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/meta_replacer.rb +9 -2
- data/lib/wovnrb/lang.rb +10 -1
- data/lib/wovnrb/version.rb +1 -1
- data/test/lib/headers_test.rb +6 -6
- data/test/lib/html_replacers/meta_replacer_test.rb +13 -0
- data/test/lib/lang_test.rb +10 -1
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ad74f869ecc0be459d21358a460e978cd01a30f
|
4
|
+
data.tar.gz: db9d85d8c7b8557b9b844852115b3773b76cffaf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3895654264d2a0d400a3cc1e1e7531a71164abc3536d8448b07d7a8aae22cbf439d2068e9a5fe00fad8c4c58d7cad98d570501c953087d2b8421ba6ebeb72005
|
7
|
+
data.tar.gz: db48ead4d587534e334449850e5ebbc5dfd35089a4afc0a4c79d4c858cba3e831dad8d5f79b5d6cdd9f0ec9c5d4856c28e96a255f53f36520d532a44d265b964
|
@@ -1,15 +1,22 @@
|
|
1
1
|
module Wovnrb
|
2
2
|
class MetaReplacer < ReplacerBase
|
3
|
-
def initialize(text_index)
|
3
|
+
def initialize(text_index, pattern = nil, headers = nil)
|
4
4
|
@text_index = text_index
|
5
|
+
@pattern = pattern
|
6
|
+
@headers = headers
|
5
7
|
end
|
6
8
|
|
7
9
|
def replace(dom, lang)
|
8
10
|
dom.xpath('//meta').select { |node|
|
9
11
|
next if wovn_ignore?(node)
|
10
|
-
(node.get_attribute('name') || node.get_attribute('property') || '') =~ /^(description|title|og:title|og:description|twitter:title|twitter:description)$/
|
12
|
+
(node.get_attribute('name') || node.get_attribute('property') || '') =~ /^(description|title|og:title|og:description|og:url|twitter:title|twitter:description)$/
|
11
13
|
}.each do |node|
|
12
14
|
node_content = node.get_attribute('content').strip
|
15
|
+
if @headers && @pattern && node.get_attribute('property') && node.get_attribute('property') === 'og:url'
|
16
|
+
new_url = lang.add_lang_code(node_content, @pattern, @headers)
|
17
|
+
node.set_attribute('content', new_url)
|
18
|
+
next
|
19
|
+
end
|
13
20
|
# shouldn't need size check, but for now...
|
14
21
|
if @text_index[node_content] && @text_index[node_content][lang.lang_code] && @text_index[node_content][lang.lang_code].size > 0
|
15
22
|
node.set_attribute('content', replace_text(node.get_attribute('content'), @text_index[node_content][lang.lang_code][0]['data']))
|
data/lib/wovnrb/lang.rb
CHANGED
@@ -7,7 +7,10 @@ module Wovnrb
|
|
7
7
|
LANG = {
|
8
8
|
#http://msdn.microsoft.com/en-us/library/hh456380.aspx
|
9
9
|
'ar' => {name: 'العربية', code: 'ar', en: 'Arabic'},
|
10
|
+
'eu' => {name: 'Euskara', code: 'eu', en: 'Basque'},
|
11
|
+
'bn' => {name: 'বাংলা ভাষা', code: 'bn', en: 'Bengali'},
|
10
12
|
'bg' => {name: 'Български', code: 'bg', en: 'Bulgarian'},
|
13
|
+
'ca' => {name: 'Català', code: 'ca', en: 'Catalan'},
|
11
14
|
'zh-CHS' => {name: '简体中文', code: 'zh-CHS', en: 'Simp Chinese'},
|
12
15
|
'zh-CHT' => {name: '繁體中文', code: 'zh-CHT', en: 'Trad Chinese'},
|
13
16
|
'da' => {name: 'Dansk', code: 'da', en: 'Danish'},
|
@@ -15,26 +18,32 @@ module Wovnrb
|
|
15
18
|
'en' => {name: 'English', code: 'en', en: 'English'},
|
16
19
|
'fi' => {name: 'Suomi', code: 'fi', en: 'Finnish'},
|
17
20
|
'fr' => {name: 'Français', code: 'fr', en: 'French'},
|
21
|
+
'gl' => {name: 'Galego', code: 'gl', en: 'Galician'},
|
18
22
|
'de' => {name: 'Deutsch', code: 'de', en: 'German'},
|
19
23
|
'el' => {name: 'Ελληνικά', code: 'el', en: 'Greek'},
|
20
24
|
'he' => {name: 'עברית', code: 'he', en: 'Hebrew'},
|
25
|
+
'hu' => {name: 'Magyar', code: 'hu', en: 'Hungarian'},
|
21
26
|
'id' => {name: 'Bahasa Indonesia', code: 'id', en: 'Indonesian'},
|
22
27
|
'it' => {name: 'Italiano', code: 'it', en: 'Italian'},
|
23
28
|
'ja' => {name: '日本語', code: 'ja', en: 'Japanese'},
|
24
29
|
'ko' => {name: '한국어', code: 'ko', en: 'Korean'},
|
30
|
+
'lv' =>{name: 'Latviešu', code: 'lv', en: 'Latvian'},
|
25
31
|
'ms' => {name: 'Bahasa Melayu', code: 'ms', en: 'Malay'},
|
26
32
|
'my' => { name: 'ဗမာစာ', code: 'my', en: 'Burmese' },
|
27
33
|
'ne' => {name: 'नेपाली भाषा', code: 'ne', en: 'Nepali'},
|
34
|
+
'fa' => {name: 'زبان_فارسی', code: 'fa', en: 'Persian'},
|
28
35
|
'no' => {name: 'Norsk', code: 'no', en: 'Norwegian'},
|
29
36
|
'pl' => {name: 'Polski', code: 'pl', en: 'Polish'},
|
30
37
|
'pt' => {name: 'Português', code: 'pt', en: 'Portuguese'},
|
31
38
|
'ru' => {name: 'Русский', code: 'ru', en: 'Russian'},
|
32
39
|
'es' => {name: 'Español', code: 'es', en: 'Spanish'},
|
40
|
+
'sw' => {name: 'Kiswahili', code: 'sw', en: 'Swahili'},
|
33
41
|
'sv' => {name: 'Svensk', code: 'sv', en: 'Swedish'},
|
34
42
|
'th' => {name: 'ภาษาไทย', code: 'th', en: 'Thai'},
|
35
43
|
'hi' => {name: 'हिन्दी', code: 'hi', en: 'Hindi'},
|
36
44
|
'tr' => {name: 'Türkçe', code: 'tr', en: 'Turkish'},
|
37
45
|
'uk' => {name: 'Українська', code: 'uk', en: 'Ukrainian'},
|
46
|
+
'ur' => {name: 'اردو', code: 'ur', en: 'Urdu'},
|
38
47
|
'vi' => {name: 'Tiếng Việt', code: 'vi', en: 'Vietnamese'},
|
39
48
|
}
|
40
49
|
|
@@ -204,7 +213,7 @@ module Wovnrb
|
|
204
213
|
end
|
205
214
|
|
206
215
|
replacers << TextReplacer.new(text_index)
|
207
|
-
replacers << MetaReplacer.new(text_index)
|
216
|
+
replacers << MetaReplacer.new(text_index, pattern, headers)
|
208
217
|
replacers << InputReplacer.new(text_index)
|
209
218
|
replacers << ImageReplacer.new(url, text_index, src_index, img_src_prefix, host_aliases)
|
210
219
|
replacers << ScriptReplacer.new(store)
|
data/lib/wovnrb/version.rb
CHANGED
data/test/lib/headers_test.rb
CHANGED
@@ -6103,7 +6103,7 @@ module Wovnrb
|
|
6103
6103
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings)
|
6104
6104
|
|
6105
6105
|
keys = Wovnrb::Lang::LANG.keys
|
6106
|
-
assert_equal(
|
6106
|
+
assert_equal(39, keys.size)
|
6107
6107
|
|
6108
6108
|
for key in keys
|
6109
6109
|
uri_without_scheme = h.remove_lang("wovn.io/#{key}", key)
|
@@ -6117,7 +6117,7 @@ module Wovnrb
|
|
6117
6117
|
def test_remove_lang_path_with_nil_lang
|
6118
6118
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings)
|
6119
6119
|
keys = Wovnrb::Lang::LANG.keys
|
6120
|
-
assert_equal(
|
6120
|
+
assert_equal(39, keys.size)
|
6121
6121
|
|
6122
6122
|
uri_without_scheme = h.remove_lang('wovn.io', nil)
|
6123
6123
|
assert_equal('wovn.io', uri_without_scheme)
|
@@ -6140,7 +6140,7 @@ module Wovnrb
|
|
6140
6140
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'query'))
|
6141
6141
|
|
6142
6142
|
keys = Wovnrb::Lang::LANG.keys
|
6143
|
-
assert_equal(
|
6143
|
+
assert_equal(39, keys.size)
|
6144
6144
|
|
6145
6145
|
for key in keys
|
6146
6146
|
uri_without_scheme = h.remove_lang("wovn.io/?wovn=#{key}", key)
|
@@ -6154,7 +6154,7 @@ module Wovnrb
|
|
6154
6154
|
def test_remove_lang_query_with_nil_lang
|
6155
6155
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'query'))
|
6156
6156
|
keys = Wovnrb::Lang::LANG.keys
|
6157
|
-
assert_equal(
|
6157
|
+
assert_equal(39, keys.size)
|
6158
6158
|
|
6159
6159
|
uri_without_scheme = h.remove_lang('wovn.io', nil)
|
6160
6160
|
assert_equal('wovn.io', uri_without_scheme)
|
@@ -6177,7 +6177,7 @@ module Wovnrb
|
|
6177
6177
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'subdomain'))
|
6178
6178
|
|
6179
6179
|
keys = Wovnrb::Lang::LANG.keys
|
6180
|
-
assert_equal(
|
6180
|
+
assert_equal(39, keys.size)
|
6181
6181
|
|
6182
6182
|
for key in keys
|
6183
6183
|
uri_without_scheme = h.remove_lang("#{key.downcase}.wovn.io/", key)
|
@@ -6191,7 +6191,7 @@ module Wovnrb
|
|
6191
6191
|
def test_remove_lang_subdomain_with_nil_lang
|
6192
6192
|
h = Wovnrb::Headers.new(Wovnrb.get_env, Wovnrb.get_settings('url_pattern' => 'subdomain'))
|
6193
6193
|
keys = Wovnrb::Lang::LANG.keys
|
6194
|
-
assert_equal(
|
6194
|
+
assert_equal(39, keys.size)
|
6195
6195
|
|
6196
6196
|
uri_without_scheme = h.remove_lang('wovn.io', nil)
|
6197
6197
|
assert_equal('wovn.io', uri_without_scheme)
|
@@ -90,5 +90,18 @@ module Wovnrb
|
|
90
90
|
content = dom.xpath('//meta')[0].get_attribute('content')
|
91
91
|
assert_equal('Hello', content)
|
92
92
|
end
|
93
|
+
|
94
|
+
def test_replace_wovn_ignore
|
95
|
+
headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'https://test.com'), Wovnrb.get_settings)
|
96
|
+
replacer = MetaReplacer.new({
|
97
|
+
'Hello' => {'ja' => [{'data' => 'こんにちは'}]},
|
98
|
+
}, 'path', headers)
|
99
|
+
|
100
|
+
dom = Wovnrb.get_dom('<meta property="og:url" content="https://test.com">')
|
101
|
+
replacer.replace(dom, Lang.new('ja'))
|
102
|
+
|
103
|
+
content = dom.xpath('//meta')[0].get_attribute('content')
|
104
|
+
assert_equal('https://test.com/ja/', content)
|
105
|
+
end
|
93
106
|
end
|
94
107
|
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(39, Wovnrb::Lang::LANG.length)
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_keys_exist
|
@@ -24,7 +24,10 @@ module Wovnrb
|
|
24
24
|
|
25
25
|
def test_iso_639_1_normalization
|
26
26
|
assert_equal('ar', Lang::iso_639_1_normalization('ar'))
|
27
|
+
assert_equal('eu', Lang::iso_639_1_normalization('eu'))
|
28
|
+
assert_equal('bn', Lang::iso_639_1_normalization('bn'))
|
27
29
|
assert_equal('bg', Lang::iso_639_1_normalization('bg'))
|
30
|
+
assert_equal('ca', Lang::iso_639_1_normalization('ca'))
|
28
31
|
assert_equal('zh-Hans', Lang::iso_639_1_normalization('zh-CHS'))
|
29
32
|
assert_equal('zh-Hant', Lang::iso_639_1_normalization('zh-CHT'))
|
30
33
|
assert_equal('da', Lang::iso_639_1_normalization('da'))
|
@@ -32,26 +35,32 @@ module Wovnrb
|
|
32
35
|
assert_equal('en', Lang::iso_639_1_normalization('en'))
|
33
36
|
assert_equal('fi', Lang::iso_639_1_normalization('fi'))
|
34
37
|
assert_equal('fr', Lang::iso_639_1_normalization('fr'))
|
38
|
+
assert_equal('gl', Lang::iso_639_1_normalization('gl'))
|
35
39
|
assert_equal('de', Lang::iso_639_1_normalization('de'))
|
36
40
|
assert_equal('el', Lang::iso_639_1_normalization('el'))
|
37
41
|
assert_equal('he', Lang::iso_639_1_normalization('he'))
|
42
|
+
assert_equal('hu', Lang::iso_639_1_normalization('hu'))
|
38
43
|
assert_equal('id', Lang::iso_639_1_normalization('id'))
|
39
44
|
assert_equal('it', Lang::iso_639_1_normalization('it'))
|
40
45
|
assert_equal('ja', Lang::iso_639_1_normalization('ja'))
|
41
46
|
assert_equal('ko', Lang::iso_639_1_normalization('ko'))
|
47
|
+
assert_equal('lv', Lang::iso_639_1_normalization('lv'))
|
42
48
|
assert_equal('ms', Lang::iso_639_1_normalization('ms'))
|
43
49
|
assert_equal('my', Lang::iso_639_1_normalization('my'))
|
44
50
|
assert_equal('ne', Lang::iso_639_1_normalization('ne'))
|
51
|
+
assert_equal('fa', Lang::iso_639_1_normalization('fa'))
|
45
52
|
assert_equal('no', Lang::iso_639_1_normalization('no'))
|
46
53
|
assert_equal('pl', Lang::iso_639_1_normalization('pl'))
|
47
54
|
assert_equal('pt', Lang::iso_639_1_normalization('pt'))
|
48
55
|
assert_equal('ru', Lang::iso_639_1_normalization('ru'))
|
49
56
|
assert_equal('es', Lang::iso_639_1_normalization('es'))
|
57
|
+
assert_equal('sw', Lang::iso_639_1_normalization('sw'))
|
50
58
|
assert_equal('sv', Lang::iso_639_1_normalization('sv'))
|
51
59
|
assert_equal('th', Lang::iso_639_1_normalization('th'))
|
52
60
|
assert_equal('hi', Lang::iso_639_1_normalization('hi'))
|
53
61
|
assert_equal('tr', Lang::iso_639_1_normalization('tr'))
|
54
62
|
assert_equal('uk', Lang::iso_639_1_normalization('uk'))
|
63
|
+
assert_equal('ur', Lang::iso_639_1_normalization('ur'))
|
55
64
|
assert_equal('vi', Lang::iso_639_1_normalization('vi'))
|
56
65
|
end
|
57
66
|
|
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: 1.0.
|
4
|
+
version: 1.0.1
|
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: 2018-
|
12
|
+
date: 2018-03-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogumbo
|
@@ -437,4 +437,3 @@ test_files:
|
|
437
437
|
- test/lib/wovnrb_test.rb
|
438
438
|
- test/services/url_test.rb
|
439
439
|
- test/test_helper.rb
|
440
|
-
has_rdoc:
|