diff --git a/src/compiler/parser.cpp b/src/compiler/parser.cpp index 8aabdc7..dc4bf48 100644 --- a/src/compiler/parser.cpp +++ b/src/compiler/parser.cpp @@ -318,6 +318,38 @@ namespace Tesses::CrossLang }) })); } + else if(tagName == "plink") + { + EnsureSymbol("("); + SyntaxNode expr = ParseExpression(); + + EnsureSymbol(")"); + EnsureSymbol(">"); + + nodes.push_back(AdvancedSyntaxNode::Create(CompoundAssignExpression,true,{ + AdvancedSyntaxNode::Create(AddExpression,true,{ + AdvancedSyntaxNode::Create(GetVariableExpression,true,{var}), + AdvancedSyntaxNode::Create(AddExpression,true,{ + "

", + AdvancedSyntaxNode::Create(AddExpression,true,{ + AdvancedSyntaxNode::Create(FunctionCallExpression,true,{ + AdvancedSyntaxNode::Create(GetFieldExpression,true,{ + AdvancedSyntaxNode::Create(GetFieldExpression,true,{ + AdvancedSyntaxNode::Create(GetVariableExpression,true,{"Net"}), + "Http" + }) + , + "HtmlP" + }), + expr + }) + , + "

" + }) + }) + }) + })); + } else if(tagName == "if") { EnsureSymbol("("); diff --git a/src/runtime_methods/net.cpp b/src/runtime_methods/net.cpp index ea1b290..521794a 100644 --- a/src/runtime_methods/net.cpp +++ b/src/runtime_methods/net.cpp @@ -1327,6 +1327,26 @@ namespace Tesses::CrossLang } return nullptr; } + + static TObject Net_Http_HtmlP(GCList& ls, std::vector args) + { + std::string str; + if(GetArgument(args,0,str)) + { + return HttpUtils::HtmlP(str); + } + return ""; + } + + static TObject Net_Http_StatusCodeString(GCList& ls, std::vector args) + { + int64_t sc; + if(GetArgument(args,0,sc)) + { + return HttpUtils::StatusCodeString((StatusCode)sc); + } + return ""; + } void TStd::RegisterNet(GC* gc, TRootEnvironment* env) { @@ -1337,6 +1357,8 @@ namespace Tesses::CrossLang TDictionary* http = TDictionary::Create(ls); TDictionary* smtp = TDictionary::Create(ls); + http->DeclareFunction(gc, "StatusCodeString", "Get the status code string",{"statusCode"},Net_Http_StatusCodeString); + http->DeclareFunction(gc, "HtmlP", "Linkify text", {"text"},Net_Http_HtmlP); http->DeclareFunction(gc, "HtmlEncode","Html encode",{"param"}, Net_HtmlEncode); http->DeclareFunction(gc, "UrlEncode","Url encode query param",{"param"}, Net_UrlEncode); diff --git a/src/runtime_methods/sqlite.cpp b/src/runtime_methods/sqlite.cpp index 47ca5e0..e9e7599 100644 --- a/src/runtime_methods/sqlite.cpp +++ b/src/runtime_methods/sqlite.cpp @@ -116,13 +116,30 @@ namespace Tesses::CrossLang { TObject Sqlite_Escape(GCList& ls, std::vector args) { + int64_t n; + double d; + bool b; + + std::string str; if(GetArgument(args,0,str)) { return SQLiteDatabase::Escape(str); } + if(GetArgument(args,0,n)) + { + return std::to_string(n); + } + if(GetArgument(args,0,b)) + { + return b ? "1" : "0"; + } + if(GetArgument(args,0,d)) + { + return std::to_string(d); + } - return Undefined(); + return "NULL"; } TObject Sqlite_Close(GCList& ls, std::vector args)