// Copyright (c) 2001  David Muse
// See the file COPYING for more information

#include <rudiments/regularexpression.h>
#include <stdio.h>

#ifdef RUDIMENTS_NAMESPACE
using namespace rudiments;
#endif

void printMatches(regularexpression *re) {
        printf("match 0: \"%s\"\n",re->getSubstringStart(0));
        for (int i=1; i<re->getSubstringCount(); i++) {
                printf("match: \"%s\"\n",re->getSubstringStart(i));
        }
        printf("%d matches\n",re->getSubstringCount());
}

int main(int argc, const char **argv) {

        // A quick match...
        if (regularexpression::match("Hello!",".*Dave.*")) {
                printf("The string contains .*Dave.*\n");
        } else {
                printf("The string doesn't contain Dave\n");
        }

        if (regularexpression::match("Hello Dave!",".*Dave.*")) {
                printf("The string contains .*Dave.*\n");
        } else {
                printf("The string doesn't contain Dave\n");
        }

        // If you need to match over and over...
        regularexpression       re("Dave");
        if (re.match("Hello!")) {
                printf("The string contains Dave\n");
        } else {
                printf("The string doesn't contain Dave\n");
        }
        printMatches(&re);

        if (re.match("Hello Dave!")) {
                printf("The string contains Dave\n");
        } else {
                printf("The string doesn't contain Dave\n");
        }
        printMatches(&re);

        re.study();
        if (re.match("Goodbye!")) {
                printf("The string contains Dave\n");
        } else {
                printf("The string doesn't contain Dave\n");
        }
        printMatches(&re);

        if (re.match("Goodbye Dave!")) {
                printf("The string contains Dave\n");
        } else {
                printf("The string doesn't contain Dave\n");
        }
        printMatches(&re);

        re.study();
        if (re.match("He is a jerk!")) {
                printf("The string contains Dave\n");
        } else {
                printf("The string doesn't contain Dave\n");
        }
        printMatches(&re);

        if (re.match("Dave is a jerk!")) {
                printf("The string contains Dave\n");
        } else {
                printf("The string doesn't contain Dave\n");
        }
        printMatches(&re);

        if (re.match("He writes cool software!")) {
                printf("The string contains Dave\n");
        } else {
                printf("The string doesn't contain Dave\n");
        }
        printMatches(&re);

        if (re.match("Dave writes cool software!")) {
                printf("The string contains Dave\n");
        } else {
                printf("The string doesn't contain Dave\n");
        }
        printMatches(&re);

        if (re.match("See ya later Dave!")) {
                printf("The string contains Dave\n");
        } else {
                printf("The string doesn't contain Dave\n");
        }
        printMatches(&re);

        if (re.match("See ya later!")) {
                printf("The string contains Dave\n");
        } else {
                printf("The string doesn't contain Dave\n");
        }
        printMatches(&re);

        if (re.match("Dave, Dave, Dave!")) {
                printf("The string contains Dave\n");
        } else {
                printf("The string doesn't contain Dave\n");
        }
        printMatches(&re);
}