import { processHtml } from "./processHtml"; import { Context } from "./context"; import { CompileError } from "./CompileError"; import { processResult } from "./processResult"; import { opts, CommandLineOptions } from "./options"; import { replaceExtension as replaceExt } from "./replace-extension"; import glob = require("glob"); import fs = require("fs"); import path = require('path'); import _ = require("lodash"); import md5 = require("blueimp-md5"); export function webpack(source: string, options: CommandLineOptions, fileName?: string|undefined): string { const write = fileName !== undefined; fileName = fileName || "file"; if(write) { console.log(`rioct convert: ${path.basename(fileName)}`); if(path.extname(fileName) !== '.html') { throw `only .html files can be processed`; } } const html = source; var context = new Context(); context.html = html; context.file = fileName; context.options = options; context.hash = md5(fileName,"rioct"); const outName = replaceExt(fileName, options.typescript ? ".tag.ts" : ".tag.js"); context.outName = outName; var result = processHtml(html, context); result.fileName = fileName; result.outName = outName; if(write) { // writes to disk .js compiled template fs.writeFileSync(outName, result.rtTemplateAugumented); // writes to disk .rt source template const outRtName = replaceExt(fileName, ".rt"); fs.writeFileSync(outRtName, result.rtSource); } return result.rtTemplateAugumented; }