Skip to content

Commit

Permalink
Auto merge of #134 - mikedilger:value_chars, r=SimonSapin
Browse files Browse the repository at this point in the history
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 -->
  • Loading branch information
bors-servo committed Nov 13, 2015
2 parents fedf144 + 00fd5e3 commit 845e14b
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 0 deletions.
1 change: 1 addition & 0 deletions make_encode_sets.py
Expand Up @@ -29,6 +29,7 @@
('PASSWORD', r''' "#<>`?{}@\/'''),
('USERNAME', r''' "#<>`?{}@\/:'''),
('FORM_URLENCODED', r''' !"#$%&\'()+,/:;<=>?@[\]^`{|}~'''),
('HTTP_VALUE', r''' "%'()*,/:;<->?[\]{}'''),
]:
print(
"pub static %s: [&'static str; 256] = [\n%s\n];\n\n"
Expand Down
36 changes: 36 additions & 0 deletions src/encode_sets.rs
Expand Up @@ -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 changes: 3 additions & 0 deletions src/percent_encoding.rs
Expand Up @@ -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`.
///
Expand Down

0 comments on commit 845e14b

Please sign in to comment.