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