Skip to content

Commit 4610b70

Browse files
committed
added dejs
1 parent 72d8869 commit 4610b70

File tree

9 files changed

+87
-29
lines changed

9 files changed

+87
-29
lines changed

.vscode/launch.json

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@
1010
"request": "launch",
1111
"cwd": "${workspaceFolder}",
1212
"runtimeExecutable": "deno",
13-
"runtimeArgs": ["run", "-A", "--inspect-brk"],
14-
"args": ["${relativeFile}"],
13+
"runtimeArgs": ["run", "--inspect-brk", "-A", "./src/app.ts"],
1514
"port": 9229,
1615
"outputCapture": "std"
1716
},
@@ -21,9 +20,22 @@
2120
"request": "launch",
2221
"cwd": "${workspaceFolder}",
2322
"runtimeExecutable": "deno",
24-
"runtimeArgs": ["test", "-A", "--inspect-brk"],
23+
"runtimeArgs": [
24+
"test",
25+
"-A",
26+
"--inspect-brk"
27+
],
2528
"port": 9229,
2629
"outputCapture": "std"
30+
},
31+
{
32+
"name": "Deno Attach",
33+
"port": 9229,
34+
"request": "attach",
35+
"skipFiles": [
36+
"<node_internals>/**"
37+
],
38+
"type": "node"
2739
}
2840
]
29-
}
41+
}

lib/adapters/oak/oak.adapter.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,16 @@ export const oakAdapter: Adapter = (
5151
let template = await getTemplate(viewConfig.viewRoot!, fileName);
5252

5353
ctx.response.headers.set("Content-Type", "text/html; charset=utf-8");
54-
ctx.response.body = await renderEngine(
55-
template,
56-
data ?? {},
57-
ctx.app.viewConcig,
58-
fileName
59-
);
54+
55+
ctx.response.body = async () => {
56+
return renderEngine(
57+
template,
58+
data ?? {},
59+
ctx.app.viewConcig,
60+
fileName
61+
);
62+
}
63+
6064
} catch (e) {
6165
ctx.response.status = 404;
6266
console.error("View-Engine: ", e.message);

lib/adapters/oak/oak.utils.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,8 @@ const urlRegex =
55

66

77
export async function getTemplate(viewRoot: string, fileName: string) {
8-
let filePath = viewRoot + fileName;
9-
10-
if (filePath.match(urlRegex)) {
11-
return await fetch(filePath).then((res) => res.text());
12-
} else {
13-
filePath = path.join(viewRoot, fileName);
14-
return Deno.readTextFileSync(filePath);
15-
}
8+
const filePath = path.join(viewRoot, fileName);
9+
console.log(filePath);
10+
11+
return Deno.readTextFileSync(filePath);
1612
}

lib/engines/dejs/dejs.engine.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import * as dejs from "https://deno.land/x/dejs@0.10.2/mod.ts";
2+
import type { Engine, ViewConfig } from "../../viewEngine.type.ts";
3+
4+
export const dejsEngine: Engine = async (
5+
template: string,
6+
data: object = {},
7+
config: ViewConfig = {},
8+
filename: string = ""
9+
): Promise<string> => {
10+
11+
return new Promise<string>(async (resolve, reject) => {
12+
try{
13+
const result = await dejs.renderToString(template, data)
14+
resolve(result)
15+
}catch(e){
16+
reject(e)
17+
}
18+
})
19+
};

lib/engines/denjuck/denjuck.engine.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,18 @@ export const denjuckEngine: Engine = (
88
config: ViewConfig = {},
99
filename: string = "",
1010
) => {
11+
1112
if (config.viewRoot) {
1213
denjucks.configure(config.viewRoot);
1314
}
1415

15-
return denjucks.renderString(template, data);
16+
return new Promise<string>((resolve, reject) => {
17+
try {
18+
const result = denjucks.render(template, data) as string;
19+
resolve(result);
20+
} catch (e) {
21+
reject(e);
22+
}
23+
});
24+
1625
};

lib/engines/ejs/ejs.engine.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,20 @@ export const ejsEngine: Engine = (
77
data: object = {},
88
config: ViewConfig = {},
99
filename: string = ""
10-
): string => {
11-
if (config.viewRoot) {
12-
let option: EjsOptions = { filename: path.join(config.viewRoot, filename) };
13-
return ejs.render(template, data, option) as string;
14-
} else {
15-
return ejs.render(template, data, { filename }) as string;
16-
}
10+
) => {
11+
return new Promise<string>((resolve, reject) => {
12+
try {
13+
if (config.viewRoot) {
14+
let option: EjsOptions = { filename: path.join(config.viewRoot, filename) };
15+
const result = ejs.render(template, data, option) as string;
16+
resolve(result);
17+
} else {
18+
const result = ejs.render(template, data, { filename }) as string;
19+
resolve(result);
20+
}
21+
}
22+
catch (e) {
23+
reject(e);
24+
}
25+
});
1726
};

lib/engines/handlebars/handlebars.engine.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ export const handlebarsEngine: Engine = (
99
config: ViewConfig = {},
1010
filename: string = "",
1111

12-
): string => {
13-
return hbs.compile(template)(data);
12+
) => {
13+
return new Promise<string>((resolve, reject) => {
14+
try {
15+
const result = hbs.compile(template)(data) as string;
16+
resolve(result);
17+
} catch (e) {
18+
reject(e);
19+
}
20+
});
21+
1422
};

lib/viewEngine.type.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ export type Engine = (
1313
data: object,
1414
config?: ViewConfig,
1515
filename?:string
16-
) => string;
16+
) => Promise<string>;

mod.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
export { ejsEngine } from "./lib/engines/ejs/ejs.engine.ts";
33
export { denjuckEngine } from "./lib/engines/denjuck/denjuck.engine.ts";
44
export { handlebarsEngine } from "./lib/engines/handlebars/handlebars.engine.ts";
5+
export { dejsEngine } from "./lib/engines/dejs/dejs.engine.ts";
56

67
//! type
78
export type { Engine, Adapter, ViewConfig } from "./lib/viewEngine.type.ts"

0 commit comments

Comments
 (0)