Minor clean up.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/oliverb-javascript-v8@13769 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
b778c4816b
commit
8577ae4179
2 changed files with 225 additions and 189 deletions
|
|
@ -535,7 +535,7 @@ JSCXXFLAGS = @JSCXXFLAGS@
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
|
|
||||||
javascript: $(SRCS)
|
javascript: $(SRCS)
|
||||||
$(SWIG) -javascript -jsc -debug-templates $(SWIGOPT) $(INTERFACEPATH)
|
$(SWIG) -javascript -jsc $(SWIGOPT) $(INTERFACEPATH)
|
||||||
$(CC) -c $(CCSHARED) $(JSCFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) $(JS_INCLUDE)
|
$(CC) -c $(CCSHARED) $(JSCFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) $(JS_INCLUDE)
|
||||||
$(JSLDSHARED) $(CCSHARED) $(JSCFLAGS) $(OBJS) $(IOBJS) $(JS_DLNK) $(LIBS) -o $(JS_LIBPREFIX)$(TARGET)$(JSSO)
|
$(JSLDSHARED) $(CCSHARED) $(JSCFLAGS) $(OBJS) $(IOBJS) $(JS_DLNK) $(LIBS) -o $(JS_LIBPREFIX)$(TARGET)$(JSSO)
|
||||||
|
|
||||||
|
|
@ -544,7 +544,7 @@ javascript: $(SRCS)
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
|
|
||||||
javascript_cpp: $(SRCS)
|
javascript_cpp: $(SRCS)
|
||||||
$(SWIG) -javascript -jsc -c++ -debug-templates $(SWIGOPT) $(INTERFACEPATH)
|
$(SWIG) -javascript -jsc -c++ $(SWIGOPT) $(INTERFACEPATH)
|
||||||
$(CXX) -c $(CCSHARED) $(JSCXXFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(JS_INCLUDE)
|
$(CXX) -c $(CCSHARED) $(JSCXXFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(JS_INCLUDE)
|
||||||
$(JSCXXSHARED) $(CCSHARED) $(OBJS) $(IOBJS) $(JS_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(JS_LIBPREFIX)$(TARGET)$(JSSO)
|
$(JSCXXSHARED) $(CCSHARED) $(OBJS) $(IOBJS) $(JS_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(JS_LIBPREFIX)$(TARGET)$(JSSO)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,5 @@
|
||||||
#include "swigmod.h"
|
#include "swigmod.h"
|
||||||
|
|
||||||
#include <cparse.h>
|
|
||||||
#include <parser.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
* JAVASCRIPT: swig module implementation
|
|
||||||
**********************************************************************/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enables extra debugging information in typemaps.
|
* Enables extra debugging information in typemaps.
|
||||||
*/
|
*/
|
||||||
|
|
@ -15,7 +7,6 @@ bool js_template_enable_debug = false;
|
||||||
|
|
||||||
// keywords used for state variables
|
// keywords used for state variables
|
||||||
|
|
||||||
#undef NAME
|
|
||||||
#define NAME "name"
|
#define NAME "name"
|
||||||
#define NAME_MANGLED "name_mangled"
|
#define NAME_MANGLED "name_mangled"
|
||||||
#define TYPE "type"
|
#define TYPE "type"
|
||||||
|
|
@ -33,88 +24,60 @@ class JSEmitterState {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
JSEmitterState():
|
JSEmitterState();
|
||||||
_global(NewHash()) {
|
|
||||||
// initialize sub-hashes
|
|
||||||
Setattr(_global, "class", NewHash());
|
|
||||||
Setattr(_global, "function", NewHash());
|
|
||||||
Setattr(_global, "variable", NewHash());
|
|
||||||
}
|
|
||||||
|
|
||||||
~JSEmitterState() { Delete(_global); }
|
~JSEmitterState();
|
||||||
|
|
||||||
|
DOH *global();
|
||||||
|
|
||||||
DOH *getState(const char* key, bool _new = false) {
|
DOH *global(const char* key, DOH *initial = 0);
|
||||||
if (_new) {
|
|
||||||
Hash *hash = NewHash();
|
|
||||||
Setattr(_global, key, hash);
|
|
||||||
}
|
|
||||||
return Getattr(_global, key);
|
|
||||||
}
|
|
||||||
|
|
||||||
DOH *global() { return _global; }
|
DOH *clazz(bool reset = false);
|
||||||
|
|
||||||
DOH *global(const char* key, DOH *initial=0) {
|
|
||||||
if(initial != 0) {
|
|
||||||
Setattr(_global, key, initial);
|
|
||||||
}
|
|
||||||
return Getattr(_global, key);
|
|
||||||
}
|
|
||||||
|
|
||||||
DOH *clazz(bool _new = false) {
|
|
||||||
return getState("class", _new);
|
|
||||||
}
|
|
||||||
|
|
||||||
DOH *clazz(const char* key, DOH *initial=0) {
|
DOH *clazz(const char* key, DOH *initial = 0);
|
||||||
DOH *c = clazz();
|
|
||||||
if(initial != 0) {
|
|
||||||
Setattr(c, key, initial);
|
|
||||||
}
|
|
||||||
return Getattr(c, key);
|
|
||||||
}
|
|
||||||
|
|
||||||
DOH *function(bool _new = false) {
|
DOH *function(bool reset = false);
|
||||||
return getState("function", _new);
|
|
||||||
}
|
|
||||||
|
|
||||||
DOH *function(const char* key, DOH *initial=0) {
|
DOH *function(const char* key, DOH *initial = 0);
|
||||||
DOH *f = function();
|
|
||||||
if(initial != 0) {
|
|
||||||
Setattr(f, key, initial);
|
|
||||||
}
|
|
||||||
return Getattr(f, key);
|
|
||||||
}
|
|
||||||
|
|
||||||
DOH *variable(bool _new = false) {
|
DOH *variable(bool reset = false);
|
||||||
return getState("variable", _new);
|
|
||||||
}
|
|
||||||
|
|
||||||
DOH *variable(const char* key, DOH *initial=0) {
|
DOH *variable(const char* key, DOH *initial = 0);
|
||||||
DOH *v = variable();
|
|
||||||
if(initial != 0) {
|
|
||||||
Setattr(v, key, initial);
|
|
||||||
}
|
|
||||||
return Getattr(v, key);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int IsSet(DOH *val) {
|
static int IsSet(DOH *val);
|
||||||
if (!val) {
|
|
||||||
return 0;
|
|
||||||
} else {
|
|
||||||
const char *cval = Char(val);
|
|
||||||
if (!cval)
|
|
||||||
return 0;
|
|
||||||
return (strcmp(cval, "0") != 0) ? 1 : 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
DOH *getState(const char* key, bool reset = false);
|
||||||
|
|
||||||
Hash *_global;
|
Hash *_global;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* forward decl: Template is a convenience helper class for dealing with
|
/**
|
||||||
* code fragments */
|
* A convenience class that wraps a code snippet used as template
|
||||||
class Template;
|
* for code generation.
|
||||||
|
*/
|
||||||
|
class Template {
|
||||||
|
|
||||||
|
public:
|
||||||
|
Template(const String *code);
|
||||||
|
|
||||||
|
Template(const String *code, const String *templateName);
|
||||||
|
|
||||||
|
~Template();
|
||||||
|
|
||||||
|
String *str();
|
||||||
|
|
||||||
|
Template& replace(const String *pattern, const String *repl);
|
||||||
|
|
||||||
|
Template& pretty_print(DOH *doh);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
String *code;
|
||||||
|
String *templateName;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JSEmitter represents an abstraction of javascript code generators
|
* JSEmitter represents an abstraction of javascript code generators
|
||||||
|
|
@ -134,9 +97,9 @@ public:
|
||||||
QtScript
|
QtScript
|
||||||
};
|
};
|
||||||
|
|
||||||
JSEmitter();
|
JSEmitter();
|
||||||
|
|
||||||
virtual ~JSEmitter();
|
virtual ~JSEmitter();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens output files and temporary output DOHs.
|
* Opens output files and temporary output DOHs.
|
||||||
|
|
@ -282,6 +245,10 @@ protected:
|
||||||
State state;
|
State state;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* JAVASCRIPT: swig module implementation
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
/* factory methods for concrete JSEmitters: */
|
/* factory methods for concrete JSEmitters: */
|
||||||
JSEmitter *swig_javascript_create_JSCEmitter();
|
JSEmitter *swig_javascript_create_JSCEmitter();
|
||||||
JSEmitter *swig_javascript_create_V8Emitter();
|
JSEmitter *swig_javascript_create_V8Emitter();
|
||||||
|
|
@ -385,7 +352,8 @@ int JAVASCRIPT::staticmemberfunctionHandler(Node *n) {
|
||||||
int JAVASCRIPT::variableHandler(Node *n) {
|
int JAVASCRIPT::variableHandler(Node *n) {
|
||||||
|
|
||||||
if (!is_assignable(n)
|
if (!is_assignable(n)
|
||||||
// HACK: don't know why this is assignable?
|
// FIXME: test "arrays_global" does not compile with that as it is not allowed to assign to char[]
|
||||||
|
// probably some error in char[] typemap
|
||||||
|| Equal(Getattr(n, "type"), "a().char")) {
|
|| Equal(Getattr(n, "type"), "a().char")) {
|
||||||
SetFlag(n, "wrap:immutable");
|
SetFlag(n, "wrap:immutable");
|
||||||
}
|
}
|
||||||
|
|
@ -393,6 +361,7 @@ int JAVASCRIPT::variableHandler(Node *n) {
|
||||||
emitter->enterVariable(n);
|
emitter->enterVariable(n);
|
||||||
Language::variableHandler(n);
|
Language::variableHandler(n);
|
||||||
emitter->exitVariable(n);
|
emitter->exitVariable(n);
|
||||||
|
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -406,6 +375,7 @@ int JAVASCRIPT::globalvariableHandler(Node *n) {
|
||||||
|
|
||||||
emitter->switchNamespace(n);
|
emitter->switchNamespace(n);
|
||||||
Language::globalvariableHandler(n);
|
Language::globalvariableHandler(n);
|
||||||
|
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -422,9 +392,8 @@ int JAVASCRIPT::constantWrapper(Node *n) {
|
||||||
if (Equal(Getattr(n, "kind"), "function")) {
|
if (Equal(Getattr(n, "kind"), "function")) {
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Language::constantWrapper(n);
|
|
||||||
emitter->emitConstant(n);
|
emitter->emitConstant(n);
|
||||||
|
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -506,7 +475,7 @@ void JAVASCRIPT::main(int argc, char *argv[]) {
|
||||||
Swig_mark_arg(i);
|
Swig_mark_arg(i);
|
||||||
mode = JSEmitter::QtScript;
|
mode = JSEmitter::QtScript;
|
||||||
SWIG_library_directory("javascript/qt");
|
SWIG_library_directory("javascript/qt");
|
||||||
} else if (strcmp(argv[i], "-debug-templates") == 0) {
|
} else if (strcmp(argv[i], "-debug-codetemplates") == 0) {
|
||||||
Swig_mark_arg(i);
|
Swig_mark_arg(i);
|
||||||
debug_templates = true;
|
debug_templates = true;
|
||||||
}
|
}
|
||||||
|
|
@ -570,30 +539,6 @@ extern "C" Language *swig_javascript(void) {
|
||||||
* Emitter implementations
|
* Emitter implementations
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/**
|
|
||||||
* A convenience class that wraps a code snippet used as template for code generation.
|
|
||||||
*/
|
|
||||||
class Template {
|
|
||||||
|
|
||||||
public:
|
|
||||||
Template(const String *code);
|
|
||||||
|
|
||||||
Template(const String *code, const String *templateName, bool debug = false);
|
|
||||||
|
|
||||||
~Template();
|
|
||||||
|
|
||||||
String *str();
|
|
||||||
|
|
||||||
Template& replace(const String *pattern, const String *repl);
|
|
||||||
|
|
||||||
Template& pretty_print(DOH *doh);
|
|
||||||
|
|
||||||
private:
|
|
||||||
String *code;
|
|
||||||
String *templateName;
|
|
||||||
bool debug;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
* JSEmitter()
|
* JSEmitter()
|
||||||
* ----------------------------------------------------------------------------- */
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
@ -634,7 +579,7 @@ Template JSEmitter::getTemplate(const String *name) {
|
||||||
SWIG_exit(EXIT_FAILURE);
|
SWIG_exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
Template t(templ, name, js_template_enable_debug);
|
Template t(templ, name);
|
||||||
|
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
@ -820,86 +765,6 @@ bool JSEmitter::isSetterMethod(Node *n) {
|
||||||
return (__swigjs_str_ends_with((char *) Data(symname), "_set") != 0);
|
return (__swigjs_str_ends_with((char *) Data(symname), "_set") != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
|
||||||
* Template::Template() : creates a Template class for given template code
|
|
||||||
* ----------------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
Template::Template(const String *code_) {
|
|
||||||
|
|
||||||
if (!code_) {
|
|
||||||
Printf(stdout, "Template code was null. Illegal input for template.");
|
|
||||||
SWIG_exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
debug = false;
|
|
||||||
code = NewString(code_);
|
|
||||||
templateName = NewString("");
|
|
||||||
}
|
|
||||||
|
|
||||||
Template::Template(const String *code_, const String *templateName_, bool debug_) {
|
|
||||||
|
|
||||||
if (!code_) {
|
|
||||||
Printf(stdout, "Template code was null. Illegal input for template.");
|
|
||||||
SWIG_exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
code = NewString(code_);
|
|
||||||
templateName = NewString(templateName_);
|
|
||||||
debug = debug_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
|
||||||
* Template::~Template() : cleans up of Template.
|
|
||||||
* ----------------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
Template::~Template() {
|
|
||||||
Delete(code);
|
|
||||||
Delete(templateName);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
|
||||||
* String* Template::str() : retrieves the current content of the template.
|
|
||||||
* ----------------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
String *Template::str() {
|
|
||||||
if (debug) {
|
|
||||||
String *pre_code = NewString("");
|
|
||||||
String *post_code = NewString("");
|
|
||||||
String *debug_code = NewString("");
|
|
||||||
Printf(pre_code, "//begin fragment(\"%s\")\n", templateName);
|
|
||||||
Printf(post_code, "//end fragment(\"%s\")\n", templateName);
|
|
||||||
Printf(debug_code, "%s\n%s\n%s", pre_code, code, post_code);
|
|
||||||
|
|
||||||
Delete(code);
|
|
||||||
Delete(pre_code);
|
|
||||||
Delete(post_code);
|
|
||||||
|
|
||||||
code = debug_code;
|
|
||||||
}
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
|
||||||
* Template& Template::replace(const String* pattern, const String* repl) :
|
|
||||||
*
|
|
||||||
* replaces all occurences of a given pattern with a given replacement.
|
|
||||||
*
|
|
||||||
* - pattern: the pattern to be replaced
|
|
||||||
* - repl: the replacement string
|
|
||||||
* - returns a reference to the Template to allow chaining of methods.
|
|
||||||
* ----------------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
Template& Template::replace(const String *pattern, const String *repl) {
|
|
||||||
Replaceall(code, pattern, repl);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
Template& Template::pretty_print(DOH *doh) {
|
|
||||||
Wrapper_pretty_print(str(), doh);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* JavascriptCore: JSEmitter implementation for JavascriptCore engine
|
* JavascriptCore: JSEmitter implementation for JavascriptCore engine
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
@ -2315,3 +2180,174 @@ JSEmitter *swig_javascript_create_V8Emitter() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* Helper implementations
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
JSEmitterState::JSEmitterState()
|
||||||
|
: _global(NewHash())
|
||||||
|
{
|
||||||
|
// initialize sub-hashes
|
||||||
|
Setattr(_global, "class", NewHash());
|
||||||
|
Setattr(_global, "function", NewHash());
|
||||||
|
Setattr(_global, "variable", NewHash());
|
||||||
|
}
|
||||||
|
|
||||||
|
JSEmitterState::~JSEmitterState()
|
||||||
|
{
|
||||||
|
Delete(_global);
|
||||||
|
}
|
||||||
|
|
||||||
|
DOH *JSEmitterState::getState(const char* key, bool _new)
|
||||||
|
{
|
||||||
|
if (_new) {
|
||||||
|
Hash *hash = NewHash();
|
||||||
|
Setattr(_global, key, hash);
|
||||||
|
}
|
||||||
|
return Getattr(_global, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
DOH *JSEmitterState::global() {
|
||||||
|
return _global;
|
||||||
|
}
|
||||||
|
|
||||||
|
DOH *JSEmitterState::global(const char* key, DOH *initial)
|
||||||
|
{
|
||||||
|
if(initial != 0) {
|
||||||
|
Setattr(_global, key, initial);
|
||||||
|
}
|
||||||
|
return Getattr(_global, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
DOH *JSEmitterState::clazz(bool _new)
|
||||||
|
{
|
||||||
|
return getState("class", _new);
|
||||||
|
}
|
||||||
|
|
||||||
|
DOH *JSEmitterState::clazz(const char* key, DOH *initial)
|
||||||
|
{
|
||||||
|
DOH *c = clazz();
|
||||||
|
if(initial != 0) {
|
||||||
|
Setattr(c, key, initial);
|
||||||
|
}
|
||||||
|
return Getattr(c, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
DOH *JSEmitterState::function(bool _new)
|
||||||
|
{
|
||||||
|
return getState("function", _new);
|
||||||
|
}
|
||||||
|
|
||||||
|
DOH *JSEmitterState::function(const char* key, DOH *initial)
|
||||||
|
{
|
||||||
|
DOH *f = function();
|
||||||
|
if(initial != 0) {
|
||||||
|
Setattr(f, key, initial);
|
||||||
|
}
|
||||||
|
return Getattr(f, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
DOH *JSEmitterState::variable(bool _new)
|
||||||
|
{
|
||||||
|
return getState("variable", _new);
|
||||||
|
}
|
||||||
|
|
||||||
|
DOH *JSEmitterState::variable(const char* key, DOH *initial)
|
||||||
|
{
|
||||||
|
DOH *v = variable();
|
||||||
|
if(initial != 0) {
|
||||||
|
Setattr(v, key, initial);
|
||||||
|
}
|
||||||
|
return Getattr(v, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*static*/
|
||||||
|
int JSEmitterState::IsSet(DOH *val)
|
||||||
|
{
|
||||||
|
if (!val) {
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
const char *cval = Char(val);
|
||||||
|
if (!cval)
|
||||||
|
return 0;
|
||||||
|
return (strcmp(cval, "0") != 0) ? 1 : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -----------------------------------------------------------------------------
|
||||||
|
* Template::Template() : creates a Template class for given template code
|
||||||
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
Template::Template(const String *code_) {
|
||||||
|
|
||||||
|
if (!code_) {
|
||||||
|
Printf(stdout, "Template code was null. Illegal input for template.");
|
||||||
|
SWIG_exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
code = NewString(code_);
|
||||||
|
templateName = NewString("");
|
||||||
|
}
|
||||||
|
|
||||||
|
Template::Template(const String *code_, const String *templateName_) {
|
||||||
|
|
||||||
|
if (!code_) {
|
||||||
|
Printf(stdout, "Template code was null. Illegal input for template.");
|
||||||
|
SWIG_exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
code = NewString(code_);
|
||||||
|
templateName = NewString(templateName_);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* -----------------------------------------------------------------------------
|
||||||
|
* Template::~Template() : cleans up of Template.
|
||||||
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
Template::~Template() {
|
||||||
|
Delete(code);
|
||||||
|
Delete(templateName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -----------------------------------------------------------------------------
|
||||||
|
* String* Template::str() : retrieves the current content of the template.
|
||||||
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
String *Template::str() {
|
||||||
|
if (js_template_enable_debug) {
|
||||||
|
String *pre_code = NewString("");
|
||||||
|
String *post_code = NewString("");
|
||||||
|
String *debug_code = NewString("");
|
||||||
|
Printf(pre_code, "//begin fragment(\"%s\")\n", templateName);
|
||||||
|
Printf(post_code, "//end fragment(\"%s\")\n", templateName);
|
||||||
|
Printf(debug_code, "%s\n%s\n%s", pre_code, code, post_code);
|
||||||
|
|
||||||
|
Delete(code);
|
||||||
|
Delete(pre_code);
|
||||||
|
Delete(post_code);
|
||||||
|
|
||||||
|
code = debug_code;
|
||||||
|
}
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -----------------------------------------------------------------------------
|
||||||
|
* Template& Template::replace(const String* pattern, const String* repl) :
|
||||||
|
*
|
||||||
|
* replaces all occurences of a given pattern with a given replacement.
|
||||||
|
*
|
||||||
|
* - pattern: the pattern to be replaced
|
||||||
|
* - repl: the replacement string
|
||||||
|
* - returns a reference to the Template to allow chaining of methods.
|
||||||
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
Template& Template::replace(const String *pattern, const String *repl) {
|
||||||
|
Replaceall(code, pattern, repl);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Template& Template::pretty_print(DOH *doh) {
|
||||||
|
Wrapper_pretty_print(str(), doh);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue