sqlite_regex/
lib.rs

1mod captures;
2mod find_all;
3mod meta;
4mod regex;
5mod regexset;
6mod regexset_matches;
7mod split;
8mod utils;
9
10use regexset_matches::RegexSetMatchesTable;
11use sqlite_loadable::prelude::*;
12use sqlite_loadable::{
13    define_scalar_function, define_table_function, errors::Result, FunctionFlags,
14};
15
16use crate::{
17    captures::RegexCapturesTable, find_all::RegexFindAllTable, meta::*, regex::*, regexset::*,
18    split::RegexSplitTable,
19};
20
21#[sqlite_entrypoint]
22pub fn sqlite3_regex_init(db: *mut sqlite3) -> Result<()> {
23    let flags = FunctionFlags::UTF8 | FunctionFlags::DETERMINISTIC;
24
25    define_scalar_function(db, "regex_version", 0, regex_version, flags)?;
26    define_scalar_function(db, "regex_debug", 0, regex_debug, flags)?;
27
28    define_scalar_function(db, "regex", 1, regex, flags)?;
29    define_scalar_function(db, "regex_print", 1, regex_print, flags)?;
30
31    define_scalar_function(db, "regexp", 2, regexp, flags)?;
32
33    define_scalar_function(db, "regex_valid", 1, regex_valid, flags)?;
34
35    define_scalar_function(db, "regex_find", 2, regex_find, flags)?;
36    define_scalar_function(db, "regex_find_at", 3, regex_find_at, flags)?;
37
38    define_scalar_function(db, "regex_replace", 3, regex_replace, flags)?;
39    define_scalar_function(db, "regex_replace_all", 3, regex_replace_all, flags)?;
40
41    define_scalar_function(db, "regex_capture", 3, regex_capture, flags)?;
42    define_scalar_function(db, "regex_capture", 2, regex_capture2, flags)?;
43
44    define_table_function::<RegexFindAllTable>(db, "regex_find_all", None)?;
45    define_table_function::<RegexSplitTable>(db, "regex_split", None)?;
46    define_table_function::<RegexCapturesTable>(db, "regex_captures", None)?;
47
48    define_scalar_function(db, "regexset", -1, regexset, flags)?;
49    define_scalar_function(db, "regexset_print", 1, regexset_print, flags)?;
50    define_scalar_function(db, "regexset_is_match", 2, regexset_is_match, flags)?;
51
52    define_table_function::<RegexSetMatchesTable>(db, "regexset_matches", None)?;
53    Ok(())
54}