htmlentities 3.0.1 → 4.0.0
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.
- data/{COPYING → COPYING.txt} +0 -0
- data/{CHANGES → History.txt} +15 -0
- data/README.txt +44 -0
- data/lib/htmlentities.rb +118 -119
- data/lib/htmlentities/html4.rb +257 -0
- data/lib/htmlentities/legacy.rb +27 -0
- data/lib/htmlentities/xhtml1.rb +258 -0
- data/test/entities_test.rb +110 -33
- data/test/html4_test.rb +24 -0
- data/test/legacy_test.rb +34 -0
- data/test/roundtrip_test.rb +94 -0
- data/test/string_test.rb +1 -1
- data/test/{all.rb → test_all.rb} +0 -0
- data/test/xhtml1_test.rb +23 -0
- metadata +21 -13
- data/README +0 -23
    
        data/test/html4_test.rb
    ADDED
    
    | @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            $:.unshift(File.dirname(__FILE__) + '/../lib')
         | 
| 2 | 
            +
            require 'htmlentities'
         | 
| 3 | 
            +
            require 'test/unit'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            $KCODE = 'u'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            class HTMLEntities::HTML4Test < Test::Unit::TestCase
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              attr_reader :html_entities
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              def setup
         | 
| 12 | 
            +
                @html_entities = HTMLEntities.new('html4')
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              # Found by Marcos Kuhns
         | 
| 16 | 
            +
              def test_should_not_encode_apos_entity
         | 
| 17 | 
            +
                assert_equal "'", html_entities.encode("'", :basic)
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              def test_should_not_decode_apos_entity
         | 
| 21 | 
            +
                assert_equal "é'", html_entities.decode("é'")
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            end
         | 
    
        data/test/legacy_test.rb
    ADDED
    
    | @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            $:.unshift(File.dirname(__FILE__) + '/../lib')
         | 
| 2 | 
            +
            require 'htmlentities'
         | 
| 3 | 
            +
            require 'test/unit'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            $KCODE = 'u'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            #
         | 
| 8 | 
            +
            # Test that version 3.x functionality still works
         | 
| 9 | 
            +
            #
         | 
| 10 | 
            +
            class HTMLEntities::LegacyTest < Test::Unit::TestCase
         | 
| 11 | 
            +
              
         | 
| 12 | 
            +
              def test_should_decode_via_legacy_interface
         | 
| 13 | 
            +
                assert_decode('&', '&')
         | 
| 14 | 
            +
                assert_decode('±', '±')
         | 
| 15 | 
            +
                assert_decode('“', '“')
         | 
| 16 | 
            +
                assert_decode('—', '—')
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              def test_should_encode_via_legacy_interface
         | 
| 20 | 
            +
                assert_encode('&', '&', :basic)
         | 
| 21 | 
            +
                assert_encode('ð', 'ð', :named)
         | 
| 22 | 
            +
                assert_encode('…', '…', :decimal)
         | 
| 23 | 
            +
                assert_encode('−', '−', :hexadecimal)
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
              
         | 
| 26 | 
            +
              def assert_encode(expected, *encode_args)
         | 
| 27 | 
            +
                assert_equal expected, HTMLEntities.encode_entities(*encode_args)
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              def assert_decode(expected, *decode_args)
         | 
| 31 | 
            +
                assert_equal expected, HTMLEntities.decode_entities(*decode_args)
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
              
         | 
| 34 | 
            +
            end
         | 
| @@ -0,0 +1,94 @@ | |
| 1 | 
            +
            $:.unshift(File.dirname(__FILE__) + '/../lib')
         | 
| 2 | 
            +
            require 'htmlentities'
         | 
| 3 | 
            +
            require 'test/unit'
         | 
| 4 | 
            +
            require 'htmlentities/xhtml1'
         | 
| 5 | 
            +
            require 'htmlentities/html4'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            class HTMLEntities::RoundtripTest < Test::Unit::TestCase
         | 
| 8 | 
            +
              
         | 
| 9 | 
            +
              attr_reader :xhtml1_entities, :html4_entities
         | 
| 10 | 
            +
              
         | 
| 11 | 
            +
              def setup
         | 
| 12 | 
            +
                @xhtml1_entities = HTMLEntities.new('xhtml1')
         | 
| 13 | 
            +
                @html4_entities = HTMLEntities.new('html4')
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
              
         | 
| 16 | 
            +
              def test_should_roundtrip_xhtml1_entities_via_named_encoding
         | 
| 17 | 
            +
                each_mapping('xhtml1') do |name, string|
         | 
| 18 | 
            +
                  assert_equal(
         | 
| 19 | 
            +
                    string, 
         | 
| 20 | 
            +
                    xhtml1_entities.decode(xhtml1_entities.encode(string, :named))
         | 
| 21 | 
            +
                  )
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              def test_should_roundtrip_xhtml1_entities_via_basic_and_named_encoding
         | 
