diff options
Diffstat (limited to 'src/node/utils/TidyHtml.js')
-rw-r--r-- | src/node/utils/TidyHtml.js | 41 |
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); + } + }); +}; |