1 | "use strict";
|
2 | var config, extensionRegex, fs, jade, logger, registration, __isJadeStatic, __outputFileName, _addStaticFilesToOutput, _pullStaticFilesOutAndCompile, _removeStaticJade;
|
3 |
|
4 | fs = require('fs');
|
5 |
|
6 | jade = require('jade');
|
7 |
|
8 | logger = require('logmimosa');
|
9 |
|
10 | config = require('./config');
|
11 |
|
12 | extensionRegex = null;
|
13 |
|
14 | registration = 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 |
|
98 | module.exports = {
|
99 | registration: registration,
|
100 | defaults: config.defaults,
|
101 | placeholder: config.placeholder,
|
102 | validate: config.validate
|
103 | };
|