diff --git a/README.md b/README.md index eabe3c3..1d27007 100644 --- a/README.md +++ b/README.md @@ -320,16 +320,38 @@ For more information about user-defined functions, refer to the respective [sect This crate offers a set of builtin functions. -| Identifier | Argument Amount | Argument Types | Description | -|------------|-----------------|----------------|-------------| -| `min` | >= 1 | Numeric | Returns the minimum of the arguments | -| `max` | >= 1 | Numeric | Returns the maximum of the arguments | -| `len` | 1 | String/Tuple | Returns the character length of a string, or the amount of elements in a tuple (not recursively) | -| `str::regex_matches` | 2 | String, String | Returns true if the first argument matches the regex in the second argument (Requires `regex_support` feature flag) | -| `str::regex_replace` | 3 | String, String, String | Returns the first argument with all matches of the regex in the second argument replaced by the third argument (Requires `regex_support` feature flag) | -| `str::to_lowercase` | 1 | String | Returns the lower-case version of the string | -| `str::to_uppercase` | 1 | String | Returns the upper-case version of the string | -| `str::trim` | 1 | String | Strips whitespace from the start and the end of the string | +| Identifier | Argument Amount | Argument Types | Description | +|----------------------|-----------------|------------------------|-------------| +| `min` | >= 1 | Numeric | Returns the minimum of the arguments | +| `max` | >= 1 | Numeric | Returns the maximum of the arguments | +| `len` | 1 | String/Tuple | Returns the character length of a string, or the amount of elements in a tuple (not recursively) | +| `floor` | 1 | Numeric | Returns the largest integer less than or equal to a number | +| `round` | 1 | Numeric | Returns the nearest integer to a number. Round half-way cases away from 0.0 | +| `ceil` | 1 | Numeric | Returns the smallest integer greater than or equal to a number | +| `math::ln` | 1 | Numeric | Returns the natural logarithm of the number | +| `math::log` | 2 | Numeric, Numeric | Returns the logarithm of the number with respect to an arbitrary base | +| `math::log2` | 1 | Numeric | Returns the base 2 logarithm of the number | +| `math::log10` | 1 | Numeric | Returns the base 10 logarithm of the number | +| `math::cos` | 1 | Numeric | Computes the cosine of a number (in radians) | +| `math::acos` | 1 | Numeric | Computes the arccosine of a number. Return value is in radians in the range [0, pi] or NaN if the number is outside the range [-1, 1] | +| `math::cosh` | 1 | Numeric | Hyperbolic cosine function | +| `math::acosh` | 1 | Numeric | Inverse hyperbolic cosine function | +| `math::sin` | 1 | Numeric | Computes the sine of a number (in radians) | +| `math::asin` | 1 | Numeric | Computes the arcsine of a number. Return value is in radians in the range [-pi/2, pi/2] or NaN if the number is outside the range [-1, 1] | +| `math::sinh` | 1 | Numeric | Hyperbolic sine function | +| `math::asinh` | 1 | Numeric | Inverse hyperbolic sine function | +| `math::tan` | 1 | Numeric | Computes the tangent of a number (in radians) | +| `math::atan` | 1 | Numeric | Computes the arctangent of a number. Return value is in radians in the range [-pi/2, pi/2] | +| `math::tanh` | 1 | Numeric | Hyperbolic tangent function | +| `math::atanh` | 1 | Numeric | Inverse hyperbolic tangent function. | +| `math::sqrt` | 1 | Numeric | Returns the square root of a number. Returns NaN if a negative number | +| `math::cbrt` | 1 | Numeric | Returns the cube root of a number | +| `str::regex_matches` | 2 | String, String | Returns true if the first argument matches the regex in the second argument (Requires `regex_support` feature flag) | +| `str::regex_replace` | 3 | String, String, String | Returns the first argument with all matches of the regex in the second argument replaced by the third argument (Requires `regex_support` feature flag) | +| `str::to_lowercase` | 1 | String | Returns the lower-case version of the string | +| `str::to_uppercase` | 1 | String | Returns the upper-case version of the string | +| `str::trim` | 1 | String | Strips whitespace from the start and the end of the string | +| `str::from` | >= 0 | Any | Returns passed value as string | The `min` and `max` functions can deal with a mixture of integer and floating point arguments. If the maximum or minimum is an integer, then an integer is returned. diff --git a/src/function/builtin.rs b/src/function/builtin.rs index 5ea0aac..68f6239 100644 --- a/src/function/builtin.rs +++ b/src/function/builtin.rs @@ -18,32 +18,32 @@ macro_rules! simple_math { pub fn builtin_function(identifier: &str) -> Option { match identifier { // Log - "ln" => simple_math!(ln), - "log" => Some(Function::new(|argument| { + "math::ln" => simple_math!(ln), + "math::log" => Some(Function::new(|argument| { let tuple = argument.as_fixed_len_tuple(2)?; let (a, b) = (tuple[0].as_number()?, tuple[1].as_number()?); Ok(Value::Float(a.log(b))) })), - "log2" => simple_math!(log2), - "log10" => simple_math!(log10), + "math::log2" => simple_math!(log2), + "math::log10" => simple_math!(log10), // Cos - "cos" => simple_math!(cos), - "acos" => simple_math!(acos), - "cosh" => simple_math!(cosh), - "acosh" => simple_math!(acosh), + "math::cos" => simple_math!(cos), + "math::acos" => simple_math!(acos), + "math::cosh" => simple_math!(cosh), + "math::acosh" => simple_math!(acosh), // Sin - "sin" => simple_math!(sin), - "asin" => simple_math!(asin), - "sinh" => simple_math!(sinh), - "asinh" => simple_math!(asinh), + "math::sin" => simple_math!(sin), + "math::asin" => simple_math!(asin), + "math::sinh" => simple_math!(sinh), + "math::asinh" => simple_math!(asinh), // Tan - "tan" => simple_math!(tan), - "atan" => simple_math!(atan), - "tanh" => simple_math!(tanh), - "atanh" => simple_math!(atanh), + "math::tan" => simple_math!(tan), + "math::atan" => simple_math!(atan), + "math::tanh" => simple_math!(tanh), + "math::atanh" => simple_math!(atanh), // Root - "sqrt" => simple_math!(sqrt), - "cbrt" => simple_math!(cbrt), + "math::sqrt" => simple_math!(sqrt), + "math::cbrt" => simple_math!(cbrt), // Rounding "floor" => simple_math!(floor), "round" => simple_math!(round), diff --git a/src/lib.rs b/src/lib.rs index d20d49b..02c26bf 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -307,16 +307,38 @@ //! //! This crate offers a set of builtin functions. //! -//! | Identifier | Argument Amount | Argument Types | Description | -//! |------------|-----------------|----------------|-------------| -//! | `min` | >= 1 | Numeric | Returns the minimum of the arguments | -//! | `max` | >= 1 | Numeric | Returns the maximum of the arguments | -//! | `len` | 1 | String/Tuple | Returns the character length of a string, or the amount of elements in a tuple (not recursively) | -//! | `str::regex_matches` | 2 | String, String | Returns true if the first argument matches the regex in the second argument (Requires `regex_support` feature flag) | -//! | `str::regex_replace` | 3 | String, String, String | Returns the first argument with all matches of the regex in the second argument replaced by the third argument (Requires `regex_support` feature flag) | -//! | `str::to_lowercase` | 1 | String | Returns the lower-case version of the string | -//! | `str::to_uppercase` | 1 | String | Returns the upper-case version of the string | -//! | `str::trim` | 1 | String | Strips whitespace from the start and the end of the string | +//! | Identifier | Argument Amount | Argument Types | Description | +//! |----------------------|-----------------|------------------------|-------------| +//! | `min` | >= 1 | Numeric | Returns the minimum of the arguments | +//! | `max` | >= 1 | Numeric | Returns the maximum of the arguments | +//! | `len` | 1 | String/Tuple | Returns the character length of a string, or the amount of elements in a tuple (not recursively) | +//! | `floor` | 1 | Numeric | Returns the largest integer less than or equal to a number | +//! | `round` | 1 | Numeric | Returns the nearest integer to a number. Round half-way cases away from 0.0 | +//! | `ceil` | 1 | Numeric | Returns the smallest integer greater than or equal to a number | +//! | `math::ln` | 1 | Numeric | Returns the natural logarithm of the number | +//! | `math::log` | 2 | Numeric, Numeric | Returns the logarithm of the number with respect to an arbitrary base | +//! | `math::log2` | 1 | Numeric | Returns the base 2 logarithm of the number | +//! | `math::log10` | 1 | Numeric | Returns the base 10 logarithm of the number | +//! | `math::cos` | 1 | Numeric | Computes the cosine of a number (in radians) | +//! | `math::acos` | 1 | Numeric | Computes the arccosine of a number. Return value is in radians in the range [0, pi] or NaN if the number is outside the range [-1, 1] | +//! | `math::cosh` | 1 | Numeric | Hyperbolic cosine function | +//! | `math::acosh` | 1 | Numeric | Inverse hyperbolic cosine function | +//! | `math::sin` | 1 | Numeric | Computes the sine of a number (in radians) | +//! | `math::asin` | 1 | Numeric | Computes the arcsine of a number. Return value is in radians in the range [-pi/2, pi/2] or NaN if the number is outside the range [-1, 1] | +//! | `math::sinh` | 1 | Numeric | Hyperbolic sine function | +//! | `math::asinh` | 1 | Numeric | Inverse hyperbolic sine function | +//! | `math::tan` | 1 | Numeric | Computes the tangent of a number (in radians) | +//! | `math::atan` | 1 | Numeric | Computes the arctangent of a number. Return value is in radians in the range [-pi/2, pi/2] | +//! | `math::tanh` | 1 | Numeric | Hyperbolic tangent function | +//! | `math::atanh` | 1 | Numeric | Inverse hyperbolic tangent function. | +//! | `math::sqrt` | 1 | Numeric | Returns the square root of a number. Returns NaN if a negative number | +//! | `math::cbrt` | 1 | Numeric | Returns the cube root of a number | +//! | `str::regex_matches` | 2 | String, String | Returns true if the first argument matches the regex in the second argument (Requires `regex_support` feature flag) | +//! | `str::regex_replace` | 3 | String, String, String | Returns the first argument with all matches of the regex in the second argument replaced by the third argument (Requires `regex_support` feature flag) | +//! | `str::to_lowercase` | 1 | String | Returns the lower-case version of the string | +//! | `str::to_uppercase` | 1 | String | Returns the upper-case version of the string | +//! | `str::trim` | 1 | String | Strips whitespace from the start and the end of the string | +//! | `str::from` | >= 0 | Any | Returns passed value as string | //! //! The `min` and `max` functions can deal with a mixture of integer and floating point arguments. //! If the maximum or minimum is an integer, then an integer is returned.