escape_utils 1.2.0 → 1.3.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.
- checksums.yaml +5 -5
 - data/.github/workflows/ci.yml +43 -0
 - data/.gitignore +0 -1
 - data/CHANGELOG.md +23 -0
 - data/Gemfile +15 -0
 - data/README.md +48 -91
 - data/Rakefile +4 -2
 - data/benchmark/html_escape_once.rb +25 -0
 - data/benchmark/javascript_escape.rb +1 -1
 - data/benchmark/javascript_unescape.rb +1 -1
 - data/benchmark/url_decode.rb +28 -0
 - data/benchmark/url_encode.rb +37 -0
 - data/benchmark/xml_escape.rb +7 -11
 - data/bin/console +8 -0
 - data/escape_utils.gemspec +1 -12
 - data/ext/escape_utils/escape_utils.c +8 -115
 - data/ext/escape_utils/houdini.h +3 -5
 - data/ext/escape_utils/houdini_html_e.c +52 -24
 - data/ext/escape_utils/houdini_js_e.c +15 -3
 - data/ext/escape_utils/houdini_uri_e.c +7 -18
 - data/ext/escape_utils/houdini_uri_u.c +5 -15
 - data/ext/escape_utils/houdini_xml_e.c +15 -1
 - data/lib/escape_utils/html/cgi.rb +10 -8
 - data/lib/escape_utils/html/erb.rb +1 -10
 - data/lib/escape_utils/html/haml.rb +1 -7
 - data/lib/escape_utils/html/rack.rb +3 -3
 - data/lib/escape_utils/html_safety.rb +13 -0
 - data/lib/escape_utils/url/cgi.rb +0 -8
 - data/lib/escape_utils/url/erb.rb +1 -1
 - data/lib/escape_utils/url/rack.rb +0 -12
 - data/lib/escape_utils/url/uri.rb +11 -7
 - data/lib/escape_utils/version.rb +1 -1
 - data/lib/escape_utils/xml/builder.rb +2 -2
 - data/lib/escape_utils.rb +61 -9
 - data/test/helper.rb +16 -3
 - data/test/html/escape_test.rb +66 -42
 - data/test/html/unescape_test.rb +3 -21
 - data/test/html_safety_test.rb +1 -27
 - data/test/javascript/escape_test.rb +53 -20
 - data/test/javascript/unescape_test.rb +16 -18
 - data/test/query/escape_test.rb +3 -21
 - data/test/query/unescape_test.rb +5 -23
 - data/test/uri/escape_test.rb +16 -18
 - data/test/uri/unescape_test.rb +17 -19
 - data/test/uri_component/escape_test.rb +15 -17
 - data/test/uri_component/unescape_test.rb +17 -19
 - data/test/url/escape_test.rb +3 -21
 - data/test/url/unescape_test.rb +5 -23
 - data/test/xml/escape_test.rb +15 -17
 - metadata +14 -127
 - data/.travis.yml +0 -7
 - data/benchmark/html_escape.rb +0 -68
 - data/benchmark/html_unescape.rb +0 -35
 - data/benchmark/url_escape.rb +0 -56
 - data/benchmark/url_unescape.rb +0 -50
 - data/ext/escape_utils/houdini_html_u.c +0 -122
 
| 
         @@ -43,26 +43,24 @@ class UriComponentEscapeTest < Minitest::Test 
     | 
|
| 
       43 
43 
     | 
    
         
             
                assert_equal "a%2Fslash", EscapeUtils.escape_uri_component("a/slash")
         
     | 
| 
       44 
44 
     | 
    
         
             
              end
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
               
     | 
| 
       47 
     | 
    
         
            -
                 
     | 
| 
       48 
     | 
    
         
            -
                  str = "fo<o>bar"
         
     | 
| 
      
 46 
     | 
    
         
            +
              def test_input_must_be_utf8_or_ascii
         
     | 
| 
      
 47 
     | 
    
         
            +
                str = "fo<o>bar"
         
     | 
| 
       49 
48 
     | 
    
         | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                  end
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                  str.force_encoding 'UTF-8'
         
     | 
| 
       56 
     | 
    
         
            -
                  begin
         
     | 
| 
       57 
     | 
    
         
            -
                    EscapeUtils.escape_uri_component(str)
         
     | 
| 
       58 
     | 
    
         
            -
                  rescue Encoding::CompatibilityError => e
         
     | 
| 
       59 
     | 
    
         
            -
                    assert_nil e, "#{e.class.name} raised, expected not to"
         
     | 
| 
       60 
     | 
    
         
            -
                  end
         
     | 
| 
      
 49 
     | 
    
         
            +
                str.force_encoding 'ISO-8859-1'
         
     | 
| 
      
 50 
     | 
    
         
            +
                assert_raises Encoding::CompatibilityError do
         
     | 
| 
      
 51 
     | 
    
         
            +
                  EscapeUtils.escape_uri_component(str)
         
     | 
| 
       61 
52 
     | 
    
         
             
                end
         
     | 
| 
       62 
53 
     | 
    
         | 
| 
       63 
     | 
    
         
            -
                 
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
                   
     | 
| 
      
 54 
     | 
    
         
            +
                str.force_encoding 'UTF-8'
         
     | 
| 
      
 55 
     | 
    
         
            +
                begin
         
     | 
| 
      
 56 
     | 
    
         
            +
                  EscapeUtils.escape_uri_component(str)
         
     | 
| 
      
 57 
     | 
    
         
            +
                rescue Encoding::CompatibilityError => e
         
     | 
| 
      
 58 
     | 
    
         
            +
                  assert_nil e, "#{e.class.name} raised, expected not to"
         
     | 
| 
       66 
59 
     | 
    
         
             
                end
         
     | 
| 
       67 
60 
     | 
    
         
             
              end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              def test_return_value_is_tagged_as_utf8
         
     | 
| 
      
 63 
     | 
    
         
            +
                str = "fo<o>bar"
         
     | 
| 
      
 64 
     | 
    
         
            +
                assert_equal Encoding.find('UTF-8'), EscapeUtils.escape_uri_component(str).encoding
         
     | 
| 
      
 65 
     | 
    
         
            +
              end
         
     | 
| 
       68 
66 
     | 
    
         
             
            end
         
     | 
| 
         @@ -39,33 +39,31 @@ class UriComponentUnescapeTest < Minitest::Test 
     | 
|
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
              def test_multibyte_characters
         
     | 
| 
       41 
41 
     | 
    
         
             
                matz_name = "\xE3\x81\xBE\xE3\x81\xA4\xE3\x82\x82\xE3\x81\xA8" # Matsumoto
         
     | 
| 
       42 
     | 
    
         
            -
                matz_name.force_encoding('UTF-8') 
     | 
| 
      
 42 
     | 
    
         
            +
                matz_name.force_encoding('UTF-8')
         
     | 
| 
       43 
43 
     | 
    
         
             
                assert_equal matz_name, EscapeUtils.unescape_uri_component('%E3%81%BE%E3%81%A4%E3%82%82%E3%81%A8')
         
     | 
| 
       44 
44 
     | 
    
         
             
                matz_name_sep = "\xE3\x81\xBE\xE3\x81\xA4 \xE3\x82\x82\xE3\x81\xA8" # Matsu moto
         
     | 
| 
       45 
     | 
    
         
            -
                matz_name_sep.force_encoding('UTF-8') 
     | 
| 
      
 45 
     | 
    
         
            +
                matz_name_sep.force_encoding('UTF-8')
         
     | 
| 
       46 
46 
     | 
    
         
             
                assert_equal matz_name_sep, EscapeUtils.unescape_uri_component('%E3%81%BE%E3%81%A4%20%E3%82%82%E3%81%A8')
         
     | 
| 
       47 
47 
     | 
    
         
             
              end
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
               
     | 
| 
       50 
     | 
    
         
            -
                 
     | 
| 
       51 
     | 
    
         
            -
                  escaped = EscapeUtils.escape_uri_component("fo<o>bar")
         
     | 
| 
      
 49 
     | 
    
         
            +
              def test_input_must_be_valid_utf8_or_ascii
         
     | 
| 
      
 50 
     | 
    
         
            +
                escaped = EscapeUtils.escape_uri_component("fo<o>bar")
         
     | 
| 
       52 
51 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
                  end
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                  escaped.force_encoding 'UTF-8'
         
     | 
| 
       59 
     | 
    
         
            -
                  begin
         
     | 
| 
       60 
     | 
    
         
            -
                    EscapeUtils.unescape_uri_component(escaped)
         
     | 
| 
       61 
     | 
    
         
            -
                  rescue Encoding::CompatibilityError => e
         
     | 
| 
       62 
     | 
    
         
            -
                    assert_nil e, "#{e.class.name} raised, expected not to"
         
     | 
| 
       63 
     | 
    
         
            -
                  end
         
     | 
| 
      
 52 
     | 
    
         
            +
                escaped.force_encoding 'ISO-8859-1'
         
     | 
| 
      
 53 
     | 
    
         
            +
                assert_raises Encoding::CompatibilityError do
         
     | 
| 
      
 54 
     | 
    
         
            +
                  EscapeUtils.unescape_uri_component(escaped)
         
     | 
| 
       64 
55 
     | 
    
         
             
                end
         
     | 
| 
       65 
56 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
                 
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                   
     | 
| 
      
 57 
     | 
    
         
            +
                escaped.force_encoding 'UTF-8'
         
     | 
| 
      
 58 
     | 
    
         
            +
                begin
         
     | 
| 
      
 59 
     | 
    
         
            +
                  EscapeUtils.unescape_uri_component(escaped)
         
     | 
| 
      
 60 
     | 
    
         
            +
                rescue Encoding::CompatibilityError => e
         
     | 
| 
      
 61 
     | 
    
         
            +
                  assert_nil e, "#{e.class.name} raised, expected not to"
         
     | 
| 
       69 
62 
     | 
    
         
             
                end
         
     | 
| 
       70 
63 
     | 
    
         
             
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
              def test_return_value_is_tagged_as_utf8
         
     | 
| 
      
 66 
     | 
    
         
            +
                escaped = EscapeUtils.escape_uri_component("fo<o>bar")
         
     | 
| 
      
 67 
     | 
    
         
            +
                assert_equal Encoding.find('UTF-8'), EscapeUtils.unescape_uri_component(escaped).encoding
         
     | 
| 
      
 68 
     | 
    
         
            +
              end
         
     | 
| 
       71 
69 
     | 
    
         
             
            end
         
     | 
    
        data/test/url/escape_test.rb
    CHANGED
    
    | 
         @@ -41,26 +41,8 @@ class UrlEscapeTest < Minitest::Test 
     | 
|
| 
       41 
41 
     | 
    
         
             
                assert_equal "a%2Fslash", EscapeUtils.escape_url("a/slash")
         
     | 
| 
       42 
42 
     | 
    
         
             
              end
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
               
     | 
| 
       45 
     | 
    
         
            -
                 
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                  str.force_encoding 'ISO-8859-1'
         
     | 
| 
       49 
     | 
    
         
            -
                  assert_raises Encoding::CompatibilityError do
         
     | 
| 
       50 
     | 
    
         
            -
                    EscapeUtils.escape_url(str)
         
     | 
| 
       51 
     | 
    
         
            -
                  end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                  str.force_encoding 'UTF-8'
         
     | 
| 
       54 
     | 
    
         
            -
                  begin
         
     | 
| 
       55 
     | 
    
         
            -
                    EscapeUtils.escape_url(str)
         
     | 
| 
       56 
     | 
    
         
            -
                  rescue Encoding::CompatibilityError => e
         
     | 
| 
       57 
     | 
    
         
            -
                    assert_nil e, "#{e.class.name} raised, expected not to"
         
     | 
| 
       58 
     | 
    
         
            -
                  end
         
     | 
| 
       59 
     | 
    
         
            -
                end
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
                def test_return_value_is_tagged_as_utf8
         
     | 
| 
       62 
     | 
    
         
            -
                  str = "fo<o>bar"
         
     | 
| 
       63 
     | 
    
         
            -
                  assert_equal Encoding.find('UTF-8'), EscapeUtils.escape_url(str).encoding
         
     | 
| 
       64 
     | 
    
         
            -
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
              def test_return_value_is_tagged_as_utf8
         
     | 
| 
      
 45 
     | 
    
         
            +
                str = "fo<o>bar"
         
     | 
| 
      
 46 
     | 
    
         
            +
                assert_equal Encoding.find('UTF-8'), EscapeUtils.escape_url(str).encoding
         
     | 
| 
       65 
47 
     | 
    
         
             
              end
         
     | 
| 
       66 
48 
     | 
    
         
             
            end
         
     | 
    
        data/test/url/unescape_test.rb
    CHANGED
    
    | 
         @@ -28,10 +28,10 @@ class UrlUnescapeTest < Minitest::Test 
     | 
|
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
              def test_multibyte_characters
         
     | 
| 
       30 
30 
     | 
    
         
             
                matz_name = "\xE3\x81\xBE\xE3\x81\xA4\xE3\x82\x82\xE3\x81\xA8" # Matsumoto
         
     | 
| 
       31 
     | 
    
         
            -
                matz_name.force_encoding('UTF-8') 
     | 
| 
      
 31 
     | 
    
         
            +
                matz_name.force_encoding('UTF-8')
         
     | 
| 
       32 
32 
     | 
    
         
             
                assert_equal matz_name, EscapeUtils.unescape_url('%E3%81%BE%E3%81%A4%E3%82%82%E3%81%A8')
         
     | 
| 
       33 
33 
     | 
    
         
             
                matz_name_sep = "\xE3\x81\xBE\xE3\x81\xA4 \xE3\x82\x82\xE3\x81\xA8" # Matsu moto
         
     | 
| 
       34 
     | 
    
         
            -
                matz_name_sep.force_encoding('UTF-8') 
     | 
| 
      
 34 
     | 
    
         
            +
                matz_name_sep.force_encoding('UTF-8')
         
     | 
| 
       35 
35 
     | 
    
         
             
                assert_equal matz_name_sep, EscapeUtils.unescape_url('%E3%81%BE%E3%81%A4%20%E3%82%82%E3%81%A8')
         
     | 
| 
       36 
36 
     | 
    
         
             
              end
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
         @@ -46,26 +46,8 @@ class UrlUnescapeTest < Minitest::Test 
     | 
|
| 
       46 
46 
     | 
    
         
             
                end
         
     | 
| 
       47 
47 
     | 
    
         
             
              end
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
               
     | 
| 
       50 
     | 
    
         
            -
                 
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                  escaped.force_encoding 'ISO-8859-1'
         
     | 
| 
       54 
     | 
    
         
            -
                  assert_raises Encoding::CompatibilityError do
         
     | 
| 
       55 
     | 
    
         
            -
                    EscapeUtils.unescape_url(escaped)
         
     | 
| 
       56 
     | 
    
         
            -
                  end
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                  escaped.force_encoding 'UTF-8'
         
     | 
| 
       59 
     | 
    
         
            -
                  begin
         
     | 
| 
       60 
     | 
    
         
            -
                    EscapeUtils.unescape_url(escaped)
         
     | 
| 
       61 
     | 
    
         
            -
                  rescue Encoding::CompatibilityError => e
         
     | 
| 
       62 
     | 
    
         
            -
                    assert_nil e, "#{e.class.name} raised, expected not to"
         
     | 
| 
       63 
     | 
    
         
            -
                  end
         
     | 
