wovnrb 2.2.1 → 2.2.2

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
  SHA256:
3
- metadata.gz: b1d7702d09e87b697371b1c5609040910fa9383d55a05ebac5d1ae668b04013c
4
- data.tar.gz: c18162741b2cbb82137687cd6b9a0176cc576cae8230c3720d4ebd19df065656
3
+ metadata.gz: 2fae998ad3e5e2d777c98b7f2f71f998767059156e3d0970ad55c93784290d64
4
+ data.tar.gz: 5b3f2401d6b2a85db7aae3c6bfe4d566db2e71598b9b66b1fd394dfde6314c15
5
5
  SHA512:
6
- metadata.gz: 3285cbeb773a4415e82fd8cc06b375d4e3e0adea37c2e026699f401cd2692a67972aef40513a209b1d39686fb52664bc3964d6d8be69088d716b960f9e8e1ef3
7
- data.tar.gz: ea6c7b83a2a2b6c16c5d7d5310ec17e021a4e1b87524cc60de3794230890aeb8742205e7197ba9bbd74d492092523f59bcd48f576440729e6a014919d11f4313
6
+ metadata.gz: 6ebf7e6b5eec39b9782be78556272d88074d2ed59d07e0340f23eb818420a20a8f2db8e652c965206ccfb3f6a5b70289b57ec94dabcb68b17a5ee68c66a88081
7
+ data.tar.gz: aa4777b08b7cc6f0b0e02cd8105a72af742b0f288e2aa3af39aecd2f2347ae43b591d6bdd061c9fdf85bbda145dfdfc2dc7cfead9cc8859ac97649ab6c39159d
@@ -69,7 +69,7 @@ module Wovnrb
69
69
  return if original_text.nil?
70
70
  return if original_text.include?(HtmlReplaceMarker::KEY_PREFIX)
71
71
 
72
- node.set_attribute('value', marker.add_comment_value(original_text))
72
+ node.set_attribute('value', marker.add_value(original_text))
73
73
  end
74
74
  end
75
75
 
@@ -15,6 +15,13 @@ module Wovnrb
15
15
  key
16
16
  end
17
17
 
18
+ def add_value(value)
19
+ key = generate_key
20
+ @mapped_values << [key, value]
21
+
22
+ key
23
+ end
24
+
18
25
  def revert(marked_html)
19
26
  i = @mapped_values.size
20
27
  while i > 0
@@ -22,7 +29,6 @@ module Wovnrb
22
29
  key, value = @mapped_values[i]
23
30
  marked_html = marked_html.sub(key, value)
24
31
  end
25
-
26
32
  marked_html
27
33
  end
28
34
 
@@ -1,3 +1,3 @@
1
1
  module Wovnrb
2
- VERSION = '2.2.1'.freeze
2
+ VERSION = '2.2.2'.freeze
3
3
  end
@@ -69,6 +69,8 @@ module Wovnrb
69
69
  html = [
70
70
  '<html><body>',
71
71
  '<input id="user-id" type="hidden" value="secret-id">',
72
+ '<input id="password" type="hidden" value="secret-password">',
73
+ '<input id="something" type="hidden" value="">',
72
74
  '<input id="name" type="text" value="wovn.io">',
73
75
  '</body></html>'
74
76
  ].join
@@ -76,7 +78,15 @@ module Wovnrb
76
78
  converter = prepare_html_converter(html, ignore_class: [])
77
79
  converted_html, = converter.build_api_compatible_html
78
80
 
79
- expected_convert_html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><input id=\"user-id\" type=\"hidden\" value=\"<!-- __wovn-backend-ignored-key-0 -->\"><input id=\"name\" type=\"text\" value=\"wovn.io\"></body></html>"
81
+ expected_convert_html = [
82
+ '<html><head>',
83
+ "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body>",
84
+ '<input id="user-id" type="hidden" value="__wovn-backend-ignored-key-0">',
85
+ '<input id="password" type="hidden" value="__wovn-backend-ignored-key-1">',
86
+ '<input id="something" type="hidden" value="__wovn-backend-ignored-key-2">',
87
+ '<input id="name" type="text" value="wovn.io">',
88
+ '</body></html>'
89
+ ].join
80
90
  assert_equal(expected_convert_html, converted_html)
