UNPKG

3.52 kBJavaScriptView Raw
1"use strict";
2var config, extensionRegex, fs, jade, logger, registration, __isJadeStatic, __outputFileName, _addStaticFilesToOutput, _pullStaticFilesOutAndCompile, _removeStaticJade;
3
4fs = require('fs');
5
6jade = require('jade');
7
8logger = require('logmimosa');
9
10config = require('./config');
11
12extensionRegex = null;
13
14registration = function(mimosaConfig, register) {
15 var extensions, _ref, _ref1;
16 extensionRegex = mimosaConfig.clientJadeStatic.extensionRegex;
17 extensions = ((_ref = mimosaConfig.compilers) != null ? (_ref1 = _ref.extensionOverrides) != null ? _ref1.jade : void 0 : void 0) || ["jade"];
18 register(['add', 'update', 'buildExtension'], 'afterRead', _pullStaticFilesOutAndCompile, extensions);
19 register(['add', 'update', 'buildExtension'], 'afterCompile', _addStaticFilesToOutput, extensions);
20 return register(['remove', 'cleanFile'], 'afterRead', _removeStaticJade, extensions);
21};
22
23__outputFileName = function(mimosaConfig, inputFileName) {
24 return inputFileName.replace(mimosaConfig.clientJadeStatic.extensionRegex, mimosaConfig.clientJadeStatic.outputExtension).replace(mimosaConfig.watch.sourceDir, mimosaConfig.watch.compiledDir);
25};
26
27__isJadeStatic = function(str) {
28 return str.match(extensionRegex);
29};
30
31_pullStaticFilesOutAndCompile = function(mimosaConfig, options, next) {
32 var files, hasFiles, _ref;
33 hasFiles = ((_ref = options.files) != null ? _ref.length : void 0) > 0;
34 if (!hasFiles) {
35 return next();
36 }
37 files = options.files.filter(function(file) {
38 return __isJadeStatic(file.inputFileName);
39 });
40 options.files = (options.inputFile != null) && __isJadeStatic(options.inputFile) ? [] : options.files.filter(function(file) {
41 return !__isJadeStatic(file.inputFileName);
42 });
43 options.staticJadeFiles = files.map(function(file) {
44 file.outputFileName = __outputFileName(mimosaConfig, file.inputFileName);
45 return file;
46 }).filter(function(file) {
47 var inStats, outStats;
48 if (fs.existsSync(file.outputFileName)) {
49 outStats = fs.statSync(file.outputFileName);
50 inStats = fs.statSync(file.inputFileName);
51 return inStats.mtime > outStats.mtime;
52 } else {
53 return true;
54 }
55 }).map(function(file) {
56 var err, funct;
57 try {
58 funct = jade.compile(file.inputFileText, {
59 compileDebug: false,
60 filename: file.inputFileName
61 });
62 file.outputFileText = funct(mimosaConfig.clientJadeStatic.context);
63 } catch (_error) {
64 err = _error;
65 logger.error(err);
66 file.outputFileText = null;
67 }
68 return file;
69 });
70 return next();
71};
72
73_removeStaticJade = function(mimosaConfig, options, next) {
74 var outputFileName;
75 if (__isJadeStatic(options.inputFile)) {
76 options.files = [];
77 outputFileName = __outputFileName(mimosaConfig, options.inputFile);
78 if (fs.existsSync(outputFileName)) {
79 fs.unlinkSync(outputFileName);
80 logger.success("Deleted file [[ " + outputFileName + " ]] ");
81 }
82 }
83 return next();
84};
85
86_addStaticFilesToOutput = function(mimosaConfig, options, next) {
87 var _ref, _ref1;
88 if (!(((_ref = options.files) != null ? _ref.length : void 0) > 0 || ((_ref1 = options.staticJadeFiles) != null ? _ref1.length : void 0) > 0)) {
89 return next();
90 }
91 if (options.files == null) {
92 options.files = [];
93 }
94 options.files = options.files.concat(options.staticJadeFiles);
95 return next();
96};
97
98module.exports = {
99 registration: registration,
100 defaults: config.defaults,
101 placeholder: config.placeholder,
102 validate: config.validate
103};