flexbiz-server
Version:
Flexible Server
6 lines (5 loc) • 1.79 kB
JavaScript
const fs=require("fs"),pug=require("pug"),docx=require("docx-templates").default,ngcompile=require("ng-node-compile"),ejs=require("ejs"),moment=require("moment"),numeral=require("numeral"),{evalute}=require("./utils");
module.exports=async function($template$$,$_data$$,$callback$$){const $data$$={...$_data$$};if(!fs.existsSync($template$$))return $callback$$("Do not find the template file");let $ext$$=$template$$.split(".").pop().toLowerCase();switch($ext$$){case "pug":$callback$$(null,pug.renderFile($template$$,{data:$data$$,moment,numeral}));break;case "docx":try{const $data_docx$$=fs.readFileSync($template$$),$result$$=await docx({template:$data_docx$$,data:$data$$,cmdDelimiter:["{{","}}"]}),$finalBuffer$$=Buffer.from($result$$);
$callback$$(null,$finalBuffer$$)}catch($e$$){$callback$$($e$$)}break;case "ng":fs.readFile($template$$,function($error$$,$html$$){if($error$$)return $callback$$($error$$);try{let $ngEnviorment$$=new ngcompile([]);$callback$$(null,$ngEnviorment$$.$compile($html$$.toString())($data$$))}catch($e$$){$callback$$($e$$)}});break;case "ejs":fs.readFile($template$$,function($error$$,$html$$){if($error$$)return $callback$$($error$$);try{let $rs$$=ejs.render($html$$.toString(),{data:$data$$,moment,numeral});
$callback$$(null,$rs$$)}catch($e$$){$callback$$($e$$)}});break;default:fs.readFile($template$$,function($error$$,$text$$){if($error$$)return $callback$$($error$$);try{$text$$.indexOf("return ")<0&&($text$$="`"+$text$$+"`",$text$$=`return ${$text$$}`);let $rs$$=evalute($text$$,{data:$data$$,moment,numeral});if($ext$$=="xml"){const $xmlString$$=typeof $rs$$==="object"?JSON.stringify($rs$$):$rs$$.toString(),$buffer$$=Buffer.from($xmlString$$,"utf-8");$callback$$(null,$buffer$$)}else $callback$$(null,
$rs$$)}catch($e$$){$callback$$($e$$)}})}};