add scriptexectuer | tests | config | jsonMerger

This commit is contained in:
lucasdevelop 2021-08-07 16:31:17 +02:00
parent e650a77500
commit 375b6dddd5
10 changed files with 275 additions and 100 deletions

5
src/config.js Normal file
View File

@ -0,0 +1,5 @@
let config = {
templatePath: __dirname + "\\src\\templates",
pagePath: __dirname + "\\src\\pages",
};
module.exports = config;

View File

@ -1,7 +1,10 @@
const fs = require("fs");
const path = require("path");
var appdir = path.join(__dirname, "..");
var app = {};
//const path = require("path");
//let appdir = path.join(__dirname, "..");
let app = {};
app.config = require("./config");
function escapeRegExp(string) {
return string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&");
@ -11,25 +14,23 @@ function replaceAll(str, find, replace) {
return str.replace(new RegExp(escapeRegExp(find), "g"), replace);
}
app.CONST = function(pagecode,constant,callback)
{
if(pagecode[constant] !== undefined)
{
callback(pagecode,pagecode[constant]);
}
else
{
app.CONST = function (pagecode, constant, callback) {
if (pagecode[constant] !== undefined) {
callback(pagecode, pagecode[constant]);
} else {
return 0;
}
}
};
app.render = function (pagecode, templatecode) {
//let result = "";
result = "";
if (!pagecode == JSON) pagecode = JSON.parse(pagecode);
//if (!pagecode == JSON) pagecode = JSON.parse(pagecode);
if (pagecode != null || pagecode != undefined) {
try {
pagecode = JSON.parse(pagecode);
} catch{}
}
//TODO
if (templatecode === null || templatecode == undefined) {
@ -37,23 +38,23 @@ app.render = function (pagecode, templatecode) {
}
app.CONST(pagecode, "_STYLES_", (pagecode, value) => {
var rex = /<head>(.|\n|\t|\r)*?<\/head>/;
var header = templatecode.match(rex);
let rex = /<head>(.|\n|\t|\r)*?<\/head>/;
let header = templatecode.match(rex);
header = header[0].replace("</head>", "");
value.forEach((element) => {
header += `\n<link href="${element}.css" rel="stylesheet"></link>`;
});
header += "\n</head>";
// console.log(header);
// console.log(header);
templatecode = templatecode.replace(/<head>(.|\n|\t|\r)*?<\/head>/, header);
// replaceAll(templatecode,rex,value)
});
for (let i in pagecode) {
let value = undefined;
for (var i in pagecode) {
var value = undefined;
var re = new RegExp(/\d*_([A-Z]|[a-z])\w*_/g);
let re = new RegExp(/\d*_([A-Z]|[a-z])\w*_/g);
if (re.test(i)) continue;
value = pagecode[i].toString();

38
src/jsonMerger.js Normal file
View File

@ -0,0 +1,38 @@
function mergeJson(org, ext) {
// let placeholder = undefined;
if (org !== JSON) {
try {
org = JSON.parse(org);
} catch (error) {}
}
if (ext !== JSON) {
try {
ext = JSON.parse(ext);
} catch (error) {}
}
Object.keys(ext).forEach(function (key) {
let value = ext[key];
if (Array.isArray(ext[key])) {
if (Array.isArray(org[key])) {
value.forEach((item) => {
org[key].push(item);
});
}
} else {
org[key] = value;
}
});
return org;
}
function mergeJsons(org, ...ext) {
ext.forEach((element) => {
org = mergeJson(org, element);
});
return org;
}
module.exports = { mergeJson, mergeJsons };

30
src/scriptExecuter.js Normal file
View File

@ -0,0 +1,30 @@
function Added() {
let outString = "";
function out(arg) {
outString += arg;
}
function outLine(arg) {
outString += "\n" + arg;
}
}
function exec(script) {
script = "".concat(
Added.toString().replace(/^function\s*\S+\s*\([^)]*\)\s*\{|\}$/g, ""),
script
);
script += "\n return outString;";
let F = new Function(script);
return F();
}
module.exports = exec;
/*
*/

14
test/core.jste.test.js Normal file
View File

@ -0,0 +1,14 @@
let core_render = require("./core.render.test");
let core_scriptexec = require("./scriptexec.jste.test");
function test()
{
describe("JSTE CORE", function () {
core_render();
core_scriptexec();
});
}
module.exports = test;

66
test/core.render.test.js Normal file
View File

@ -0,0 +1,66 @@
let libfolder = "../src/";
let JSSTE_Engine = require(libfolder);
function test() {
describe("render", function () {
it(" should return Hallo! -> JSON as Page", function () {
let template = "<[VAR]>!";
let page = { VAR: "Hallo" };
let result = JSSTE_Engine.render(page, template);
result.should.equal("Hallo!");
});
it("should return Hallo! -> String as Page", function () {
let template = "<[VAR]>!";
let page = '{"VAR":"Hallo"}';
let result = JSSTE_Engine.render(page, template);
result.should.equal("Hallo!");
});
it("should retrun one var two times", function () {
let template = "<[VAR]><[VAR]>!";
let page = { VAR: "Hallo" };
let result = JSSTE_Engine.render(page, template);
result.should.equal("HalloHallo!");
});
it("should retrun EXAMPLE EXAMPLE", function () {
let template = "<[VAR]> <[VAR]>";
let page = { VAR: "EXAMPLE" };
let result = JSSTE_Engine.render(page, template);
result.should.equal("EXAMPLE EXAMPLE");
});
it("should delete useless var", function () {
let template = "<[VAR]><[VAR2]><[VAR]>";
let page = { VAR: "EXAMPLE" };
let result = JSSTE_Engine.render(page, template);
result.should.equal("EXAMPLEEXAMPLE");
});
it("should not rendern _VAR_", function () {
let template = "<[_VAR_]>";
let page = { VAR: "EXAMPLE" };
let result = JSSTE_Engine.render(page, template);
result.should.equal("<[_VAR_]>");
});
it("should render in href a tag", function () {
let template = "<a href='<[LINK]>'></a>";
let page = { LINK: "www.nodejs.com" };
let result = JSSTE_Engine.render(page, template);
result.should.equal("<a href='www.nodejs.com'></a>");
});
it("should render a tag", function () {
let template = "<a href='<[LINK]>'><[VAR]></a>";
let page = { VAR: "EXAMPLE", LINK: "www.nodejs.com" };
let result = JSSTE_Engine.render(page, template);
result.should.equal("<a href='www.nodejs.com'>EXAMPLE</a>");
});
});
}
module.exports = test;

59
test/jsonMerger.test.js Normal file
View File

@ -0,0 +1,59 @@
let libfolder = "../src/";
let jsonmerger = require(libfolder + "jsonMerger");
function test() {
describe("Test JsonMerger", function () {
it("should return merged json", function () {
let json1 = { a: "wert1" };
let json2 = { b: "wert2" };
let result = jsonmerger.mergeJson(json1, json2);
result = JSON.stringify(result);
result.should.equal(JSON.stringify({ a: "wert1", b: "wert2" }));
});
it("should return merged json override b", function () {
let json1 = { a: "wert1", b: "wert3" };
let json2 = { b: "wert2" };
let result = jsonmerger.mergeJson(json1, json2);
result = JSON.stringify(result);
result.should.equal(JSON.stringify({ a: "wert1", b: "wert2" }));
});
it("should merge 3 JSONs ", function () {
let json1 = { a: "wert1" };
let json2 = { b: "wert2" };
let json3 = { c: "wert3" };
let result = jsonmerger.mergeJsons(json1, json2, json3);
result = JSON.stringify(result);
result.should.equal(
JSON.stringify({ a: "wert1", b: "wert2", c: "wert3" })
);
});
it("should merge 4 JSONs", function () {
let json1 = { a: "wert1" };
let json2 = { b: "wert2" };
let json3 = { c: "wert3" };
let json4 = { d: "wert4" };
let result = jsonmerger.mergeJsons(json1, json2, json3, json4);
result = JSON.stringify(result);
result.should.equal(
JSON.stringify({ a: "wert1", b: "wert2", c: "wert3", d: "wert4" })
);
});
it("should merge 2 jsons with array", function () {
let json1 = { a: ["a", "b"] };
let json2 = { a: ["c"], b: "hallo" };
let result = jsonmerger.mergeJsons(json1, json2);
result = JSON.stringify(result);
result.should.equal(JSON.stringify({ a: ["a", "b", "c"], b: "hallo" }));
});
});
}
module.exports = test;

View File

@ -0,0 +1,26 @@
let libfolder = "../src";
let scriptExecuter = require(libfolder + "/scriptExecuter");
function test() {
describe("test scriptexecuter", () => {
it("should return script result 'HalloWelt'", function () {
let script = "return 'HalloWelt';";
let result = scriptExecuter(script);
result.should.equal("HalloWelt");
});
it("should return script result out()", function () {
let script = "out('HalloWelt')";
let result = scriptExecuter(script);
result.should.equal("HalloWelt");
});
it("should return script result outLine()", function () {
let script = "outLine('HalloWelt'); outLine('HalloWelt')";
let result = scriptExecuter(script);
result.should.equal("\nHalloWelt\nHalloWelt");
});
});
}
module.exports = test;

View File

@ -1,76 +0,0 @@
const JSSTE = require("../src");
const engine = require("../src/engine");
var assert = require("assert");
var expect = require("chai").expect;
var should = require("chai").should();
describe("test var rendering", function () {
it("should retrun EXAMPLE", function () {
var result = JSSTE.render({ VAR: "EXAMPLE" }, "<[VAR]>");
result.should.equal("EXAMPLE");
});
it("should retrun EXAMPLEEXAMPLE", function () {
var result = JSSTE.render({ VAR: "EXAMPLE" }, "<[VAR]><[VAR]>");
result.should.equal("EXAMPLEEXAMPLE");
});
it("should retrun EXAMPLE EXAMPLE", function () {
var result = JSSTE.render({ VAR: "EXAMPLE" }, "<[VAR]> <[VAR]>");
result.should.equal("EXAMPLE EXAMPLE");
});
it("should delete useless var", function () {
var result = JSSTE.render({ VAR: "EXAMPLE" }, "<[VAR]><[VAR2]><[VAR]>");
result.should.equal("EXAMPLEEXAMPLE");
});
it("should render in HTML tag", function () {
var result = JSSTE.render({ VAR: "EXAMPLE" }, "<html><[VAR]></html>");
result.should.equal("<html>EXAMPLE</html>");
});
it("should render in href a tag", function () {
var result = JSSTE.render({ LINK: "www.nodejs.com" }, "<a href='<[LINK]>'></a>");
result.should.equal("<a href='www.nodejs.com'></a>");
});
it("should render a tag", function () {
var result = JSSTE.render({VAR: "EXAMPLE", LINK: "www.nodejs.com" }, "<a href='<[LINK]>'><[VAR]></a>");
result.should.equal("<a href='www.nodejs.com'>EXAMPLE</a>");
});
});
describe("test Varnames",function (){
it("should render varname: VAR", function () {
var result = JSSTE.render({ VAR: "EXAMPLE" }, "<[VAR]>");
result.should.equal("EXAMPLE");
});
it("should render varname: Var", function () {
var result = JSSTE.render({ Var: "EXAMPLE" }, "<[Var]>");
result.should.equal("EXAMPLE");
});
it("should render varname: vAr", function () {
var result = JSSTE.render({ vAr: "EXAMPLE" }, "<[vAr]>");
result.should.equal("EXAMPLE");
});
it("should render varname: vaR", function () {
var result = JSSTE.render({ vaR: "EXAMPLE" }, "<[vaR]>");
result.should.equal("EXAMPLE");
});
it("should render varname: var", function () {
var result = JSSTE.render({ var: "EXAMPLE" }, "<[var]>");
result.should.equal("EXAMPLE");
});
it("should not rende _VAR_", function () {
var result = JSSTE.render({ _VAR_: "EXAMPLE" }, "<[_VAR_]>");
result.should.equal("<[_VAR_]>");
});
it("should not render _var_", function () {
var result = JSSTE.render({ _var_: "EXAMPLE" }, "<[_var_]>");
result.should.equal("<[_var_]>");
});
it("should impliment _STYLE_", function () {
var result = JSSTE.render({ _STYLES_: ["EXAMPLE","EXAMPLE2"] }, "<html><head><title>Example App</title></head></html>");
//result.should.equal("<[_var_]>");
});
})
console.log();

12
test/test.test.js Normal file
View File

@ -0,0 +1,12 @@
require("chai").should();
let test_jsonMerger = require("./jsonMerger.test");
let test_core = require("./core.jste.test");
describe("Core Tests", function () {
test_jsonMerger();
test_core();
});