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 +4 -4
- data/lib/wovnrb/headers.rb +1 -0
- data/lib/wovnrb/html_replacers/input_replacer.rb +25 -15
- data/lib/wovnrb/version.rb +1 -1
- data/test/lib/headers_test.rb +74 -0
- data/test/lib/html_replacers/input_replacer_test.rb +15 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f424f493421fb41f99437d20ecaa569a96d1848
|
4
|
+
data.tar.gz: 77b758db4390186f87962f8a1e1e6773215f749a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad31db23c9b0c731fbec6a7f7a9053442a36216d6f97dc6df92bc76580046f4de7ed739f2ccd9bb3207cc47e6aae00c6da18d1e152541641860ddb098ac45d5e
|
7
|
+
data.tar.gz: 6bcc8d868cad4c7d590d71a209f8e14148b5d493242eee9bddabd639a244647de42cce474ef41164495f2e9c3a2db425e2baf5903e865163ff55b203266b89eb
|
data/lib/wovnrb/headers.rb
CHANGED
@@ -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').
|
8
|
+
dom.xpath('//input').each do |node|
|
9
9
|
next if wovn_ignore?(node)
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
data/lib/wovnrb/version.rb
CHANGED
data/test/lib/headers_test.rb
CHANGED
@@ -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.
|
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-
|
12
|
+
date: 2017-05-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogumbo
|