wovnrb 0.2.14 → 0.2.15

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