wovnrb 0.2.18 → 0.2.19

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