diff options
Diffstat (limited to 'bindings/swig/package/rendercallback.h')
-rwxr-xr-x | bindings/swig/package/rendercallback.h | 218 |
1 files changed, 123 insertions, 95 deletions
diff --git a/bindings/swig/package/rendercallback.h b/bindings/swig/package/rendercallback.h index 8a19a86..d2a68e3 100755 --- a/bindings/swig/package/rendercallback.h +++ b/bindings/swig/package/rendercallback.h @@ -17,24 +17,24 @@ using namespace sword; class ReturnSuccess { public: - ReturnSuccess(): data(""), success(FAILED) {} - ReturnSuccess(char* data, int success): data(data), success(success) {} - virtual ~ReturnSuccess() {} - char* data; - int success; + ReturnSuccess(): data(""), success(FAILED) {} + ReturnSuccess(char* data, int success): data(data), success(success) {} + virtual ~ReturnSuccess() {} + char* data; + int success; }; class RenderCallback { public: - virtual ~RenderCallback() {;} + virtual ~RenderCallback() {;} - virtual ReturnSuccess run(sword::SWBuf& x, const char * token, + virtual ReturnSuccess run(sword::SWBuf& x, const char * token, sword::BasicFilterUserData* userData) { - ReturnSuccess nullm("", INHERITED); - return nullm; - } + ReturnSuccess nullm("", INHERITED); + return nullm; + } }; // Forward declarations @@ -45,26 +45,35 @@ class ThMLData; class PyOSISHTMLHREF: public sword::OSISHTMLHREF { private: - RenderCallback* _callback; + RenderCallback* _callback; public: // Create a class which can be inherited externally #ifndef SWIG using sword::OSISHTMLHREF::MyUserData; - class MyOsisUserData : public MyUserData {}; + class MyOsisUserData : public MyUserData { + public: + MyOsisUserData(const SWModule *module, const SWKey *key): + MyUserData(module, key) {}; + }; #endif - + + using sword::OSISHTMLHREF::removeTokenSubstitute; + using sword::OSISHTMLHREF::addTokenSubstitute; + using sword::OSISHTMLHREF::addAllowedEscapeString; + using sword::OSISHTMLHREF::removeAllowedEscapeString; + PyOSISHTMLHREF(RenderCallback* callback) - { - _callback=callback; - } + { + _callback=callback; + } static OSISData* getData(sword::BasicFilterUserData* f) { - return (OSISData*) f; + return (OSISData*) f; } - virtual ~PyOSISHTMLHREF() + virtual ~PyOSISHTMLHREF() { delCallback(); } @@ -81,46 +90,58 @@ public: _callback = cb; } - ReturnSuccess call(sword::SWBuf &buf, const char *token, sword::BasicFilterUserData *userData) - { - if (_callback) return _callback->run(buf, token, userData); - else - { - ReturnSuccess nullm("", INHERITED); - return nullm; - } - } - - protected: - virtual bool handleToken(sword::SWBuf &buf, const char *token, sword::BasicFilterUserData *userData) - { - ReturnSuccess result = call(buf, token, userData); - switch(result.success) - { - case INHERITED: - return sword::OSISHTMLHREF::handleToken(buf, token, userData); - case FAILED: - return false; - case SUCCEEDED: - buf += result.data; - return true; - } - - return true; - } - }; + ReturnSuccess call(sword::SWBuf &buf, const char *token, sword::BasicFilterUserData *userData) + { + if (_callback) return _callback->run(buf, token, userData); + else + { + ReturnSuccess nullm("", INHERITED); + return nullm; + } + } + +protected: + virtual bool handleToken(sword::SWBuf &buf, const char *token, sword::BasicFilterUserData *userData) + { + SWBuf scratch; + bool sub = (userData->suspendTextPassThru) ? substituteToken(scratch, token) : substituteToken(buf, token); + if(sub) return true; + + ReturnSuccess result = call(buf, token, userData); + switch(result.success) + { + case INHERITED: + return sword::OSISHTMLHREF::handleToken(buf, token, userData); + case FAILED: + return false; + case SUCCEEDED: + buf += result.data; + return true; + } + + return true; + } +}; class PyThMLHTMLHREF : public ThMLHTMLHREF { private: - RenderCallback* _callback; + RenderCallback* _callback; public: // Create a class which can be inherited externally #ifndef SWIG using sword::ThMLHTMLHREF::MyUserData; - class MyThmlUserData : public MyUserData {}; + class MyThmlUserData : public MyUserData { + public: + MyThmlUserData(const SWModule *module, const SWKey *key): + MyUserData(module, key) {}; + }; #endif + using sword::ThMLHTMLHREF::removeTokenSubstitute; + using sword::ThMLHTMLHREF::addTokenSubstitute; + using sword::ThMLHTMLHREF::addAllowedEscapeString; + using sword::ThMLHTMLHREF::removeAllowedEscapeString; PyThMLHTMLHREF(RenderCallback* callback) { _callback=callback; @@ -128,10 +149,10 @@ public: static ThMLData* getData(sword::BasicFilterUserData* f) { - return (ThMLData*) f; + return (ThMLData*) f; } - virtual ~PyThMLHTMLHREF() + virtual ~PyThMLHTMLHREF() { delCallback(); } @@ -148,57 +169,60 @@ public: _callback = cb; } - ReturnSuccess call(sword::SWBuf &buf, const char *token, sword::BasicFilterUserData *userData) - { - if (_callback) return _callback->run(buf, token, userData); - else - { - ReturnSuccess nullm("", INHERITED); - return nullm; - } - } + ReturnSuccess call(sword::SWBuf &buf, const char *token, sword::BasicFilterUserData *userData) + { + if (_callback) return _callback->run(buf, token, userData); + else + { + ReturnSuccess nullm("", INHERITED); + return nullm; + } + } protected: - virtual bool handleToken(sword::SWBuf &buf, const char *token, sword::BasicFilterUserData *userData) - { - ReturnSuccess result = call(buf, token, userData); - switch(result.success) - { - case INHERITED: - return sword::ThMLHTMLHREF::handleToken(buf, token, userData); - case FAILED: - return false; - case SUCCEEDED: - buf += result.data; - return true; - } - - return true; - } - -public: - - + virtual bool handleToken(sword::SWBuf &buf, const char *token, sword::BasicFilterUserData *userData) + { + SWBuf scratch; + bool sub = (userData->suspendTextPassThru) ? substituteToken(scratch, token) : substituteToken(buf, token); + if(sub) return true; + + ReturnSuccess result = call(buf, token, userData); + switch(result.success) + { + case INHERITED: + return sword::ThMLHTMLHREF::handleToken(buf, token, userData); + case FAILED: + return false; + case SUCCEEDED: + buf += result.data; + return true; + } + + return true; + } }; class OSISData : #ifndef SWIG public PyOSISHTMLHREF::MyOsisUserData { +public: + OSISData(const SWModule *module, const SWKey *key): + PyOSISHTMLHREF::MyOsisUserData(module, key) {}; #else // trick SWIG into thinking this is not inherited from an inner class... public sword::BasicFilterUserData { public: - bool osisQToTick; - bool inBold; - bool inXRefNote; - bool BiblicalText; - int suspendLevel; - SWBuf wordsOfChristStart; - SWBuf wordsOfChristEnd; - SWBuf lastTransChange; - SWBuf w; - SWBuf fn; - SWBuf version; + bool osisQToTick; + bool inBold; + bool inXRefNote; + bool BiblicalText; + int suspendLevel; + SWBuf wordsOfChristStart; + SWBuf wordsOfChristEnd; + SWBuf lastTransChange; + SWBuf w; + SWBuf fn; + SWBuf version; #endif //!SWIG }; @@ -206,16 +230,20 @@ public: class ThMLData : #ifndef SWIG public PyThMLHTMLHREF::MyThmlUserData { + public: + ThMLData(const SWModule *module, const SWKey *key): + PyThMLHTMLHREF::MyThmlUserData(module, key) {}; + #else // trick SWIG into thinking this is not inherited from an inner class... public sword::BasicFilterUserData { public: - SWBuf inscriptRef; - bool SecHead; - bool BiblicalText; - SWBuf version; - XMLTag startTag; + SWBuf inscriptRef; + bool SecHead; + bool BiblicalText; + SWBuf version; + XMLTag startTag; #endif //!SWIG }; |