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}