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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f18e9f78a0a42c2249870011353adc16baf05eed
4
- data.tar.gz: 2d5d4fa65d4d5304e664ba8184744090b3a77e43
3
+ metadata.gz: 3ad74f869ecc0be459d21358a460e978cd01a30f
4
+ data.tar.gz: db9d85d8c7b8557b9b844852115b3773b76cffaf
5
5
  SHA512:
6
- metadata.gz: 2088f60ce143c7ce93f1945a679d845aa2f6f0597b26489a34980158e9e9a1c9cd39f1a815743014cf0a0bb0eba2e7d80afc1477c7e00f4969f9b2f1cbca5820
7
- data.tar.gz: 327a2f82d56db2dbbec8e16298f99e1b6d62bdf0dafade734edf43d4fe34c90f259a975491808b7a6b2ab5506aba4c526a7a660db383cbd7dfd877942497c234
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']))
@@ -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)
@@ -1,3 +1,3 @@
1
1
  module Wovnrb
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -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(30, keys.size)
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(30, keys.size)
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(30, keys.size)
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(30, keys.size)
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(30, keys.size)
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(30, keys.size)
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
@@ -10,7 +10,7 @@ module Wovnrb
10
10
  end
11
11
 
12
12
  def test_langs_length
13
- assert_equal(30, Wovnrb::Lang::LANG.length)
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.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-02-15 00:00:00.000000000 Z
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: