Index: sdk/lib/uri/encode_decode.dart |
diff --git a/sdk/lib/uri/encode_decode.dart b/sdk/lib/uri/encode_decode.dart |
deleted file mode 100644 |
index 6cddcc0408ba4121be92fc703c8a80c72da3e3af..0000000000000000000000000000000000000000 |
--- a/sdk/lib/uri/encode_decode.dart |
+++ /dev/null |
@@ -1,198 +0,0 @@ |
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-part of dart.uri; |
- |
-/** |
- * Javascript-like URI encode/decode functions. |
- * The documentation here borrows heavily from the original Javascript |
- * doumentation on MDN at: |
- * https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects |
- */ |
- |
-/** |
- * A JavaScript-like URI encoder. Encodes Uniform Resource Identifier [uri] |
- * by replacing each instance of certain characters by one, two, three, or four |
- * escape sequences representing the UTF-8 encoding of the character (will |
- * only be four escape sequences for characters composed of two "surrogate" |
- * characters). This assumes that [uri] is a complete URI, so does not encode |
- * reserved characters that have special meaning in the URI: [:#;,/?:@&=+\$:] |
- * It returns the escaped URI. |
- */ |
-String encodeUri(String uri) { |
- // Bit vector of 128 bits where each bit indicate whether a |
- // character code on the 0-127 needs to be escaped or not. |
- const canonicalTable = const [ |
- // LSB MSB |
- // | | |
- 0x0000, // 0x00 - 0x0f 0000000000000000 |
- 0x0000, // 0x10 - 0x1f 0000000000000000 |
- // ! #$ &'()*+,-./ |
- 0xf7da, // 0x20 - 0x2f 0101101111101111 |
- // 0123456789:; = ? |
- 0xafff, // 0x30 - 0x3f 1111111111110101 |
- // @ABCDEFGHIJKLMNO |
- 0xffff, // 0x40 - 0x4f 1111111111111111 |
- // PQRSTUVWXYZ _ |
- 0x87ff, // 0x50 - 0x5f 1111111111100001 |
- // abcdefghijklmno |
- 0xfffe, // 0x60 - 0x6f 0111111111111111 |
- // pqrstuvwxyz ~ |
- 0x47ff]; // 0x70 - 0x7f 1111111111100010 |
- return _uriEncode(canonicalTable, uri); |
-} |
- |
-/** |
- * An implementation of JavaScript's decodeURIComponent function. |
- * Decodes a Uniform Resource Identifier [uri] previously created by |
- * encodeURI or by a similar routine. It replaces each escape sequence |
- * in [uri] with the character that it represents. It does not decode |
- * escape sequences that could not have been introduced by encodeURI. |
- * It returns the unescaped URI. |
- */ |
-String decodeUri(String uri) { |
- return _uriDecode(uri); |
-} |
- |
-/** |
- * A javaScript-like URI component encoder, this encodes a URI |
- * [component] by replacing each instance of certain characters by one, |
- * two, three, or four escape sequences representing the UTF-8 encoding of |
- * the character (will only be four escape sequences for characters composed |
- * of two "surrogate" characters). |
- * To avoid unexpected requests to the server, you should call |
- * encodeURIComponent on any user-entered parameters that will be passed as |
- * part of a URI. For example, a user could type "Thyme &time=again" for a |
- * variable comment. Not using encodeURIComponent on this variable will give |
- * comment=Thyme%20&time=again. Note that the ampersand and the equal sign |
- * mark a new key and value pair. So instead of having a POST comment key |
- * equal to "Thyme &time=again", you have two POST keys, one equal to "Thyme " |
- * and another (time) equal to again. |
- * It returns the escaped string. |
- */ |
-String encodeUriComponent(String component) { |
- // Bit vector of 128 bits where each bit indicate whether a |
- // character code on the 0-127 needs to be escaped or not. |
- const canonicalTable = const [ |
- // LSB MSB |
- // | | |
- 0x0000, // 0x00 - 0x0f 0000000000000000 |
- 0x0000, // 0x10 - 0x1f 0000000000000000 |
- // ! '()* -. |
- 0x6782, // 0x20 - 0x2f 0100000111100110 |
- // 0123456789 |
- 0x03ff, // 0x30 - 0x3f 1111111111000000 |
- // @ABCDEFGHIJKLMNO |
- 0xfffe, // 0x40 - 0x4f 0111111111111111 |
- // PQRSTUVWXYZ _ |
- 0x87ff, // 0x50 - 0x5f 1111111111100001 |
- // abcdefghijklmno |
- 0xfffe, // 0x60 - 0x6f 0111111111111111 |
- // pqrstuvwxyz ~ |
- 0x47ff]; // 0x70 - 0x7f 1111111111100010 |
- return _uriEncode(canonicalTable, component); |
-} |
- |
-/** |
- * An implementation of JavaScript's decodeURIComponent function. |
- * Decodes a Uniform Resource Identifier (URI) [component] previously |
- * created by encodeURIComponent or by a similar routine. |
- * It returns the unescaped string. |
- */ |
-String decodeUriComponent(String encodedComponent) { |
- return _uriDecode(encodedComponent); |
-} |
- |
-/** |
- * This is the internal implementation of JavaScript's encodeURI function. |
- * It encodes all characters in the string [text] except for those |
- * that appear in [canonicalTable], and returns the escaped string. |
- */ |
-String _uriEncode(List<int> canonicalTable, String text) { |
- final String hex = '0123456789ABCDEF'; |
- var byteToHex = (int v) => '%${hex[v >> 4]}${hex[v & 0x0f]}'; |
- StringBuffer result = new StringBuffer(); |
- for (int i = 0; i < text.length; i++) { |
- int ch = text.codeUnitAt(i); |
- if (ch < 128 && ((canonicalTable[ch >> 4] & (1 << (ch & 0x0f))) != 0)) { |
- result.write(text[i]); |
- } else if (text[i] == " ") { |
- result.write("+"); |
- } else { |
- if (ch >= 0xD800 && ch < 0xDC00) { |
- // Low surrogate. We expect a next char high surrogate. |
- ++i; |
- int nextCh = text.length == i ? 0 : text.codeUnitAt(i); |
- if (nextCh >= 0xDC00 && nextCh < 0xE000) { |
- // convert the pair to a U+10000 codepoint |
- ch = 0x10000 + ((ch - 0xD800) << 10) + (nextCh - 0xDC00); |
- } else { |
- throw new ArgumentError('Malformed URI'); |
- } |
- } |
- for (int codepoint in codepointsToUtf8([ch])) { |
- result.write(byteToHex(codepoint)); |
- } |
- } |
- } |
- return result.toString(); |
-} |
- |
-/** |
- * Convert a byte (2 character hex sequence) in string [s] starting |
- * at position [pos] to its ordinal value |
- */ |
-int _hexCharPairToByte(String s, int pos) { |
- int byte = 0; |
- for (int i = 0; i < 2; i++) { |
- var charCode = s.codeUnitAt(pos + i); |
- if (0x30 <= charCode && charCode <= 0x39) { |
- byte = byte * 16 + charCode - 0x30; |
- } else { |
- // Check ranges A-F (0x41-0x46) and a-f (0x61-0x66). |
- charCode |= 0x20; |
- if (0x61 <= charCode && charCode <= 0x66) { |
- byte = byte * 16 + charCode - 0x57; |
- } else { |
- throw new ArgumentError("Invalid URL encoding"); |
- } |
- } |
- } |
- return byte; |
-} |
- |
-/** |
- * A JavaScript-like decodeURI function. It unescapes the string [text] and |
- * returns the unescaped string. |
- */ |
-String _uriDecode(String text) { |
- StringBuffer result = new StringBuffer(); |
- List<int> codepoints = new List<int>(); |
- for (int i = 0; i < text.length;) { |
- String ch = text[i]; |
- if (ch != '%') { |
- if (ch == '+') { |
- result.write(" "); |
- } else { |
- result.write(ch); |
- } |
- i++; |
- } else { |
- codepoints.clear(); |
- while (ch == '%') { |
- if (++i > text.length - 2) { |
- throw new ArgumentError('Truncated URI'); |
- } |
- codepoints.add(_hexCharPairToByte(text, i)); |
- i += 2; |
- if (i == text.length) |
- break; |
- ch = text[i]; |
- } |
- result.write(decodeUtf8(codepoints)); |
- } |
- } |
- return result.toString(); |
-} |
- |