ganit-core 0.3.4

Spreadsheet formula engine — parser and evaluator for Excel-compatible formulas
Documentation
use super::Registry;
use super::FunctionMeta;

pub mod char_fn;
pub mod code_fn;
pub mod concatenate;
pub mod exact;
pub mod find;
pub mod left;
pub mod len;
pub mod lower;
pub mod mid;
pub mod replace;
pub mod rept;
pub mod right;
pub mod substitute;
pub mod t_fn;
pub mod text_fn;
pub mod proper;
pub mod search;
pub mod trim;
pub mod upper;
pub mod value_fn;

pub fn register_text(registry: &mut Registry) {
    registry.register_eager("LEFT",        left::left_fn,              FunctionMeta { category: "text", signature: "LEFT(text, num_chars)",                      description: "Left portion of a string" });
    registry.register_eager("MID",         mid::mid_fn,                FunctionMeta { category: "text", signature: "MID(text, start, num_chars)",                description: "Substring from middle of text" });
    registry.register_eager("RIGHT",       right::right_fn,            FunctionMeta { category: "text", signature: "RIGHT(text, num_chars)",                     description: "Right portion of a string" });
    registry.register_eager("LEN",         len::len_fn,                FunctionMeta { category: "text", signature: "LEN(text)",                                  description: "Number of characters in text" });
    registry.register_eager("LOWER",       lower::lower_fn,            FunctionMeta { category: "text", signature: "LOWER(text)",                                description: "Convert to lowercase" });
    registry.register_eager("UPPER",       upper::upper_fn,            FunctionMeta { category: "text", signature: "UPPER(text)",                                description: "Convert to uppercase" });
    registry.register_eager("TRIM",        trim::trim_fn,              FunctionMeta { category: "text", signature: "TRIM(text)",                                 description: "Remove extra whitespace" });
    registry.register_eager("CONCATENATE", concatenate::concatenate_fn,FunctionMeta { category: "text", signature: "CONCATENATE(value1,...)",                    description: "Concatenate values (legacy)" });
    registry.register_eager("FIND",        find::find_fn,              FunctionMeta { category: "text", signature: "FIND(find_text, within_text, start)",        description: "Case-sensitive position search" });
    registry.register_eager("SUBSTITUTE",  substitute::substitute_fn,  FunctionMeta { category: "text", signature: "SUBSTITUTE(text, old, new, instance)",       description: "Replace occurrences of a substring" });
    registry.register_eager("REPLACE",     replace::replace_fn,        FunctionMeta { category: "text", signature: "REPLACE(text, start, num_chars, new_text)",  description: "Replace portion of text" });
    registry.register_eager("TEXT",        text_fn::text_fn,           FunctionMeta { category: "text", signature: "TEXT(value, format)",                        description: "Format number as text" });
    registry.register_eager("VALUE",       value_fn::value_fn,         FunctionMeta { category: "text", signature: "VALUE(text)",                                description: "Convert text to number" });
    registry.register_eager("REPT",        rept::rept_fn,              FunctionMeta { category: "text", signature: "REPT(text, number_times)",                   description: "Repeat text N times" });
    registry.register_eager("CHAR",        char_fn::char_fn,           FunctionMeta { category: "text", signature: "CHAR(number)",                               description: "Character from ASCII/Unicode code" });
    registry.register_eager("UNICHAR",     char_fn::unichar_fn,        FunctionMeta { category: "text", signature: "UNICHAR(number)",                            description: "Unicode character from code point" });
    registry.register_eager("CODE",        code_fn::code_fn,           FunctionMeta { category: "text", signature: "CODE(text)",                                 description: "Numeric code of first character" });
    registry.register_eager("UNICODE",     code_fn::unicode_fn,        FunctionMeta { category: "text", signature: "UNICODE(text)",                              description: "Unicode code point of first character" });
    registry.register_eager("EXACT",       exact::exact_fn,            FunctionMeta { category: "text", signature: "EXACT(text1, text2)",                        description: "Case-sensitive string comparison" });
    registry.register_eager("T",           t_fn::t_fn,                 FunctionMeta { category: "text", signature: "T(value)",                                   description: "Return text if value is text, else empty string" });
    registry.register_eager("PROPER",      proper::proper_fn,          FunctionMeta { category: "text", signature: "PROPER(text)",                                  description: "Capitalize first letter of each word" });
    registry.register_eager("SEARCH",      search::search_fn,          FunctionMeta { category: "text", signature: "SEARCH(find_text, within_text, [start_num])",   description: "Case-insensitive search with wildcards" });
}