diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 43e2efb2..7630dbbf 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -111,6 +111,15 @@ extern "C" { /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape #[wasm_bindgen] pub fn escape(string: &str) -> JsString; + + /// The unescape() function computes a new string in which hexadecimal escape + /// sequences are replaced with the character that it represents. The escape sequences might + /// be introduced by a function like escape. Usually, decodeURI or decodeURIComponent + /// are preferred over unescape. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape + #[wasm_bindgen] + pub fn unescape(string: &str) -> JsString; } // Array diff --git a/crates/js-sys/tests/wasm/global_fns.rs b/crates/js-sys/tests/wasm/global_fns.rs index 0e1c9903..ec0e2a67 100644 --- a/crates/js-sys/tests/wasm/global_fns.rs +++ b/crates/js-sys/tests/wasm/global_fns.rs @@ -80,3 +80,11 @@ fn test_escape() { assert_eq!(String::from(escape("ć")), "%u0107"); assert_eq!(String::from(escape("@*_+-./")), "@*_+-./"); } + +#[wasm_bindgen_test] +fn test_unescape() { + assert_eq!(String::from(unescape("abc123")), "abc123"); + assert_eq!(String::from(unescape("%E4%F6%FC")), "äöü"); + assert_eq!(String::from(unescape("%u0107")), "ć"); + assert_eq!(String::from(unescape("@*_+-./")), "@*_+-./"); +}