81
91
  end
82
92
 
@@ -8,11 +8,11 @@ module Wovnrb
8
8
  end
9
9
 
10
10
  def test_add_comment_value_multiple_times
11
- maker = HtmlReplaceMarker.new
12
- assert_equal('<!-- __wovn-backend-ignored-key-0 -->', maker.add_comment_value('hello'))
13
- assert_equal('<!-- __wovn-backend-ignored-key-1 -->', maker.add_comment_value('hello'))
14
- assert_equal('<!-- __wovn-backend-ignored-key-2 -->', maker.add_comment_value('hello'))
15
- assert_equal('<!-- __wovn-backend-ignored-key-3 -->', maker.add_comment_value('hello'))
11
+ marker = HtmlReplaceMarker.new
12
+ assert_equal('<!-- __wovn-backend-ignored-key-0 -->', marker.add_comment_value('hello'))
13
+ assert_equal('<!-- __wovn-backend-ignored-key-1 -->', marker.add_comment_value('hello'))
14
+ assert_equal('<!-- __wovn-backend-ignored-key-2 -->', marker.add_comment_value('hello'))
15
+ assert_equal('<!-- __wovn-backend-ignored-key-3 -->', marker.add_comment_value('hello'))
16
16
  end
17
17
 
18
18
  def test_add_same_comment_value_multiple_times
@@ -23,6 +23,27 @@ module Wovnrb
23
23
  end
24
24
  end
25
25
 
26
+ def test_add_same_value_multiple_times
27
+ marker = HtmlReplaceMarker.new
28
+
29
+ 25.times do |i|
30
+ assert_equal("__wovn-backend-ignored-key-#{i}", marker.add_value('hello'))
31
+ end
32
+ end
33
+
34
+ def test_mixed_add_comment_value_and_add_value
35
+ marker = HtmlReplaceMarker.new
36
+
37
+ assert_equal('<!-- __wovn-backend-ignored-key-0 -->', marker.add_comment_value('hello'))
38
+ assert_equal('__wovn-backend-ignored-key-1', marker.add_value('hello'))
39
+ assert_equal('<!-- __wovn-backend-ignored-key-2 -->', marker.add_comment_value('hello'))
40
+ assert_equal('__wovn-backend-ignored-key-3', marker.add_value('hello'))
41
+ assert_equal('<!-- __wovn-backend-ignored-key-4 -->', marker.add_comment_value('hello'))
42
+ assert_equal('__wovn-backend-ignored-key-5', marker.add_value('hello'))
43
+ assert_equal('<!-- __wovn-backend-ignored-key-6 -->', marker.add_comment_value('hello'))
44
+ assert_equal('__wovn-backend-ignored-key-7', marker.add_value('hello'))
45
+ end
46
+
26
47
  def test_revert
27
48
  marker = HtmlReplaceMarker.new
28
49
  original_html = '<html><body>hello<a> replacement </a>world </body></html>'
@@ -32,6 +53,42 @@ module Wovnrb
32
53
  assert_equal(original_html, marker.revert(new_html))
33
54
  end
34
55
 
56
+ def test_revert_input_value
57
+ marker = HtmlReplaceMarker.new
58
+ original_html = '<html><body><input type="hidden" value="please-revert"></body></html>'
59
+ key = marker.add_value('please-revert')
60
+ new_html = original_html.sub('please-revert', key)
61
+ assert_equal("<html><body><input type=\"hidden\" value=\"#{key}\"></body></html>", new_html)
62
+ assert_equal(original_html, marker.revert(new_html))
63
+ end
64
+
65
+ def test_revert_input_empty_value
66
+ marker = HtmlReplaceMarker.new
67
+ original_html = '<html><body><input type="hidden" value=""></body></html>'
68
+ key = marker.add_value('')
69
+ new_html = original_html.sub('value=""', "value=\"#{key}\"")
70
+ assert_equal("<html><body><input type=\"hidden\" value=\"#{key}\"></body></html>", new_html)
71
+ assert_equal(original_html, marker.revert(new_html))
72
+ end
73
+
74
+ def test_revert_multiple_input
75
+ marker = HtmlReplaceMarker.new
76
+ original_html = [
77
+ '<html><body>',
78
+ '<input type="hidden" value="please_revert1"></body></html>',
79
+ '<input type="hidden" value="please_revert2"></body></html>',
80
+ '<input type="hidden" value=""></body></html>'
81
+ ].join
82
+ new_html = [
83
+ '<html><body>',
84
+ "<input type=\"hidden\" value=\"#{marker.add_value('please_revert1')}\"></body></html>",
85
+ "<input type=\"hidden\" value=\"#{marker.add_value('please_revert2')}\"></body></html>",
86
+ "<input type=\"hidden\" value=\"#{marker.add_value('')}\">",
87
+ '</body></html>'
88
+ ].join
89
+ assert_equal(original_html, marker.revert(new_html))
90
+ end
91
+
35
92
  def test_revert_multiple_values
