6629bda6c730982c3e4602ec78ff3b0cbf701c61 braney Tue May 25 17:31:38 2021 -0700 implement cart editing. Needs doc. ;-) diff --git src/inc/regexHelper.h src/inc/regexHelper.h index 59e6346..a1bdd0e 100644 --- src/inc/regexHelper.h +++ src/inc/regexHelper.h @@ -1,77 +1,79 @@ /* regexHelper: easy wrappers on POSIX Extended Regular Expressions (man 7 regex, man 3 regex) */ #ifndef REGEXHELPER_H #define REGEXHELPER_H #include "common.h" #include struct regexSnippet /* A data structure to capture the parenthetical regular expressions. */ { struct regexSnippet *next; int num; // the position of the parenthetical expressionA // 0 if there are now expressions char *precursor; // the text before the parenthetical expressio int precursorLen; // the length of the above text }; struct regexCompiledEdit /* A data structure to capture one regex edit. */ { regex_t *compiledExp; // the compiled regex expression struct regexSnippet *snippets; // the pieces of the substitution // broken up by parenthetical expressios }; struct regexEdit /* A definition of a regex edit with the matching string and its substitution.*/ { char *query; // the expression to match char *substitution; // the text to put in place of the above match. }; const regex_t *regexCompile(const char *exp, const char *description, int compileFlags); /* Compile exp (or die with an informative-as-possible error message). * Cache pre-compiled regex's internally (so don't free result after use). */ boolean regexMatch(const char *string, const char *exp); /* Return TRUE if string matches regular expression exp (case sensitive). */ boolean regexMatchNoCase(const char *string, const char *exp); /* Return TRUE if string matches regular expression exp (case insensitive). */ boolean regexMatchSubstr(const char *string, const char *exp, regmatch_t substrArr[], size_t substrArrSize); /* Return TRUE if string matches regular expression exp (case sensitive); * regexec fills in substrArr with substring offsets. */ boolean regexMatchSubstrNoCase(const char *string, const char *exp, regmatch_t substrArr[], size_t substrArrSize); /* Return TRUE if string matches regular expression exp (case insensitive); * regexec fills in substrArr with substring offsets. */ INLINE boolean regexSubstrMatched(const regmatch_t substr) /* Return TRUE if both start and end offsets are nonnegative (when a substring is not matched, * regexec sets the start and end offsets to -1). */ { return (substr.rm_so >= 0 && substr.rm_eo >= 0 && substr.rm_eo >= substr.rm_so); } void regexSubstringCopy(const char *string, const regmatch_t substr, char *buf, size_t bufSize); /* Copy a substring from string into buf using start and end offsets from substr. * If the substring was not matched then make buf an empty string. */ char *regexSubstringClone(const char *string, const regmatch_t substr); /* Clone and return a substring from string using start and end offsets from substr. * If the substring was not matched then return a cloned empty string. */ int regexSubstringInt(const char *string, const regmatch_t substr); /* Return the integer value of the substring specified by substr. * If substr was not matched, return 0; you can check first with regexSubstrMatched() if * that's not the desired behavior for unmatched substr. */ +#ifdef NOTNOW char *regexEdit(struct regexEdit *editArray, unsigned numEdits, char *input, boolean quiet); /* Perform a list of edits on a string. */ +#endif #endif // REGEXHELPER_H