wovnrb 0.2.18 → 0.2.19

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: 7bdcfd40914010805b291fbc68132434f9b95d20
4
- data.tar.gz: 77a34e93cf0962516eab31bbe004ba2c4e4c8fd7
3
+ metadata.gz: 5f424f493421fb41f99437d20ecaa569a96d1848
4
+ data.tar.gz: 77b758db4390186f87962f8a1e1e6773215f749a
5
5
  SHA512:
6
- metadata.gz: e91cb4c12e417853115fe9e6e4f175dcf6139218d388f96e1bedf6320749220f6ab16d18c323a79b5b305532bf095ef5896871861953f4012cab247883cdab33
7
- data.tar.gz: 947e717e78b16d35597f68e91351444ac5d7cf62fa0bbf839fe02350e1699dc6335c9df4762639811f12386ff7612e13c6bb9b4489be82efa11b4d9925a4cdca
6
+ metadata.gz: ad31db23c9b0c731fbec6a7f7a9053442a36216d6f97dc6df92bc76580046f4de7ed739f2ccd9bb3207cc47e6aae00c6da18d1e152541641860ddb098ac45d5e
7
+ data.tar.gz: 6bcc8d868cad4c7d590d71a209f8e14148b5d493242eee9bddabd639a244647de42cce474ef41164495f2e9c3a2db425e2baf5903e865163ff55b203266b89eb
@@ -39,6 +39,7 @@ module Wovnrb
39
39
  else
40
40
  @host = @env['HTTP_HOST']
41
41
  end
42
+ @env['wovnrb.target_lang'] = self.lang_code
42
43
  @host = settings['url_pattern'] == 'subdomain' ? remove_lang(@host, self.lang_code) : @host
43
44
  @pathname, @query = @env['REQUEST_URI'].split('?')
44
45
  @pathname = settings['url_pattern'] == 'path' ? remove_lang(@pathname, self.lang_code) : @pathname
@@ -5,23 +5,33 @@ module Wovnrb
5
5
  end
6
6
 
7
7
  def replace(dom, lang)
8
- dom.xpath('//input').select { |node|
8
+ dom.xpath('//input').each do |node|
9
9
  next if wovn_ignore?(node)
10
- (node.get_attribute('value') &&
11
- node.get_attribute('value') != '' &&
12
- node.get_attribute('type') &&
13
- node.get_attribute('type') != 'text' &&
14
- node.get_attribute('type') != 'hidden' &&
15
- node.get_attribute('type') != 'password' &&
16
- node.get_attribute('type') != 'url' &&
17
- node.get_attribute('type') != 'search')
18
- }.each do |node|
19
- node_value = node.get_attribute('value').strip
20
- # shouldn't need size check, but for now...
21
- if @text_index[node_value] && @text_index[node_value][lang.lang_code] && @text_index[node_value][lang.lang_code].size > 0
22
- node.set_attribute('value', replace_text(node.get_attribute('value'), @text_index[node_value][lang.lang_code][0]['data']))
23
- end
10
+
11
+ set_attribute('value', node, lang) if replaceable_value? node
12
+ set_attribute('placeholder', node, lang) if replaceable_placeholder? node
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def set_attribute(name, node, lang)
19
+ node_value = node.get_attribute(name).strip
20
+ if @text_index[node_value] && @text_index[node_value][lang.lang_code] && @text_index[node_value][lang.lang_code].size > 0
21
+ node.set_attribute(name, replace_text(node_value, @text_index[node_value][lang.lang_code][0]['data']))
24
22
  end
25
23
  end
24
+
25
+ def replaceable_value?(node)
26
+ return false unless ['submit', 'reset'].include? node.get_attribute('type')
27
+
28
+ attribute_value = node.get_attribute('value')
29
+ attribute_value && !attribute_value.empty?
30
+ end
31
+
32
+ def replaceable_placeholder?(node)
33
+ attribute_placeholder = node.get_attribute('placeholder')
34
+ attribute_placeholder && !attribute_placeholder.empty?
35
+ end
26
36
  end
27
37
  end
@@ -1,3 +1,3 @@
1
1
  module Wovnrb
2
- VERSION = "0.2.18"
2
+ VERSION = "0.2.19"
3
3
  end
@@ -129,6 +129,43 @@ module Wovnrb
129
129
  # REQUEST_OUT
130
130
  #########################
131
131
 