36
93
  marker = HtmlReplaceMarker.new
37
94
  original_html = '<html><body>hello<a> replacement </a>world </body></html>'
@@ -71,5 +128,24 @@ module Wovnrb
71
128
  new_html = "<html><body>#{key1}<a>#{key2}</a>#{key3}</body></html>"
72
129
  assert_equal(original_html, marker.revert(new_html))
73
130
  end
131
+
132
+ def test_revert_mixed_values
133
+ marker = HtmlReplaceMarker.new
134
+ original_html = [
135
+ '<html><body>',
136
+ '<span>hello</span>',
137
+ '<input type="hidden" value="please_revert">',
138
+ '</body></html>'
139
+ ].join
140
+ key1 = marker.add_comment_value('hello')
141
+ key2 = marker.add_value('please_revert')
142
+ new_html = [
143
+ '<html><body>',
144
+ "<span>#{key1}</span>",
145
+ "<input type=\"hidden\" value=\"#{key2}\">",
146
+ '</body></html>'
147
+ ].join
148
+ assert_equal(original_html, marker.revert(new_html))
149
+ end
74
150
  end
75
151
  end
@@ -27,6 +27,34 @@ class WovnrbTest < Minitest::Test
27
27
  assert_switch_lang('en', 'ja', body, expected_body, true)
28
28
  end
29
29
 
30
+ def test_switch_lang_with_input_tags
31
+ body = [
32
+ '<html lang="ja">',
33
+ '<body>',
34
+ '<input type="hidden" value="test1">',
35
+ '<input type="hidden" value="test2">',
36
+ '<input type="hidden" value="">',
37
+ '<input value="test3">',
38
+ '</body></html>'
39
+ ].join
40
+
41
+ expected_body = [
42
+ '<html lang="ja"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">',
43
+ "<script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&langCodeAliases={}&version=#{Wovnrb::VERSION}\"> </script>",
44
+ '<link rel="alternate" hreflang="ja" href="http://ja.page.com/">',
45
+ '<link rel="alternate" hreflang="en" href="http://page.com/"></head>',
46
+ '<body>',
47
+ '<input type="hidden" value="test1">',
48
+ '<input type="hidden" value="test2">',
49
+ '<input type="hidden" value="">',
50
+ '<input value="test3">',
51
+ '<p><!--wovn-src:Hello-->こんにちは</p>',
52
+ '</body></html>'
53
+ ].join
54
+
55
+ assert_switch_lang('en', 'ja', body, expected_body, true)
56
+ end
57
+
30
58
  def test_switch_lang_of_html_fragment_with_japanese_translations
31
59
  bodies = ['<span>Hello</span>'].join
32
60
  expected_bodies = ['<span><!--wovn-src:Hello-->こんにちは</span>'].join
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: 2.2.1
4
+ version: 2.2.2
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: 2019-10-31 00:00:00.000000000 Z
12
+ date: 2019-11-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -461,7 +461,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
461
461
  - !ruby/object:Gem::Version
462
462
  version: '0'
463
463
  requirements: []
464
- rubygems_version: 3.0.3
464
+ rubygems_version: 3.0.6
465
465
  signing_key:
466
466
  specification_version: 4
467
467
  summary: Gem for WOVN.io