jerska-htmlentities 4.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,25 @@
1
+ # encoding: UTF-8
2
+ require_relative "./test_helper"
3
+
4
+ class HTML4Test < Test::Unit::TestCase
5
+
6
+ attr_reader :html_entities
7
+
8
+ def setup
9
+ @html_entities = HTMLEntities.new('html4')
10
+ end
11
+
12
+ # Found by Marcos Kuhns
13
+ def test_should_not_encode_apos_entity
14
+ assert_equal "'", html_entities.encode("'", :basic)
15
+ end
16
+
17
+ def test_should_not_decode_apos_entity
18
+ assert_equal "é&apos;", html_entities.decode("&eacute;&apos;")
19
+ end
20
+
21
+ def test_should_not_decode_dotted_entity
22
+ assert_equal "&b.Theta;", html_entities.decode("&b.Theta;")
23
+ end
24
+
25
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: UTF-8
2
+ require_relative "./test_helper"
3
+
4
+ if ENV["RUN_INTEROPERABILITY_TESTS"]
5
+ class HTMLEntities::InteroperabilityTest < Test::Unit::TestCase
6
+
7
+ def test_should_encode_active_support_safe_buffer
8
+ require 'active_support'
9
+ string = "<p>This is a test</p>"
10
+ buffer = ActiveSupport::SafeBuffer.new(string)
11
+ coder = HTMLEntities.new
12
+ assert_equal coder.encode(string, :named), coder.encode(buffer, :named)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,67 @@
1
+ # encoding: UTF-8
2
+ require_relative "./test_helper"
3
+
4
+ class HTMLEntities::RoundtripTest < Test::Unit::TestCase
5
+
6
+ attr_reader :xhtml1_entities, :html4_entities
7
+
8
+ def setup
9
+ @xhtml1_entities = HTMLEntities.new('xhtml1')
10
+ @html4_entities = HTMLEntities.new('html4')
11
+ end
12
+
13
+ def test_should_roundtrip_xhtml1_entities_via_named_encoding
14
+ each_mapping 'xhtml1' do |name, string|
15
+ assert_equal string, xhtml1_entities.decode(xhtml1_entities.encode(string, :named))
16
+ end
17
+ end
18
+
19
+ def test_should_roundtrip_xhtml1_entities_via_basic_and_named_encoding
20
+ each_mapping 'xhtml1' do |name, string|
21
+ assert_equal string, xhtml1_entities.decode(xhtml1_entities.encode(string, :basic, :named))
22
+ end
23
+ end
24
+
25
+ def test_should_roundtrip_xhtml1_entities_via_basic_named_and_decimal_encoding
26
+ each_mapping 'xhtml1' do |name, string|
27
+ assert_equal string, xhtml1_entities.decode(xhtml1_entities.encode(string, :basic, :named, :decimal))
28
+ end
29
+ end
30
+
31
+ def test_should_roundtrip_xhtml1_entities_via_hexadecimal_encoding
32
+ each_mapping 'xhtml1' do |name, string|
33
+ assert_equal string, xhtml1_entities.decode(xhtml1_entities.encode(string, :hexadecimal))
34
+ end
35
+ end
36
+
37
+ def test_should_roundtrip_html4_entities_via_named_encoding
38
+ each_mapping 'html4' do |name, string|
39
+ assert_equal string, html4_entities.decode(html4_entities.encode(string, :named))
40
+ end
41
+ end
42
+
43
+ def test_should_roundtrip_html4_entities_via_basic_and_named_encoding
44
+ each_mapping 'html4' do |name, string|
45
+ assert_equal string, html4_entities.decode(html4_entities.encode(string, :basic, :named))
46
+ end
47
+ end
48
+
49
+ def test_should_roundtrip_html4_entities_via_basic_named_and_decimal_encoding
50
+ each_mapping 'html4' do |name, string|
51
+ assert_equal string, html4_entities.decode(html4_entities.encode(string, :basic, :named, :decimal))
52
+ end
53
+ end
54
+
55
+ def test_should_roundtrip_html4_entities_via_hexadecimal_encoding
56
+ each_mapping 'html4' do |name, string|
57
+ assert_equal string, html4_entities.decode(html4_entities.encode(string, :hexadecimal))
58
+ end
59
+ end
60
+
61
+ def each_mapping(flavor)
62
+ HTMLEntities::MAPPINGS[flavor].each do |name, codepoint|
63
+ yield name, [codepoint].pack('U')
64
+ end
65
+ end
66
+
67
+ end
@@ -0,0 +1,68 @@
1
+ # encoding: UTF-8
2
+ require_relative "./test_helper"
3
+
4
+ class HTMLEntities::StringEncodingsTest < Test::Unit::TestCase
5
+
6
+ def test_should_encode_ascii_to_ascii
7
+ s = "<elan>".encode(Encoding::US_ASCII)
8
+ assert_equal Encoding::US_ASCII, s.encoding
9
+
10
+ t = HTMLEntities.new.encode(s)
11
+ assert_equal "&lt;elan&gt;", t
12
+ assert_equal Encoding::US_ASCII, t.encoding
13
+ end
14
+
15
+ def test_should_encode_utf8_to_utf8_if_needed
16
+ s = "<élan>"
17
+ assert_equal Encoding::UTF_8, s.encoding
18
+
19
+ t = HTMLEntities.new.encode(s)
20
+ assert_equal "&lt;élan&gt;", t
21
+ assert_equal Encoding::UTF_8, t.encoding
22
+ end
23
+
24
+ def test_should_encode_utf8_to_ascii_if_possible
25
+ s = "<elan>"
26
+ assert_equal Encoding::UTF_8, s.encoding
27
+
28
+ t = HTMLEntities.new.encode(s)
29
+ assert_equal "&lt;elan&gt;", t
30
+ assert_equal Encoding::US_ASCII, t.encoding
31
+ end
32
+
33
+ def test_should_encode_other_encoding_to_utf8
34
+ s = "<élan>".encode(Encoding::ISO_8859_1)
35
+ assert_equal Encoding::ISO_8859_1, s.encoding
36
+
37
+ t = HTMLEntities.new.encode(s)
38
+ assert_equal "&lt;élan&gt;", t
39
+ assert_equal Encoding::UTF_8, t.encoding
40
+ end
41
+
42
+ def test_should_decode_ascii_to_utf8
43
+ s = "&lt;&eacute;lan&gt;".encode(Encoding::US_ASCII)
44
+ assert_equal Encoding::US_ASCII, s.encoding
45
+
46
+ t = HTMLEntities.new.decode(s)
47
+ assert_equal "<élan>", t
48
+ assert_equal Encoding::UTF_8, t.encoding
49
+ end
50
+
51
+ def test_should_decode_utf8_to_utf8
52
+ s = "&lt;&eacute;lan&gt;".encode(Encoding::UTF_8)
53
+ assert_equal Encoding::UTF_8, s.encoding
54
+
55
+ t = HTMLEntities.new.decode(s)
56
+ assert_equal "<élan>", t
57
+ assert_equal Encoding::UTF_8, t.encoding
58
+ end
59
+
60
+ def test_should_decode_other_encoding_to_utf8
61
+ s = "&lt;&eacute;lan&gt;".encode(Encoding::ISO_8859_1)
62
+ assert_equal Encoding::ISO_8859_1, s.encoding
63
+
64
+ t = HTMLEntities.new.decode(s)
65
+ assert_equal "<élan>", t
66
+ assert_equal Encoding::UTF_8, t.encoding
67
+ end
68
+ end
@@ -0,0 +1,3 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
2
+ require 'test/unit'
3
+ require 'htmlentities'
@@ -0,0 +1,24 @@
1
+ # encoding: UTF-8
2
+ require_relative "./test_helper"
3
+
4
+ class HTMLEntities::XHTML1Test < Test::Unit::TestCase
5
+
6
+ attr_reader :html_entities
7
+
8
+ def setup
9
+ @html_entities = HTMLEntities.new('xhtml1')
10
+ end
11
+
12
+ def test_should_encode_apos_entity
13
+ assert_equal "&apos;", html_entities.encode("'", :basic)
14
+ end
15
+
16
+ def test_should_decode_apos_entity
17
+ assert_equal "é'", html_entities.decode("&eacute;&apos;")
18
+ end
19
+
20
+ def test_should_not_decode_dotted_entity
21
+ assert_equal "&b.Theta;", html_entities.decode("&b.Theta;")
22
+ end
23
+
24
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jerska-htmlentities
3
+ version: !ruby/object:Gem::Version
4
+ version: 4.3.3
5
+ platform: ruby
6
+ authors:
7
+ - Matthieu Dumont (on work of Paul Battley)
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-07-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: A module for encoding and decoding (X)HTML entities.
28
+ email: jerska@live.fr
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files:
32
+ - History.txt
33
+ - COPYING.txt
34
+ files:
35
+ - COPYING.txt
36
+ - History.txt
37
+ - lib/htmlentities.rb
38
+ - lib/htmlentities/decoder.rb
39
+ - lib/htmlentities/encoder.rb
40
+ - lib/htmlentities/flavors.rb
41
+ - lib/htmlentities/mappings/expanded.rb
42
+ - lib/htmlentities/mappings/html4.rb
43
+ - lib/htmlentities/mappings/xhtml1.rb
44
+ - lib/htmlentities/version.rb
45
+ - perf/benchmark.rb
46
+ - perf/performance.rb
47
+ - perf/profile.rb
48
+ - test/decoding_test.rb
49
+ - test/encoding_test.rb
50
+ - test/entities_test.rb
51
+ - test/expanded_test.rb
52
+ - test/html4_test.rb
53
+ - test/interoperability_test.rb
54
+ - test/roundtrip_test.rb
55
+ - test/string_encodings_test.rb
56
+ - test/test_helper.rb
57
+ - test/xhtml1_test.rb
58
+ homepage: https://github.com/Jerska/htmlentities
59
+ licenses:
60
+ - MIT
61
+ metadata: {}
62
+ post_install_message:
63
+ rdoc_options: []
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirements: []
77
+ rubyforge_project:
78
+ rubygems_version: 2.6.14
79
+ signing_key:
80
+ specification_version: 4
81
+ summary: Encode/decode HTML entities
82
+ test_files:
83
+ - test/string_encodings_test.rb
84
+ - test/entities_test.rb
85
+ - test/encoding_test.rb
86
+ - test/interoperability_test.rb
87
+ - test/roundtrip_test.rb
88
+ - test/html4_test.rb
89
+ - test/expanded_test.rb
90
+ - test/decoding_test.rb
91
+ - test/xhtml1_test.rb