This utility removes comments from a file. It figures out the comment syntax from the file extension, and outputs a file that is functionally identical but stripped of any comments.
It's smart enough to keep "comments" inside quotes, e.g. "This will still #be in the output."
If your source file is malformed, the output is undefined; e.g. an unclosed string terminator.
#!
on the first line is preserved.
This is an alpha version of the software, use with caution.
Install with go install github.com/coljac/decomment/cmd/[email protected]
, or download a binary from the Releases page.
When passed one more files as arguments, dec
will figure out the syntax from the file extension (see below). This can be overridden with the -f
flag, passing a format matching a usual file extension (e.g. -f java
for Java). If no legal format is specified dec
will check for a C-style comment at the first line, otherwise will default to #
comments.
To specify a file format manually:
dec -c "/*,*/" -c "//" myfile
- C-style comments. When the second token is ommitted, a newline is assumed. The same syntax with -q
applies to quote delimiters; no regex, and two tokens are required.
To decomment a file and write to stdout:
dec source.c
To edit in-place
dec -i *.java
From stdin:
cat myfile.c | dec -f c > out.c
Some weird file format:
dec -c "~~,~~" -q "','" myfile.foo
- Mixed HTML and Javascript will not remove javascript comments.
- If the final line of the source file has no newline, one will be inserted.
- Trailing whitespace will be removed at the end of lines.
- An expanded list of source file types
- More robust testing
dec
knows about commments and strings in:
syntax | File extension |
---|---|
C/C++ | .c, .h, .cpp, .hpp |
Java | .java |
Rust | .rs |
Python | .py |
(z|ba)?sh | .sh |
Go | .go |
Kotlin | .kt |
JavaScript | .js |
TypeScript | .ts |
Perl | .pl |
Ruby | .rb |
SQL | .sql |
PHP | .php |
HTML | .html |
CSS | .css |