| 26 | 
            +
                each_mapping('xhtml1') do |name, string|
         | 
| 27 | 
            +
                  assert_equal(
         | 
| 28 | 
            +
                    string, 
         | 
| 29 | 
            +
                    xhtml1_entities.decode(xhtml1_entities.encode(string, :basic, :named))
         | 
| 30 | 
            +
                  )
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
              
         | 
| 34 | 
            +
              def test_should_roundtrip_xhtml1_entities_via_basic_named_and_decimal_encoding
         | 
| 35 | 
            +
                each_mapping('xhtml1') do |name, string|
         | 
| 36 | 
            +
                  assert_equal(
         | 
| 37 | 
            +
                    string, 
         | 
| 38 | 
            +
                    xhtml1_entities.decode(xhtml1_entities.encode(string, :basic, :named, :decimal))
         | 
| 39 | 
            +
                  )
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
              
         | 
| 43 | 
            +
              def test_should_roundtrip_xhtml1_entities_via_hexadecimal_encoding
         | 
| 44 | 
            +
                each_mapping('xhtml1') do |name, string|
         | 
| 45 | 
            +
                  assert_equal(
         | 
| 46 | 
            +
                    string, 
         | 
| 47 | 
            +
                    xhtml1_entities.decode(xhtml1_entities.encode(string, :hexadecimal))
         | 
| 48 | 
            +
                  )
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
              end
         | 
| 51 | 
            +
              
         | 
| 52 | 
            +
              def test_should_roundtrip_html4_entities_via_named_encoding
         | 
| 53 | 
            +
                each_mapping('html4') do |name, string|
         | 
| 54 | 
            +
                  assert_equal(
         | 
| 55 | 
            +
                    string, 
         | 
| 56 | 
            +
                    html4_entities.decode(html4_entities.encode(string, :named))
         | 
| 57 | 
            +
                  )
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              def test_should_roundtrip_html4_entities_via_basic_and_named_encoding
         | 
| 62 | 
            +
                each_mapping('html4') do |name, string|
         | 
| 63 | 
            +
                  assert_equal(
         | 
| 64 | 
            +
                    string, 
         | 
| 65 | 
            +
                    html4_entities.decode(html4_entities.encode(string, :basic, :named))
         | 
| 66 | 
            +
                  )
         | 
| 67 | 
            +
                end
         | 
| 68 | 
            +
              end
         | 
| 69 | 
            +
              
         | 
| 70 | 
            +
              def test_should_roundtrip_html4_entities_via_basic_named_and_decimal_encoding
         | 
| 71 | 
            +
                each_mapping('html4') do |name, string|
         | 
| 72 | 
            +
                  assert_equal(
         | 
| 73 | 
            +
                    string, 
         | 
| 74 | 
            +
                    html4_entities.decode(html4_entities.encode(string, :basic, :named, :decimal))
         | 
| 75 | 
            +
                  )
         | 
| 76 | 
            +
                end
         | 
| 77 | 
            +
              end
         | 
| 78 | 
            +
              
         | 
| 79 | 
            +
              def test_should_roundtrip_html4_entities_via_hexadecimal_encoding
         | 
| 80 | 
            +
                each_mapping('html4') do |name, string|
         | 
| 81 | 
            +
                  assert_equal(
         | 
| 82 | 
            +
                    string, 
         | 
| 83 | 
            +
                    html4_entities.decode(html4_entities.encode(string, :hexadecimal))
         | 
| 84 | 
            +
                  )
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
              end
         | 
| 87 | 
            +
              
         | 
| 88 | 
            +
              def each_mapping(flavor)
         | 
| 89 | 
            +
                HTMLEntities::MAPPINGS[flavor].each do |name, codepoint|
         | 
| 90 | 
            +
                  yield name, [codepoint].pack('U')
         | 
| 91 | 
            +
                end
         | 
| 92 | 
            +
              end
         | 
| 93 | 
            +
              
         | 
| 94 | 
            +
            end
         | 
    
        data/test/string_test.rb
    CHANGED
    
    
    
        data/test/{all.rb → test_all.rb}
    RENAMED
    
    | 
            File without changes
         | 
    
        data/test/xhtml1_test.rb
    ADDED
    
    | @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            $:.unshift(File.dirname(__FILE__) + '/../lib')
         | 
| 2 | 
            +
            require 'htmlentities'
         | 
| 3 | 
            +
            require 'test/unit'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            $KCODE = 'u'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            class HTMLEntities::XHTML1Test < Test::Unit::TestCase
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              attr_reader :html_entities
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              def setup
         | 
| 12 | 
            +
                @html_entities = HTMLEntities.new('xhtml1')
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              def test_should_encode_apos_entity
         | 
