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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 44c68e13bb355b5325edc102eb098dc838b7d7a1
4
- data.tar.gz: cfd66046dd86597d2b37b65dc9e7623b465d3c51
3
+ metadata.gz: c527a83e2c6ab94014f55fb166f516fd5bf56941
4
+ data.tar.gz: 767806ed70c4ae6a32fd75e17dd7518417b7b51f
5
5
  SHA512:
6
- metadata.gz: 945493670a717f362bab0fc2099af3d0525600327c2828d941b3afa65720718f616a81aeee14353f674b4bcf7df6e9d8b6c9bd4d7068f4caf836514ff7ae6923
7
- data.tar.gz: 83fbe6ec6a455d472710b6b2b0acd0b38500b81327a1c287af5446dd654323dbb34090d4d813494d81dca152019b416a2a30019ea7ec828ca293a734683ce0b7
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
- # shouldn't need size check, but for now...
30
- if @src_index[src] && @src_index[src][lang.lang_code] && @src_index[src][lang.lang_code].size > 0
31
- node.attribute('src').value = "#{@img_src_prefix}#{@src_index[src][lang.lang_code][0]['data']}"
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}"
@@ -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|
@@ -4,6 +4,8 @@ require 'cgi'
4
4
  require 'singleton'
5
5
  require 'wovnrb/services/wovn_logger'
6
6
  require 'wovnrb/services/glob'
7
+ require 'active_support'
8
+ require 'active_support/core_ext'
7
9
 
8
10
  module Wovnrb
9
11
  class Store
@@ -1,3 +1,3 @@
1
1
  module Wovnrb
2
- VERSION = "0.2.14"
2
+ VERSION = "0.2.15"
3
3
  end
@@ -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(29, keys.size)
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(29, keys.size)
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(29, keys.size)
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(29, keys.size)
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(29, keys.size)
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(29, keys.size)
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
@@ -10,7 +10,7 @@ module Wovnrb
10
10
  end
11
11
 
12
12
  def test_langs_length
13
- assert_equal(29, Wovnrb::Lang::LANG.length)
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.14
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-03-14 00:00:00.000000000 Z
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.6.3
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: