#include "debug.h" #include #include #include #define COW_URI ((const xmlChar *)"http://www.csclub.uwaterloo.ca/cow") /* return the term ({Winter,Summer,Fall} YYYY) for a date in * YYYY-MM-DD format. */ void extension_cow_term(xmlXPathParserContextPtr ctxt, int nargs) { xmlChar *str, *ret; int month; if (nargs != 1) { xmlXPathSetArityError(ctxt); } str = xmlXPathPopString(ctxt); month = (str[5] - '0')*10 + (str[6] - '0'); ret = xmlUTF8Strndup((const xmlChar*)(month < 9 ? (month < 5 ? "Winter " : "Spring ") : "Fall "), 7); ret = xmlStrcat(ret, xmlUTF8Strsub(str, 0, 4)); xmlXPathReturnString(ctxt, ret); xmlFree(str); } void *extension_init_func(xsltTransformContextPtr ctxt, const xmlChar *URI) { return 0; } void extension_shutdown_func(xsltTransformContextPtr ctxt, const xmlChar *URI, void *data) { } void init_extensions() { xsltRegisterExtModule(COW_URI, extension_init_func, extension_shutdown_func); xsltRegisterExtModuleFunction((const xmlChar*)"term", COW_URI, extension_cow_term); }