| 16 | 
            +
                assert_equal "'", html_entities.encode("'", :basic)
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              def test_should_decode_apos_entity
         | 
| 20 | 
            +
                assert_equal "é'", html_entities.decode("é'")
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 | 
            -
            rubygems_version: 0. | 
| 2 | 
            +
            rubygems_version: 0.9.1
         | 
| 3 3 | 
             
            specification_version: 1
         | 
| 4 4 | 
             
            name: htmlentities
         | 
| 5 5 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 6 | 
            -
              version:  | 
| 7 | 
            -
            date:  | 
| 8 | 
            -
            summary: A module for encoding and decoding  | 
| 6 | 
            +
              version: 4.0.0
         | 
| 7 | 
            +
            date: 2007-03-15 00:00:00 +00:00
         | 
| 8 | 
            +
            summary: A module for encoding and decoding (X)HTML entities.
         | 
| 9 9 | 
             
            require_paths: 
         | 
| 10 10 | 
             
            - lib
         | 
| 11 11 | 
             
            email: pbattley@gmail.com
         | 
| 12 | 
            -
            homepage: 
         | 
| 12 | 
            +
            homepage: http://htmlentities.rubyforge.org/
         | 
| 13 13 | 
             
            rubyforge_project: 
         | 
| 14 14 | 
             
            description: 
         | 
| 15 15 | 
             
            autorequire: 
         | 
| @@ -25,25 +25,33 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement | |
| 25 25 | 
             
            platform: ruby
         | 
| 26 26 | 
             
            signing_key: 
         | 
| 27 27 | 
             
            cert_chain: 
         | 
| 28 | 
            +
            post_install_message: 
         | 
| 28 29 | 
             
            authors: 
         | 
| 29 30 | 
             
            - Paul Battley
         | 
| 30 31 | 
             
            files: 
         | 
| 31 32 | 
             
            - lib/htmlentities.rb
         | 
| 33 | 
            +
            - lib/htmlentities/html4.rb
         | 
| 34 | 
            +
            - lib/htmlentities/legacy.rb
         | 
| 32 35 | 
             
            - lib/htmlentities/string.rb
         | 
| 33 | 
            -
            -  | 
| 36 | 
            +
            - lib/htmlentities/xhtml1.rb
         | 
| 34 37 | 
             
            - test/entities_test.rb
         | 
| 38 | 
            +
            - test/html4_test.rb
         | 
| 39 | 
            +
            - test/legacy_test.rb
         | 
| 40 | 
            +
            - test/roundtrip_test.rb
         | 
| 35 41 | 
             
            - test/string_test.rb
         | 
| 36 | 
            -
            -  | 
| 37 | 
            -
            -  | 
| 38 | 
            -
            -  | 
| 42 | 
            +
            - test/test_all.rb
         | 
| 43 | 
            +
            - test/xhtml1_test.rb
         | 
| 44 | 
            +
            - README.txt
         | 
| 45 | 
            +
            - History.txt
         | 
| 46 | 
            +
            - COPYING.txt
         | 
| 39 47 | 
             
            test_files: 
         | 
| 40 | 
            -
            - test/ | 
| 48 | 
            +
            - test/test_all.rb
         | 
| 41 49 | 
             
            rdoc_options: []
         | 
| 42 50 |  | 
| 43 51 | 
             
            extra_rdoc_files: 
         | 
| 44 | 
            -
            - README
         | 
| 45 | 
            -
            -  | 
| 46 | 
            -
            - COPYING
         | 
| 52 | 
            +
            - README.txt
         | 
| 53 | 
            +
            - History.txt
         | 
| 54 | 
            +
            - COPYING.txt
         | 
| 47 55 | 
             
            executables: []
         | 
| 48 56 |  | 
| 49 57 | 
             
            extensions: []
         | 
    
        data/README
    DELETED
    
    | @@ -1,23 +0,0 @@ | |
| 1 | 
            -
            == HTMLEntities
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            HTML entity encoding and decoding for Ruby
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            The HTMLEntities module facilitates encoding and decoding of
         | 
| 6 | 
            -
            HTML/XML entities from/to their corresponding UTF-8 codepoints.
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            To install (requires root/admin privileges):
         | 
| 9 | 
            -
             | 
| 10 | 
            -
             ruby setup.rb
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            Alternatively, you can just use the gem.
         | 
| 13 | 
            -
             | 
| 14 | 
            -
            == Licence
         | 
| 15 | 
            -
             | 
| 16 | 
            -
            This code is free to use under the terms of the MIT licence. If you'd like to
         | 
| 17 | 
            -
            negotiate a different licence for a specific use, just contact me -- I'll
         | 
| 18 | 
            -
            almost certainly permit it.
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            == Contact
         | 
| 21 | 
            -
             | 
| 22 | 
            -
            Comments are welcome. Send an email to pbattley@gmail.com.
         | 
| 23 | 
            -
             |