leasot
Parse and output TODOs and FIXMEs from comments in your files
Easily extract, collect and report TODOs and FIXMEs in your code. This project uses regex in order
to extract your todos from comments.
TODO: add some info
- Spaces are optional
- Colon is optional
- Must be in a comment (line or block) in its' own line (
some code(); //TOOD: do something
is not supported) - Spaces are trimmed from comment text
- Supported types are
TODO
and FIXME
- case insensitive
Supported languages:
Filetype | Extension | Notes |
---|
Coffeescript | .coffee | using regex. Supports # comments. |
Handlebars | .hbs | using regex. Supports {{! }} and {{!-- --}} |
Jade | .jade | using regex. |
Javascript | .js | using regex. Supports // and /* */ comments |
Sass | .sass .scss | using regex. Supports // and /* */ comments. |
Stylus | .styl | using regex. Supports // and /* */ comments. |
Typescript | .ts | using regex. Supports // and /* */ comments. |
Javascript is the default parser.
PRs for additional filetypes is most welcomed!!
Usage
Command Line
Installation
$ npm install --global leasot
Examples
❯ leasot --help
Usage: leasot [options] [file]
Options:
-h, --help output usage information
-V, --version output the version number
-t, --filetype [filetype] Force filetype to parse. Useful for handling files in streams [.js]
-r, --reporter [reporter] Which reporter to use (table|json|xml|markdown|raw) [table]
Examples:
$ leasot index.js
$ leasot --reporter json index.js
$ cat index.js | leasot
$ cat index.coffee | leasot --filetype .coffee
Programmatic
Installation
$ npm install --save-dev leasot
Examples
var fs = require('fs');
var leasot = require('leasot');
var contents = fs.readFileSync('./contents.js', 'utf8');
var filetype = path.extname('./contents.js');
var file = 'contents.js';
var todos = leasot.parse(filetype, contents, file);
var output = leasot.reporter(todos, {
reporter: 'json',
spacing: 2
});
console.log(output);
Build Time
API
var leasot = require('leasot');
leasot
exposes the following API:
isExtSupported
TODO
parse
TODO
reporter
TODO
Built-in Reporters
Each reporter might contain config params that are useful only for that reporter:
Markdown
Returns a markdown version of the todos.
Options
newLine
How to separate lines in the output file. Defaults to your OS's default line separator.
Type: String
Default: Your system default line feed
padding
How many newLine
s should separate between comment type blocks.
Type: Number
Default: 2
Minimum: 0
Control the output of a header for each comment kind (i.e todo, fixme).
Type: Function
Default:
transformHeader: function (kind) {
return ['### ' + kind + 's',
'| Filename | line # | ' + kind,
'|:------|:------:|:------'
];
}
kind: will be be passed as the comment kind (todo/fixme).
Returns: String[]|String
You are expected to return either an Array of strings
or just a string
. If you return an array - each item will be separated by a newline in the output.
Control the output for each comment.
Type: Function
Default:
transformComment: function (file, line, text, kind) {
return ['| ' + file + ' | ' + line + ' | ' + text];
},
file: filename the comment was in.
line: line of comment.
text: comment text
kind: will be be passed as the comment kind (todo/fixme).
Returns: String[]|String
You are expected to return either an Array of strings
or just a string
. If you return an array - each item will be separated by a newline in the output.
Table
Returns a pretty formatted table of the todos.
Raw
Just returns the raw javascript todos
JSON
Return a JSON valid representation of the todos.
Options
spacing
Type: Number
Default: 2
XML
Return an unformatted XML valid representation of the todos.
Parsed using json2xml
Options
Whether to include xml header
Type: Boolean
Default: true
attributes_key
See https://github.com/estheban/node-json2xml#options--behaviour
Type: Boolean
Default: 'undefined'
License
MIT ©Gilad Peleg