Comparing version 0.2.0 to 0.2.1
'use strict'; | ||
var os = require('os'); | ||
var compact = require('lodash.compact'); | ||
var customReporter = require('./custom'); | ||
var defaults = require('lodash.defaults'); | ||
function getTransformedComments(todos, config) { | ||
var transformFn = config.transformComment; | ||
if (!todos.length) { | ||
//early return in case of no comments | ||
//FIXME: make the default header a configurable option | ||
return { | ||
TODO: [] | ||
}; | ||
} | ||
var output = todos.reduce(function (mem, comment) { | ||
var kind = comment.kind; | ||
mem[kind] = mem[kind] || []; | ||
// transformed comment as an array item | ||
var transformedComment = transformFn(comment.file, comment.line, comment.text, kind); | ||
// enforce array type | ||
if (!Array.isArray(transformedComment)) { | ||
transformedComment = [transformedComment]; | ||
} | ||
// append to kind array | ||
mem[kind] = mem[kind].concat(transformedComment); | ||
return mem; | ||
}, {}); | ||
return output; | ||
} | ||
function joinBlocksByHeaders(output, config) { | ||
var padding = config.padding; | ||
var newLine = config.newLine; | ||
var transformHeader = config.transformHeader; | ||
var header; | ||
var contents = ''; | ||
//prepend headers | ||
Object.keys(output).forEach(function (kind) { | ||
header = transformHeader(kind); | ||
// enforce array response | ||
if (!Array.isArray(header)) { | ||
header = [header]; | ||
} | ||
output[kind] = compact(header.concat(output[kind])); | ||
// add padding between kind blocks | ||
if (contents.length) { | ||
contents += new Array(padding + 1).join(newLine); | ||
} | ||
contents += output[kind].join(newLine); | ||
}); | ||
return contents; | ||
} | ||
function parseConfig(_config) { | ||
@@ -83,4 +35,4 @@ var config = defaults(_config || {}, { | ||
var config = parseConfig(_config); | ||
var output = getTransformedComments(todos, config); | ||
return joinBlocksByHeaders(output, config); | ||
var output = customReporter.getTransformedComments(todos, config); | ||
return customReporter.joinBlocksByHeaders(output, config); | ||
}; |
{ | ||
"name": "leasot", | ||
"version": "0.2.0", | ||
"version": "0.2.1", | ||
"description": "Parse and output TODOs and FIXMEs from comments in your files", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
22508
17
465