UNPKG

uritemplate

Version:

An UriTemplate implementation of rfc 6570

79 lines (71 loc) 2.87 kB
module.exports = (function () { "use strict"; var fs = require('fs'), async = require('async'); function readFileUtf8 (filename, callback) { // if you call readFile with encoding, the result is the file content as string. // without encoding it would be a stream, which can be converted to a string with its toString() method fs.readFile(filename, 'utf-8', callback); } function concat (inputFileArr, outputfile, callback, options) { async.map(inputFileArr, readFileUtf8, function (err, contents) { if (err) { throw new Error('could not read files: ' + err); } if (options && options.mapper) { if (Array.isArray(options.mapper)) { options.mapper.forEach(function (map) { contents = contents.map(map); }); } else { contents = contents.map(options.mapper); } } var concatenatedContent = contents.reduce(function (previousValue, currentValue) { return previousValue + '\n' + currentValue; }); if (options && options.preAll) { var pre = typeof options.preAll === 'string' ? options.preAll : options.preAll(concatenatedContent); concatenatedContent = pre + concatenatedContent; } if (options && options.postAll) { var post = typeof options.postAll === 'string' ? options.postAll : options.postAll(concatenatedContent); concatenatedContent = concatenatedContent + post; } fs.writeFile(outputfile, concatenatedContent, 'utf-8', callback); }); } function startsWith (text, beginning) { return text.substr(0, beginning.length) === beginning; } function removeFirstLine (text) { var indexOfLinebreak = text.indexOf("\n"); if (indexOfLinebreak < 0) { return text; } return text.substr(indexOfLinebreak + 1); } function removeUseStrict (text) { var lines = text.split('\n'); var filteredLines = lines.filter(function (line) { return line.indexOf('"use strict"') < 0; }); return filteredLines.join('\n'); } function removeJshintOptions (source) { if (startsWith(source, '/*jshint')) { source = removeFirstLine(source); } if (startsWith(source, '/*global')) { source = removeFirstLine(source); } return source; } return { concat: concat, removeJshintOptions: removeJshintOptions, removeUseStrict: removeUseStrict }; }());