Add split for arrays.
This commit is contained in:
parent
ac3d8e35d4
commit
e88713611c
@ -30,6 +30,7 @@ Enhancements
|
|||||||
* `Position` now implements `Add` and `AddAssign`.
|
* `Position` now implements `Add` and `AddAssign`.
|
||||||
* `Scope` now implements `IntoIterator`.
|
* `Scope` now implements `IntoIterator`.
|
||||||
* Strings now have the `split_rev` method and variations of `split` with maximum number of segments.
|
* Strings now have the `split_rev` method and variations of `split` with maximum number of segments.
|
||||||
|
* Arrays now have the `split` method.
|
||||||
|
|
||||||
|
|
||||||
Version 0.19.12
|
Version 0.19.12
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
use crate::engine::{OP_EQUALS, TYPICAL_ARRAY_SIZE};
|
use crate::engine::{OP_EQUALS, TYPICAL_ARRAY_SIZE};
|
||||||
use crate::plugin::*;
|
use crate::plugin::*;
|
||||||
use crate::stdlib::{any::TypeId, boxed::Box, cmp::max, cmp::Ordering, string::ToString};
|
use crate::stdlib::{any::TypeId, boxed::Box, cmp::max, cmp::Ordering, mem, string::ToString};
|
||||||
use crate::{
|
use crate::{
|
||||||
def_package, Array, Dynamic, EvalAltResult, FnPtr, ImmutableString, NativeCallContext,
|
def_package, Array, Dynamic, EvalAltResult, FnPtr, ImmutableString, NativeCallContext,
|
||||||
Position, INT,
|
Position, INT,
|
||||||
@ -191,6 +191,18 @@ mod array_functions {
|
|||||||
|
|
||||||
array[start..].iter().cloned().collect()
|
array[start..].iter().cloned().collect()
|
||||||
}
|
}
|
||||||
|
#[rhai_fn(name = "split")]
|
||||||
|
pub fn split_at(array: &mut Array, start: INT) -> Array {
|
||||||
|
if start <= 0 {
|
||||||
|
mem::take(array)
|
||||||
|
} else if start as usize >= array.len() {
|
||||||
|
Default::default()
|
||||||
|
} else {
|
||||||
|
let mut result: Array = Default::default();
|
||||||
|
result.extend(array.drain(start as usize..));
|
||||||
|
result
|
||||||
|
}
|
||||||
|
}
|
||||||
#[rhai_fn(return_raw)]
|
#[rhai_fn(return_raw)]
|
||||||
pub fn map(
|
pub fn map(
|
||||||
ctx: NativeCallContext,
|
ctx: NativeCallContext,
|
||||||
|
Loading…
Reference in New Issue
Block a user