summaryrefslogtreecommitdiff
path: root/src/node/utils/TidyHtml.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/node/utils/TidyHtml.js')
-rw-r--r--src/node/utils/TidyHtml.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/node/utils/TidyHtml.js b/src/node/utils/TidyHtml.js
new file mode 100644
index 00000000..5d4e6ed7
--- /dev/null
+++ b/src/node/utils/TidyHtml.js
@@ -0,0 +1,41 @@
+/**
+ * Tidy up the HTML in a given file
+ */
+
+var log4js = require('log4js');
+var settings = require('./Settings');
+var spawn = require('child_process').spawn;
+
+exports.tidy = function(srcFile, callback) {
+ var logger = log4js.getLogger('TidyHtml');
+
+ // Don't do anything if Tidy hasn't been enabled
+ if (!settings.tidyHtml) {
+ logger.debug('tidyHtml has not been configured yet, ignoring tidy request');
+ return callback(null);
+ }
+
+ var errMessage = '';
+
+ // Spawn a new tidy instance that cleans up the file inline
+ logger.debug('Tidying ' + srcFile);
+ var tidy = spawn(settings.tidyHtml, ['-modify', srcFile]);
+
+ // Keep track of any error messages
+ tidy.stderr.on('data', function (data) {
+ errMessage += data.toString();
+ });
+
+ // Wait until Tidy is done
+ tidy.on('close', function(code) {
+ // Tidy returns a 0 when no errors occur and a 1 exit code when
+ // the file could be tidied but a few warnings were generated
+ if (code === 0 || code === 1) {
+ logger.debug('Tidied ' + srcFile + ' successfully');
+ return callback(null);
+ } else {
+ logger.error('Failed to tidy ' + srcFile + '\n' + errMessage);
+ return callback('Tidy died with exit code ' + code);
+ }
+ });
+};