mirror of
https://github.com/sagiegurari/duckscript
synced 2024-10-06 16:09:39 +00:00
New array_contains command
This commit is contained in:
parent
51fb735911
commit
4bd6bf1ec7
|
@ -3,7 +3,7 @@
|
|||
### v0.3.4
|
||||
|
||||
* \[Breaking Change\] Runtime - REPL mode doesn't stop due to crashes from user commands #103
|
||||
* New array_contains_value command.
|
||||
* New array_contains command.
|
||||
* New map_contains_value command.
|
||||
* New map_contains_key command.
|
||||
* New get_all_var_names command #100
|
||||
|
|
32
docs/sdk.md
32
docs/sdk.md
|
@ -8,7 +8,7 @@
|
|||
* [std::ShowCommandDocumentation (man)](#std__ShowCommandDocumentation)
|
||||
* [std::collections::Array (array)](#std__collections__Array)
|
||||
* [std::collections::ArrayConcat (array_concat)](#std__collections__ArrayConcat)
|
||||
* [std::collections::ArrayContainsValue (array_contains_value)](#std__collections__ArrayContainsValue)
|
||||
* [std::collections::ArrayContains (array_contains)](#std__collections__ArrayContains)
|
||||
* [std::collections::ArrayGet (array_get)](#std__collections__ArrayGet)
|
||||
* [std::collections::ArrayIsEmpty (array_is_empty)](#std__collections__ArrayIsEmpty)
|
||||
* [std::collections::ArrayJoin (array_join)](#std__collections__ArrayJoin)
|
||||
|
@ -481,11 +481,11 @@ set ${scope::array_concat::array}
|
|||
#### Aliases:
|
||||
array_concat
|
||||
|
||||
<a name="std__collections__ArrayContainsValue"></a>
|
||||
## std::collections::ArrayContainsValue
|
||||
<a name="std__collections__ArrayContains"></a>
|
||||
## std::collections::ArrayContains
|
||||
|
||||
```sh
|
||||
var = array_contains_value handle value
|
||||
var = array_contains handle value
|
||||
```
|
||||
|
||||
Returns the first index of the array with the same value as provided.<br>
|
||||
|
@ -504,7 +504,7 @@ The value index in the array or false if not found.
|
|||
|
||||
```sh
|
||||
handle = array value1 value2 value3
|
||||
index = array_contains_value ${handle} value2
|
||||
index = array_contains ${handle} value2
|
||||
```
|
||||
|
||||
|
||||
|
@ -512,28 +512,28 @@ index = array_contains_value ${handle} value2
|
|||
|
||||
```sh
|
||||
|
||||
scope::array_contains_value::index = set false
|
||||
scope::array_contains_value::value = set ${scope::array_contains_value::argument::2}
|
||||
scope::array_contains::index = set false
|
||||
scope::array_contains::value = set ${scope::array_contains::argument::2}
|
||||
|
||||
scope::array_contains_value::counter = set 0
|
||||
for scope::array_contains_value::next_value in ${scope::array_contains_value::argument::1}
|
||||
scope::array_contains_value::found = equals ${scope::array_contains_value::next_value} ${scope::array_contains_value::value}
|
||||
scope::array_contains::counter = set 0
|
||||
for scope::array_contains::next_value in ${scope::array_contains::argument::1}
|
||||
scope::array_contains::found = equals ${scope::array_contains::next_value} ${scope::array_contains::value}
|
||||
|
||||
if ${scope::array_contains_value::found}
|
||||
scope::array_contains_value::index = set ${scope::array_contains_value::counter}
|
||||
scope::array_contains_value::argument::1 = set
|
||||
if ${scope::array_contains::found}
|
||||
scope::array_contains::index = set ${scope::array_contains::counter}
|
||||
scope::array_contains::argument::1 = set
|
||||
end
|
||||
|
||||
scope::array_contains_value::counter = calc ${scope:array_contains_value::counter} + 1
|
||||
scope::array_contains::counter = calc ${scope:array_contains::counter} + 1
|
||||
end
|
||||
|
||||
set ${scope::array_contains_value::index}
|
||||
set ${scope::array_contains::index}
|
||||
|
||||
```
|
||||
|
||||
|
||||
#### Aliases:
|
||||
array_contains_value
|
||||
array_contains
|
||||
|
||||
<a name="std__collections__ArrayGet"></a>
|
||||
## std::collections::ArrayGet
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
```sh
|
||||
var = array_contains_value handle value
|
||||
var = array_contains handle value
|
||||
```
|
||||
|
||||
Returns the first index of the array with the same value as provided.<br>
|
||||
|
@ -18,5 +18,5 @@ The value index in the array or false if not found.
|
|||
|
||||
```sh
|
||||
handle = array value1 value2 value3
|
||||
index = array_contains_value ${handle} value2
|
||||
index = array_contains ${handle} value2
|
||||
```
|
|
@ -8,12 +8,12 @@ use duckscript::types::error::ScriptError;
|
|||
mod mod_test;
|
||||
|
||||
pub(crate) fn create(package: &str) -> Result<Box<dyn Command>, ScriptError> {
|
||||
let name = pckg::concat(package, "ArrayContainsValue");
|
||||
let name = pckg::concat(package, "ArrayContains");
|
||||
let command = create_alias_command(
|
||||
name,
|
||||
vec!["array_contains_value".to_string()],
|
||||
vec!["array_contains".to_string()],
|
||||
include_str!("help.md").to_string(),
|
||||
"array_contains_value".to_string(),
|
||||
"array_contains".to_string(),
|
||||
include_str!("script.ds").to_string(),
|
||||
2,
|
||||
)?;
|
|
@ -0,0 +1,17 @@
|
|||
|
||||
scope::array_contains::index = set false
|
||||
scope::array_contains::value = set ${scope::array_contains::argument::2}
|
||||
|
||||
scope::array_contains::counter = set 0
|
||||
for scope::array_contains::next_value in ${scope::array_contains::argument::1}
|
||||
scope::array_contains::found = equals ${scope::array_contains::next_value} ${scope::array_contains::value}
|
||||
|
||||
if ${scope::array_contains::found}
|
||||
scope::array_contains::index = set ${scope::array_contains::counter}
|
||||
scope::array_contains::argument::1 = set
|
||||
end
|
||||
|
||||
scope::array_contains::counter = calc ${scope:array_contains::counter} + 1
|
||||
end
|
||||
|
||||
set ${scope::array_contains::index}
|
|
@ -1,17 +0,0 @@
|
|||
|
||||
scope::array_contains_value::index = set false
|
||||
scope::array_contains_value::value = set ${scope::array_contains_value::argument::2}
|
||||
|
||||
scope::array_contains_value::counter = set 0
|
||||
for scope::array_contains_value::next_value in ${scope::array_contains_value::argument::1}
|
||||
scope::array_contains_value::found = equals ${scope::array_contains_value::next_value} ${scope::array_contains_value::value}
|
||||
|
||||
if ${scope::array_contains_value::found}
|
||||
scope::array_contains_value::index = set ${scope::array_contains_value::counter}
|
||||
scope::array_contains_value::argument::1 = set
|
||||
end
|
||||
|
||||
scope::array_contains_value::counter = calc ${scope:array_contains_value::counter} + 1
|
||||
end
|
||||
|
||||
set ${scope::array_contains_value::index}
|
|
@ -1,6 +1,6 @@
|
|||
pub(crate) mod array;
|
||||
mod array_concat;
|
||||
mod array_contains_value;
|
||||
mod array_contains;
|
||||
mod array_get;
|
||||
mod array_is_empty;
|
||||
mod array_join;
|
||||
|
@ -37,7 +37,7 @@ pub(crate) fn load(commands: &mut Commands, parent: &str) -> Result<(), ScriptEr
|
|||
|
||||
commands.set(array::create(&package))?;
|
||||
commands.set(array_concat::create(&package)?)?;
|
||||
commands.set(array_contains_value::create(&package)?)?;
|
||||
commands.set(array_contains::create(&package)?)?;
|
||||
commands.set(array_get::create(&package))?;
|
||||
commands.set(array_push::create(&package))?;
|
||||
commands.set(array_set::create(&package))?;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
fn test_empty
|
||||
handle = array
|
||||
|
||||
found = array_contains_value ${handle} value
|
||||
found = array_contains ${handle} value
|
||||
release ${handle}
|
||||
|
||||
assert_eq ${found} false
|
||||
|
@ -11,16 +11,16 @@ end
|
|||
fn test_not_found
|
||||
handle = array value1
|
||||
|
||||
found = array_contains_value ${handle} value2
|
||||
found = array_contains ${handle} value2
|
||||
release ${handle}
|
||||
|
||||
assert_eq ${found} false
|
||||
end
|
||||
|
||||
fn test_found
|
||||
fn test_found<F4>
|
||||
handle = array value
|
||||
|
||||
found = array_contains_value ${handle} value
|
||||
found = array_contains ${handle} value
|
||||
release ${handle}
|
||||
|
||||
assert_eq ${found} 0
|
||||
|
@ -31,16 +31,16 @@ fn test_both
|
|||
size = array_length ${handle}
|
||||
last_index = calc ${size} - 1
|
||||
|
||||
found = array_contains_value ${handle} value1
|
||||
found = array_contains ${handle} value1
|
||||
assert_eq ${found} 0
|
||||
|
||||
found = array_contains_value ${handle} value2
|
||||
found = array_contains ${handle} value2
|
||||
assert_eq ${found} 1
|
||||
|
||||
found = array_contains_value ${handle} value3
|
||||
found = array_contains ${handle} value3
|
||||
assert ${found} ${last_index}
|
||||
|
||||
found = array_contains_value ${handle} value4
|
||||
found = array_contains ${handle} value4
|
||||
assert_eq ${found} false
|
||||
|
||||
release ${handle}
|
Loading…
Reference in a new issue