mirror of
https://github.com/lucaspalomodevelop/JSSTE.git
synced 2026-03-13 07:19:37 +00:00
add scriptexectuer | tests | config | jsonMerger
This commit is contained in:
parent
e650a77500
commit
375b6dddd5
5
src/config.js
Normal file
5
src/config.js
Normal file
@ -0,0 +1,5 @@
|
||||
let config = {
|
||||
templatePath: __dirname + "\\src\\templates",
|
||||
pagePath: __dirname + "\\src\\pages",
|
||||
};
|
||||
module.exports = config;
|
||||
@ -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
38
src/jsonMerger.js
Normal 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
30
src/scriptExecuter.js
Normal 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
14
test/core.jste.test.js
Normal 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
66
test/core.render.test.js
Normal 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
59
test/jsonMerger.test.js
Normal 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;
|
||||
26
test/scriptexec.jste.test.js
Normal file
26
test/scriptexec.jste.test.js
Normal 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;
|
||||
76
test/test.js
76
test/test.js
@ -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
12
test/test.test.js
Normal 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();
|
||||
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user