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 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: