feat(js-sys) Implement String.split with regexp.

This commit is contained in:
Ivan Enderlin 2018-08-20 10:42:12 +02:00
parent 6d49c76bc4
commit a9a1e69f30
No known key found for this signature in database
GPG Key ID: 461F31FCE31F4AAD
2 changed files with 29 additions and 0 deletions

View File

@ -3113,6 +3113,14 @@ extern "C" {
#[wasm_bindgen(method, js_class = "String", js_name = split)]
pub fn split_limit(this: &JsString, separator: &str, limit: u32) -> Array;
/// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split
#[wasm_bindgen(method, js_class = "String", js_name = split)]
pub fn split_by_pattern(this: &JsString, pattern: &RegExp) -> Array;
/// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split
#[wasm_bindgen(method, js_class = "String", js_name = split)]
pub fn split_by_pattern_limit(this: &JsString, pattern: &RegExp, limit: u32) -> Array;
/// The `startsWith()` method determines whether a string begins with the
/// characters of a specified string, returning true or false as
/// appropriate.

View File

@ -352,6 +352,27 @@ fn split() {
assert_eq!(result.length(), 2);
assert_eq!(v[0], "Oct");
assert_eq!(v[1], "Nov");
let js = JsString::from("Oh brave new world");
let re = RegExp::new("\\s", "g");
let result = js.split_by_pattern(&re);
let mut v = Vec::with_capacity(result.length() as usize);
result.for_each(&mut |x, _, _| v.push(x));
assert_eq!(v[0], "Oh");
assert_eq!(v[1], "brave");
assert_eq!(v[2], "new");
assert_eq!(v[3], "world");
let result = js.split_by_pattern_limit(&re, 2);
let mut v = Vec::with_capacity(result.length() as usize);
result.for_each(&mut |x, _, _| v.push(x));
assert_eq!(result.length(), 2);
assert_eq!(v[0], "Oh");
assert_eq!(v[1], "brave");
}
#[wasm_bindgen_test]