| 
       64 
     | 
    
         
            -
                end
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
                def test_return_value_is_tagged_as_utf8
         
     | 
| 
       67 
     | 
    
         
            -
                  escaped = EscapeUtils.escape_url("fo<o>bar")
         
     | 
| 
       68 
     | 
    
         
            -
                  assert_equal Encoding.find('UTF-8'), EscapeUtils.unescape_url(escaped).encoding
         
     | 
| 
       69 
     | 
    
         
            -
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
              def test_return_value_is_tagged_as_utf8
         
     | 
| 
      
 50 
     | 
    
         
            +
                escaped = EscapeUtils.escape_url("fo<o>bar")
         
     | 
| 
      
 51 
     | 
    
         
            +
                assert_equal Encoding.find('UTF-8'), EscapeUtils.unescape_url(escaped).encoding
         
     | 
| 
       70 
52 
     | 
    
         
             
              end
         
     | 
| 
       71 
53 
     | 
    
         
             
            end
         
     | 
    
        data/test/xml/escape_test.rb
    CHANGED
    
    | 
         @@ -42,26 +42,24 @@ class XmlEscapeTest < Minitest::Test 
     | 
|
| 
       42 
42 
     | 
    
         
             
                end
         
     | 
| 
       43 
43 
     | 
    
         
             
              end
         
     | 
| 
       44 
44 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
               
     | 
| 
       46 
     | 
    
         
            -
                 
     | 
| 
       47 
     | 
    
         
            -
                  str = "<some_tag/>"
         
     | 
| 
      
 45 
     | 
    
         
            +
              def test_input_must_be_utf8_or_ascii
         
     | 
| 
      
 46 
     | 
    
         
            +
                str = "<some_tag/>"
         
     | 
| 
       48 
47 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                  end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                  str.force_encoding 'UTF-8'
         
     | 
| 
       55 
     | 
    
         
            -
                  begin
         
     | 
| 
       56 
     | 
    
         
            -
                    EscapeUtils.escape_xml(str)
         
     | 
| 
       57 
     | 
    
         
            -
                  rescue Encoding::CompatibilityError => e
         
     | 
| 
       58 
     | 
    
         
            -
                    assert_nil e, "#{e.class.name} raised, expected not to"
         
     | 
| 
       59 
     | 
    
         
            -
                  end
         
     | 
| 
      
 48 
     | 
    
         
            +
                str.force_encoding 'ISO-8859-1'
         
     | 
| 
      
 49 
     | 
    
         
            +
                assert_raises Encoding::CompatibilityError do
         
     | 
| 
      
 50 
     | 
    
         
            +
                  EscapeUtils.escape_xml(str)
         
     | 
| 
       60 
51 
     | 
    
         
             
                end
         
     | 
| 
       61 
52 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
                 
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
                   
     | 
| 
      
 53 
     | 
    
         
            +
                str.force_encoding 'UTF-8'
         
     | 
| 
      
 54 
     | 
    
         
            +
                begin
         
     | 
| 
      
 55 
     | 
    
         
            +
                  EscapeUtils.escape_xml(str)
         
     | 
| 
      
 56 
     | 
    
         
            +
                rescue Encoding::CompatibilityError => e
         
     | 
| 
      
 57 
     | 
    
         
            +
                  assert_nil e, "#{e.class.name} raised, expected not to"
         
     | 
| 
       65 
58 
     | 
    
         
             
                end
         
     | 
| 
       66 
59 
     | 
    
         
             
              end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              def test_return_value_is_tagged_as_utf8
         
     | 
| 
      
 62 
     | 
    
         
            +
                str = "<some_tag/>"
         
     | 
| 
      
 63 
     | 
    
         
            +
                assert_equal Encoding.find('UTF-8'), EscapeUtils.escape_url(str).encoding
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
       67 
65 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,127 +1,15 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: escape_utils
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.3.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Brian Lopez
         
     | 
| 
       8 
     | 
    
         
            -
            autorequire: 
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
       12 
     | 
    
         
            -
            dependencies:
         
     | 
| 
       13 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
     | 
    
         
            -
              name: rake-compiler
         
     | 
| 
       15 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       16 
     | 
    
         
            -
                requirements:
         
     | 
| 
       17 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       18 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version: 0.7.5
         
     | 
| 
       20 
     | 
    
         
            -
              type: :development
         
     | 
| 
       21 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       22 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
     | 
    
         
            -
                requirements:
         
     | 
| 
       24 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       25 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
     | 
    
         
            -
                    version: 0.7.5
         
     | 
| 
       27 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
     | 
    
         
            -
              name: minitest
         
     | 
| 
       29 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       30 
     | 
    
         
            -
                requirements:
         
     | 
| 
       31 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       32 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       33 
     | 
    
         
            -
                    version: 5.0.0
         
     | 
| 
       34 
     | 
    
         
            -
              type: :development
         
     | 
| 
       35 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       36 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       37 
     | 
    
         
            -
                requirements:
         
     | 
| 
       38 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       39 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
     | 
    
         
            -
                    version: 5.0.0
         
     | 
| 
       41 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       42 
     | 
    
         
            -
              name: benchmark-ips
         
     | 
| 
       43 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       44 
     | 
    
         
            -
                requirements:
         
     | 
| 
       45 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       46 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       47 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       48 
     | 
    
         
            -
              type: :development
         
     | 
| 
       49 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       50 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       51 
     | 
    
         
            -
                requirements:
         
     | 
| 
       52 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       53 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       54 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       55 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       56 
     | 
    
         
            -
              name: rack
         
     | 
| 
       57 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       58 
     | 
    
         
            -
                requirements:
         
     | 
| 
       59 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       60 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       61 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       62 
     | 
    
         
            -
              type: :development
         
     | 
| 
       63 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       64 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       65 
     | 
    
         
            -
                requirements:
         
     | 
| 
       66 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       67 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       68 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       69 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       70 
     | 
    
         
            -
              name: haml
         
     | 
| 
       71 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       72 
     | 
    
         
            -
                requirements:
         
     | 
| 
       73 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       74 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       75 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       76 
     | 
    
         
            -
              type: :development
         
     | 
| 
       77 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       78 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       79 
     | 
    
         
            -
                requirements:
         
     | 
| 
       80 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       81 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       82 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       83 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       84 
     | 
    
         
            -
              name: fast_xs
         
     | 
| 
       85 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       86 
     | 
    
         
            -
                requirements:
         
     | 
| 
       87 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       88 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       89 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       90 
     | 
    
         
            -
              type: :development
         
     | 
| 
       91 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       92 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       93 
     | 
    
         
            -
                requirements:
         
     | 
| 
       94 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       95 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       96 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       97 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       98 
     | 
    
         
            -
              name: actionpack
         
     | 
| 
       99 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       100 
     | 
    
         
            -
                requirements:
         
     | 
| 
       101 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       102 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       103 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       104 
     | 
    
         
            -
              type: :development
         
     | 
| 
       105 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       106 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       107 
     | 
    
         
            -
                requirements:
         
     | 
| 
       108 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       109 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       110 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       111 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency
         
     | 
| 
       112 
     | 
    
         
            -
              name: url_escape
         
     | 
| 
       113 
     | 
    
         
            -
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       114 
     | 
    
         
            -
                requirements:
         
     | 
| 
       115 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       116 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       117 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
       118 
     | 
    
         
            -
              type: :development
         
     | 
| 
       119 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       120 
     | 
    
         
            -
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       121 
     | 
    
         
            -
                requirements:
         
     | 
| 
       122 
     | 
    
         
            -
                - - ">="
         
     | 
| 
       123 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       124 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2022-06-16 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies: []
         
     | 
| 
       125 
13 
     | 
    
         
             
            description: Quickly perform HTML, URL, URI and Javascript escaping/unescaping
         
     | 
| 
       126 
14 
     | 
    
         
             
            email: seniorlopez@gmail.com
         
     | 
| 
       127 
15 
     | 
    
         
             
            executables: []
         
     | 
| 
         @@ -129,19 +17,20 @@ extensions: 
     | 
|
| 
       129 
17 
     | 
    
         
             
            - ext/escape_utils/extconf.rb
         
     | 
| 
       130 
18 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       131 
19 
     | 
    
         
             
            files:
         
     | 
| 
      
 20 
     | 
    
         
            +
            - ".github/workflows/ci.yml"
         
     | 
| 
       132 
21 
     | 
    
         
             
            - ".gitignore"
         
     | 
| 
       133 
     | 
    
         
            -
            -  
     | 
| 
      
 22 
     | 
    
         
            +
            - CHANGELOG.md
         
     | 
| 
       134 
23 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       135 
24 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       136 
25 
     | 
    
         
             
            - README.md
         
     | 
| 
       137 
26 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       138 
     | 
    
         
            -
            - benchmark/ 
     | 
| 
       139 
     | 
    
         
            -
            - benchmark/html_unescape.rb
         
     | 
| 
      
 27 
     | 
    
         
            +
            - benchmark/html_escape_once.rb
         
     | 
| 
       140 
28 
     | 
    
         
             
            - benchmark/javascript_escape.rb
         
     | 
| 
       141 
29 
     | 
    
         
             
            - benchmark/javascript_unescape.rb
         
     | 
| 
       142 
     | 
    
         
            -
            - benchmark/ 
     | 
| 
       143 
     | 
    
         
            -
            - benchmark/ 
     | 
| 
      
 30 
     | 
    
         
            +
            - benchmark/url_decode.rb
         
     | 
| 
      
 31 
     | 
    
         
            +
            - benchmark/url_encode.rb
         
     | 
| 
       144 
32 
     | 
    
         
             
            - benchmark/xml_escape.rb
         
     | 
| 
      
 33 
     | 
    
         
            +
            - bin/console
         
     | 
| 
       145 
34 
     | 
    
         
             
            - escape_utils.gemspec
         
     | 
| 
       146 
35 
     | 
    
         
             
            - ext/escape_utils/buffer.c
         
     | 
| 
       147 
36 
     | 
    
         
             
            - ext/escape_utils/buffer.h
         
     | 
| 
         @@ -150,7 +39,6 @@ files: 
     | 
|
| 
       150 
39 
     | 
    
         
             
            - ext/escape_utils/houdini.h
         
     | 
| 
       151 
40 
     | 
    
         
             
            - ext/escape_utils/houdini_href_e.c
         
     | 
| 
       152 
41 
     | 
    
         
             
            - ext/escape_utils/houdini_html_e.c
         
     | 
| 
       153 
     | 
    
         
            -
            - ext/escape_utils/houdini_html_u.c
         
     | 
| 
       154 
42 
     | 
    
         
             
            - ext/escape_utils/houdini_js_e.c
         
     | 
| 
       155 
43 
     | 
    
         
             
            - ext/escape_utils/houdini_js_u.c
         
     | 
| 
       156 
44 
     | 
    
         
             
            - ext/escape_utils/houdini_uri_e.c
         
     | 
| 
         @@ -191,7 +79,7 @@ homepage: https://github.com/brianmario/escape_utils 
     | 
|
| 
       191 
79 
     | 
    
         
             
            licenses:
         
     | 
| 
       192 
80 
     | 
    
         
             
            - MIT
         
     | 
| 
       193 
81 
     | 
    
         
             
            metadata: {}
         
     | 
| 
       194 
     | 
    
         
            -
            post_install_message: 
     | 
| 
      
 82 
     | 
    
         
            +
            post_install_message:
         
     | 
| 
       195 
83 
     | 
    
         
             
            rdoc_options:
         
     | 
| 
       196 
84 
     | 
    
         
             
            - "--charset=UTF-8"
         
     | 
| 
       197 
85 
     | 
    
         
             
            require_paths:
         
     | 
| 
         @@ -200,16 +88,15 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       200 
88 
     | 
    
         
             
              requirements:
         
     | 
| 
       201 
89 
     | 
    
         
             
              - - ">="
         
     | 
| 
       202 
90 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       203 
     | 
    
         
            -
                  version:  
     | 
| 
      
 91 
     | 
    
         
            +
                  version: '2.5'
         
     | 
| 
       204 
92 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       205 
93 
     | 
    
         
             
              requirements:
         
     | 
| 
       206 
94 
     | 
    
         
             
              - - ">="
         
     | 
| 
       207 
95 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       208 
96 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       209 
97 
     | 
    
         
             
            requirements: []
         
     | 
| 
       210 
     | 
    
         
            -
             
     | 
| 
       211 
     | 
    
         
            -
             
     | 
| 
       212 
     | 
    
         
            -
            signing_key: 
         
     | 
| 
      
 98 
     | 
    
         
            +
            rubygems_version: 3.1.2
         
     | 
| 
      
 99 
     | 
    
         
            +
            signing_key:
         
     | 
| 
       213 
100 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       214 
101 
     | 
    
         
             
            summary: Faster string escaping routines for your web apps
         
     | 
| 
       215 
102 
     | 
    
         
             
            test_files:
         
     | 
    
        data/.travis.yml
    DELETED
    
    
    
        data/benchmark/html_escape.rb
    DELETED
    
    | 
         @@ -1,68 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'bundler/setup'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'benchmark/ips'
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            require 'rack'
         
     | 
| 
       8 
     | 
    
         
            -
            require 'erb'
         
     | 
| 
       9 
     | 
    
         
            -
            require 'cgi'
         
     | 
| 
       10 
     | 
    
         
            -
            require 'haml'
         
     | 
| 
       11 
     | 
    
         
            -
            require 'fast_xs_extra'
         
     | 
| 
       12 
     | 
    
         
            -
            require 'escape_utils'
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            module HamlBench
         
     | 
| 
       15 
     | 
    
         
            -
              extend Haml::Helpers
         
     | 
| 
       16 
     | 
    
         
            -
            end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
            url = "https://en.wikipedia.org/wiki/Succession_to_the_British_throne"
         
     | 
| 
       19 
     | 
    
         
            -
            html = `curl -s #{url}`
         
     | 
| 
       20 
     | 
    
         
            -
            html = html.force_encoding('utf-8') if html.respond_to?(:force_encoding)
         
     | 
| 
       21 
     | 
    
         
            -
            puts "Escaping #{html.bytesize} bytes of html from #{url}"
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
            Benchmark.ips do |x|
         
     | 
| 
       24 
     | 
    
         
            -
              x.report "Rack::Utils.escape_html" do |times|
         
     | 
| 
       25 
     | 
    
         
            -
                times.times do
         
     | 
| 
       26 
     | 
    
         
            -
                  Rack::Utils.escape_html(html)
         
     | 
| 
       27 
     | 
    
         
            -
                end
         
     | 
| 
       28 
     | 
    
         
            -
              end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
              x.report "Haml::Helpers.html_escape" do |times|
         
     | 
| 
       31 
     | 
    
         
            -
                times.times do
         
     | 
| 
       32 
     | 
    
         
            -
                  HamlBench.html_escape(html)
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
              end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
              x.report "ERB::Util.html_escape" do |times|
         
     | 
| 
       37 
     | 
    
         
            -
                times.times do
         
     | 
| 
       38 
     | 
    
         
            -
                  ERB::Util.html_escape(html)
         
     | 
| 
       39 
     | 
    
         
            -
                end
         
     | 
| 
       40 
     | 
    
         
            -
              end
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
              x.report "CGI.escapeHTML" do |times|
         
     | 
| 
       43 
     | 
    
         
            -
                times.times do
         
     | 
| 
       44 
     | 
    
         
            -
                  CGI.escapeHTML(html)
         
     | 
| 
       45 
     | 
    
         
            -
                end
         
     | 
| 
       46 
     | 
    
         
            -
              end
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
              x.report "String#gsub" do |times|
         
     | 
| 
       49 
     | 
    
         
            -
                html_escape = { '&' => '&',  '>' => '>',   '<' => '<', '"' => '"', "'" => ''' }
         
     | 
| 
       50 
     | 
    
         
            -
                times.times do
         
     | 
| 
       51 
     | 
    
         
            -
                  html.gsub(/[&"'><]/, html_escape)
         
     | 
| 
       52 
     | 
    
         
            -
                end
         
     | 
| 
       53 
     | 
    
         
            -
              end
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
              x.report "fast_xs_extra#fast_xs_html" do |times|
         
     | 
| 
       56 
     | 
    
         
            -
                times.times do
         
     | 
| 
       57 
     | 
    
         
            -
                  html.fast_xs_html
         
     | 
| 
       58 
     | 
    
         
            -
                end
         
     | 
| 
       59 
     | 
    
         
            -
              end
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
              x.report "EscapeUtils.escape_html" do |times|
         
     | 
| 
       62 
     | 
    
         
            -
                times.times do
         
     | 
| 
       63 
     | 
    
         
            -
                  EscapeUtils.escape_html(html)
         
     | 
| 
       64 
     | 
    
         
            -
                end
         
     | 
| 
       65 
     | 
    
         
            -
              end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
              x.compare!
         
     | 
| 
       68 
     | 
    
         
            -
            end
         
     | 
    
        data/benchmark/html_unescape.rb
    DELETED
    
    | 
         @@ -1,35 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'bundler/setup'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'benchmark/ips'
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            require 'cgi'
         
     | 
| 
       8 
     | 
    
         
            -
            require 'haml'
         
     | 
| 
       9 
     | 
    
         
            -
            require 'escape_utils'
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            module HamlBench
         
     | 
| 
       12 
     | 
    
         
            -
              extend Haml::Helpers
         
     | 
| 
       13 
     | 
    
         
            -
            end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
            url = "https://en.wikipedia.org/wiki/Succession_to_the_British_throne"
         
     | 
| 
       16 
     | 
    
         
            -
            html = `curl -s #{url}`
         
     | 
| 
       17 
     | 
    
         
            -
            html = html.force_encoding('binary') if html.respond_to?(:force_encoding)
         
     | 
| 
       18 
     | 
    
         
            -
            escaped_html = EscapeUtils.escape_html(html)
         
     | 
| 
       19 
     | 
    
         
            -
            puts "Unescaping #{escaped_html.bytesize} bytes of escaped html, from #{url}"
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
            Benchmark.ips do |x|
         
     | 
| 
       22 
     | 
    
         
            -
              x.report "CGI.unescapeHTML" do |times|
         
     | 
| 
       23 
     | 
    
         
            -
                times.times do
         
     | 
| 
       24 
     | 
    
         
            -
                  CGI.unescapeHTML(escaped_html)
         
     | 
| 
       25 
     | 
    
         
            -
                end
         
     | 
| 
       26 
     | 
    
         
            -
              end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              x.report "EscapeUtils.unescape_html" do |times|
         
     | 
| 
       29 
     | 
    
         
            -
                times.times do
         
     | 
| 
       30 
     | 
    
         
            -
                  EscapeUtils.unescape_html(escaped_html)
         
     | 
| 
       31 
     | 
    
         
            -
                end
         
     | 
| 
       32 
     | 
    
         
            -
              end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
              x.compare!
         
     | 
| 
       35 
     | 
    
         
            -
            end
         
     | 
    
        data/benchmark/url_escape.rb
    DELETED
    
    | 
         @@ -1,56 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'bundler/setup'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'benchmark/ips'
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            require 'rack'
         
     | 
| 
       8 
     | 
    
         
            -
            require 'erb'
         
     | 
| 
       9 
     | 
    
         
            -
            require 'cgi'
         
     | 
| 
       10 
     | 
    
         
            -
            require 'url_escape'
         
     | 
| 
       11 
     | 
    
         
            -
            require 'fast_xs_extra'
         
     | 
| 
       12 
     | 
    
         
            -
            require 'escape_utils'
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            url = "https://www.yourmom.com/cgi-bin/session.cgi?sess_args=mYHcEA  dh435dqUs0moGHeeAJTSLLbdbcbd9ef----,574b95600e9ab7d27eb0bf524ac68c27----"
         
     | 
| 
       15 
     | 
    
         
            -
            url = url.force_encoding('us-ascii') if url.respond_to?(:force_encoding)
         
     | 
| 
       16 
     | 
    
         
            -
            puts "Escaping a #{url.bytesize} byte URL times"
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
            Benchmark.ips do |x|
         
     | 
| 
       19 
     | 
    
         
            -
              x.report "ERB::Util.url_encode" do |times|
         
     | 
| 
       20 
     | 
    
         
            -
                times.times do
         
     | 
| 
       21 
     | 
    
         
            -
                  ERB::Util.url_encode(url)
         
     | 
| 
       22 
     | 
    
         
            -
                end
         
     | 
| 
       23 
     | 
    
         
            -
              end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
              x.report "Rack::Utils.escape" do |times|
         
     | 
| 
       26 
     | 
    
         
            -
                times.times do
         
     | 
| 
       27 
     | 
    
         
            -
                  Rack::Utils.escape(url)
         
     | 
| 
       28 
     | 
    
         
            -
                end
         
     | 
| 
       29 
     | 
    
         
            -
              end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
              x.report "CGI.escape" do |times|
         
     | 
| 
       32 
     | 
    
         
            -
                times.times do
         
     | 
| 
       33 
     | 
    
         
            -
                  CGI.escape(url)
         
     | 
| 
       34 
     | 
    
         
            -
                end
         
     | 
| 
       35 
     | 
    
         
            -
              end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
              x.report "URLEscape#escape" do |times|
         
     | 
| 
       38 
     | 
    
         
            -
                times.times do
         
     | 
| 
       39 
     | 
    
         
            -
                  URLEscape.escape(url)
         
     | 
| 
       40 
     | 
    
         
            -
                end
         
     | 
| 
       41 
     | 
    
         
            -
              end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
              x.report "fast_xs_extra#fast_xs_url" do |times|
         
     | 
| 
       44 
     | 
    
         
            -
                times.times do
         
     | 
| 
       45 
     | 
    
         
            -
                  url.fast_xs_url
         
     | 
| 
       46 
     | 
    
         
            -
                end
         
     | 
| 
       47 
     | 
    
         
            -
              end
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
              x.report "EscapeUtils.escape_url" do |times|
         
     | 
| 
       50 
     | 
    
         
            -
                times.times do
         
     | 
| 
       51 
     | 
    
         
            -
                  EscapeUtils.escape_url(url)
         
     | 
| 
       52 
     | 
    
         
            -
                end
         
     | 
| 
       53 
     | 
    
         
            -
              end
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
              x.compare!
         
     | 
| 
       56 
     | 
    
         
            -
            end
         
     | 
    
        data/benchmark/url_unescape.rb
    DELETED
    
    | 
         @@ -1,50 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'bundler/setup'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'benchmark/ips'
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            require 'rack'
         
     | 
| 
       8 
     | 
    
         
            -
            require 'cgi'
         
     | 
| 
       9 
     | 
    
         
            -
            require 'url_escape'
         
     | 
| 
       10 
     | 
    
         
            -
            require 'fast_xs_extra'
         
     | 
| 
       11 
     | 
    
         
            -
            require 'escape_utils'
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
            url = "https://www.yourmom.com/cgi-bin/session.cgi?sess_args=mYHcEA  dh435dqUs0moGHeeAJTSLLbdbcbd9ef----,574b95600e9ab7d27eb0bf524ac68c27----"
         
     | 
| 
       14 
     | 
    
         
            -
            url = url.force_encoding('us-ascii') if url.respond_to?(:force_encoding)
         
     | 
| 
       15 
     | 
    
         
            -
            escaped_url = EscapeUtils.escape_url(url)
         
     | 
| 
       16 
     | 
    
         
            -
            puts "Escaping a #{url.bytesize} byte URL"
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
            Benchmark.ips do |x|
         
     | 
| 
       19 
     | 
    
         
            -
              x.report "Rack::Utils.unescape" do |times|
         
     | 
| 
       20 
     | 
    
         
            -
                times.times do
         
     | 
| 
       21 
     | 
    
         
            -
                  Rack::Utils.unescape(escaped_url)
         
     | 
| 
       22 
     | 
    
         
            -
                end
         
     | 
| 
       23 
     | 
    
         
            -
              end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
              x.report "CGI.unescape" do |times|
         
     | 
| 
       26 
     | 
    
         
            -
                times.times do
         
     | 
| 
       27 
     | 
    
         
            -
                  CGI.unescape(escaped_url)
         
     | 
| 
       28 
     | 
    
         
            -
                end
         
     | 
| 
       29 
     | 
    
         
            -
              end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
              x.report "URLEscape#unescape" do |times|
         
     | 
| 
       32 
     | 
    
         
            -
                times.times do
         
     | 
| 
       33 
     | 
    
         
            -
                  URLEscape.unescape(escaped_url)
         
     | 
| 
       34 
     | 
    
         
            -
                end
         
     | 
| 
       35 
     | 
    
         
            -
              end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
              x.report "fast_xs_extra#fast_uxs_cgi" do |times|
         
     | 
| 
       38 
     | 
    
         
            -
                times.times do
         
     | 
| 
       39 
     | 
    
         
            -
                  url.fast_uxs_cgi
         
     | 
| 
       40 
     | 
    
         
            -
                end
         
     | 
| 
       41 
     | 
    
         
            -
              end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
              x.report "EscapeUtils.unescape_url" do |times|
         
     | 
| 
       44 
     | 
    
         
            -
                times.times do
         
     | 
| 
       45 
     | 
    
         
            -
                  EscapeUtils.unescape_url(escaped_url)
         
     | 
| 
       46 
     | 
    
         
            -
                end
         
     | 
| 
       47 
     | 
    
         
            -
              end
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
              x.compare!
         
     | 
| 
       50 
     | 
    
         
            -
            end
         
     |