Просмотр исходного кода

Auto merge of #134 - mikedilger:value_chars, r=SimonSapin

Added VALUE_CHARS EncodeSet

This character set is based off of rfc5987 section 3.2
https://tools.ietf.org/html/rfc5987#section-3.2
for the ABNF `value-chars` which is used by certain HTTP
header field values such as Content-Disposition `filename*`

Not sure about the constant name 'VALUE_CHARS'

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/rust-url/134)
<!-- Reviewable:end -->
bors-servo 11 лет назад
Родитель
Сommit
845e14b540
3 измененных файлов с 40 добавлено и 0 удалено
  1. 1 0
      make_encode_sets.py
  2. 36 0
      src/encode_sets.rs
  3. 3 0
      src/percent_encoding.rs

+ 1 - 0
make_encode_sets.py

@@ -29,6 +29,7 @@ for name, encoded in [
     ('PASSWORD', r''' "#<>`?{}@\/'''),
     ('USERNAME', r''' "#<>`?{}@\/:'''),
     ('FORM_URLENCODED', r''' !"#$%&\'()+,/:;<=>?@[\]^`{|}~'''),
+    ('HTTP_VALUE', r''' "%'()*,/:;<->?[\]{}'''),
 ]:
     print(
         "pub static %s: [&'static str; 256] = [\n%s\n];\n\n"

+ 36 - 0
src/encode_sets.rs

@@ -260,3 +260,39 @@ pub static FORM_URLENCODED: [&'static str; 256] = [
 ];
 
 
+pub static HTTP_VALUE: [&'static str; 256] = [
+   "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07",
+   "%08", "%09", "%0A", "%0B", "%0C", "%0D", "%0E", "%0F",
+   "%10", "%11", "%12", "%13", "%14", "%15", "%16", "%17",
+   "%18", "%19", "%1A", "%1B", "%1C", "%1D", "%1E", "%1F",
+   "%20", "!", "%22", "#", "$", "%25", "&", "%27",
+   "%28", "%29", "%2A", "+", "%2C", "%2D", ".", "%2F",
+   "0", "1", "2", "3", "4", "5", "6", "7",
+   "8", "9", "%3A", "%3B", "%3C", "=", "%3E", "%3F",
+   "@", "A", "B", "C", "D", "E", "F", "G",
+   "H", "I", "J", "K", "L", "M", "N", "O",
+   "P", "Q", "R", "S", "T", "U", "V", "W",
+   "X", "Y", "Z", "%5B", "%5C", "%5D", "^", "_",
+   "`", "a", "b", "c", "d", "e", "f", "g",
+   "h", "i", "j", "k", "l", "m", "n", "o",
+   "p", "q", "r", "s", "t", "u", "v", "w",
+   "x", "y", "z", "%7B", "|", "%7D", "~", "%7F",
+   "%80", "%81", "%82", "%83", "%84", "%85", "%86", "%87",
+   "%88", "%89", "%8A", "%8B", "%8C", "%8D", "%8E", "%8F",
+   "%90", "%91", "%92", "%93", "%94", "%95", "%96", "%97",
+   "%98", "%99", "%9A", "%9B", "%9C", "%9D", "%9E", "%9F",
+   "%A0", "%A1", "%A2", "%A3", "%A4", "%A5", "%A6", "%A7",
+   "%A8", "%A9", "%AA", "%AB", "%AC", "%AD", "%AE", "%AF",
+   "%B0", "%B1", "%B2", "%B3", "%B4", "%B5", "%B6", "%B7",
+   "%B8", "%B9", "%BA", "%BB", "%BC", "%BD", "%BE", "%BF",
+   "%C0", "%C1", "%C2", "%C3", "%C4", "%C5", "%C6", "%C7",
+   "%C8", "%C9", "%CA", "%CB", "%CC", "%CD", "%CE", "%CF",
+   "%D0", "%D1", "%D2", "%D3", "%D4", "%D5", "%D6", "%D7",
+   "%D8", "%D9", "%DA", "%DB", "%DC", "%DD", "%DE", "%DF",
+   "%E0", "%E1", "%E2", "%E3", "%E4", "%E5", "%E6", "%E7",
+   "%E8", "%E9", "%EA", "%EB", "%EC", "%ED", "%EE", "%EF",
+   "%F0", "%F1", "%F2", "%F3", "%F4", "%F5", "%F6", "%F7",
+   "%F8", "%F9", "%FA", "%FB", "%FC", "%FD", "%FE", "%FF",
+];
+
+

+ 3 - 0
src/percent_encoding.rs

@@ -55,6 +55,9 @@ pub static FORM_URLENCODED_ENCODE_SET: EncodeSet = EncodeSet {
     map: &encode_sets::FORM_URLENCODED,
 };
 
+/// This encode set is used for HTTP header values and is defined at
+/// https://tools.ietf.org/html/rfc5987#section-3.2
+pub static HTTP_VALUE_ENCODE_SET: EncodeSet = EncodeSet { map: &encode_sets::HTTP_VALUE };
 
 /// Percent-encode the given bytes, and push the result to `output`.
 ///