132
+ def test_request_out_with_wovn_target_lang_header_using_subdomain
133
+ h = Wovnrb::Headers.new(
134
+ Wovnrb.get_env(
135
+ 'SERVER_NAME' => 'ja.wovn.io',
136
+ 'REQUEST_URI' => '/test',
137
+ 'HTTP_REFERER' => 'http://ja.wovn.io/test',
138
+ ),
139
+ Wovnrb.get_settings(
140
+ 'url_pattern' => 'subdomain',
141
+ 'url_pattern_reg' => '^(?<lang>[^.]+).',
142
+ ),
143
+ )
144
+ env = h.request_out('ja')
145
+ assert_equal('ja', env['wovnrb.target_lang'])
146
+ end
147
+
148
+ def test_request_out_with_wovn_target_lang_header_using_path
149
+ h = Wovnrb::Headers.new(
150
+ Wovnrb.get_env('REQUEST_URI' => '/ja/test', 'HTTP_REFERER' => 'http://wovn.io/ja/test'),
151
+ Wovnrb.get_settings,
152
+ )
153
+ env = h.request_out('ja')
154
+ assert_equal('ja', env['wovnrb.target_lang'])
155
+ end
156
+
157
+ def test_request_out_with_wovn_target_lang_header_using_query
158
+ h = Wovnrb::Headers.new(
159
+ Wovnrb.get_env('REQUEST_URI' => 'test?wovn=ja', 'HTTP_REFERER' => 'http://wovn.io/test'),
160
+ Wovnrb.get_settings(
161
+ 'url_pattern' => 'query',
162
+ 'url_pattern_reg' => "((\\?.*&)|\\?)wovn=(?<lang>[^&]+)(&|$)",
163
+ ),
164
+ )
165
+ env = h.request_out('ja')
166
+ assert_equal('ja', env['wovnrb.target_lang'])
167
+ end
168
+
132
169
  def test_request_out_with_use_proxy_false
133
170
  h = Wovnrb::Headers.new(
134
171
  Wovnrb.get_env('url' => 'http://localhost/contact', 'HTTP_X_FORWARDED_HOST' => 'ja.wovn.io'),
@@ -208,6 +245,43 @@ module Wovnrb
208
245
  assert_equal('http://staging-ja.wovn.io/test', h.out(headers)['Location'])
209
246
  end
210
247
 
248
+ def test_out_with_wovn_target_lang_header_using_subdomain
249
+ h = Wovnrb::Headers.new(
250
+ Wovnrb.get_env(
251
+ 'SERVER_NAME' => 'ja.wovn.io',
252
+ 'REQUEST_URI' => '/test',
253
+ 'HTTP_REFERER' => 'http://ja.wovn.io/test',
254
+ ),
255
+ Wovnrb.get_settings(
256
+ 'url_pattern' => 'subdomain',
257
+ 'url_pattern_reg' => '^(?<lang>[^.]+).',
258
+ ),
259
+ )
260
+ headers = h.out(h.request_out('ja'))
261
+ assert_equal('ja', headers['wovnrb.target_lang'])
262
+ end
263
+
264
+ def test_out_with_wovn_target_lang_header_using_path
265
+ h = Wovnrb::Headers.new(
266
+ Wovnrb.get_env('REQUEST_URI' => '/ja/test', 'HTTP_REFERER' => 'http://wovn.io/ja/test'),
267
+ Wovnrb.get_settings,
268
+ )
269
+ headers = h.out(h.request_out('ja'))
270
+ assert_equal('ja', headers['wovnrb.target_lang'])
271
+ end
272
+
273
+ def test_out_with_wovn_target_lang_header_using_query
274
+ h = Wovnrb::Headers.new(
275
+ Wovnrb.get_env('REQUEST_URI' => 'test?wovn=ja', 'HTTP_REFERER' => 'http://wovn.io/test'),
276
+ Wovnrb.get_settings(
277
+ 'url_pattern' => 'query',
278
+ 'url_pattern_reg' => "((\\?.*&)|\\?)wovn=(?<lang>[^&]+)(&|$)",
279
+ ),
280
+ )
281
+ headers = h.out(h.request_out('ja'))
282
+ assert_equal('ja', headers['wovnrb.target_lang'])
283
+ end
284
+
211
285
  #########################
212
286
  # GET SETTINGS
213
287
  #########################
@@ -76,6 +76,21 @@ module Wovnrb
76
76
  assert_equal('Hello', content)
77
77
  end
78
78
 
79
+ def test_replace_type_password_placeholder
80
+ replacer = InputReplacer.new({
81
+ 'Hello' => {'ja' => [{'data' => 'こんにちは'}]},
82
+ 'Hi' => {'ja' => [{'data' => 'やぁ'}]},
83
+ })
84
+
85
+ dom = Wovnrb.get_dom('<input type="password" value="Hello" placeholder="Hi">')
86
+ replacer.replace(dom, Lang.new('ja'))
87
+
88
+ value_content = dom.xpath('//input')[0].get_attribute('value')
89
+ placeholder_content = dom.xpath('//input')[0].get_attribute('placeholder')
90
+ assert_equal('Hello', value_content)
91
+ assert_equal('やぁ', placeholder_content)
92
+ end
93
+
79
94
  def test_dont_replace_type_url_value
80
95
  replacer = InputReplacer.new({
81
96
  'Hello' => {'ja' => [{'data' => 'こんにちは'}]}
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.18
4
+ version: 0.2.19
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-05-24 00:00:00.000000000 Z
12
+ date: 2017-05-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogumbo