Tools to normalize end-of-line (EOL) & beginning-of-line (BOL) whitespace in text files.
Install the tools with:
npm install whitespace-tools
This will install the spacer
and ender
tools. Or run the latest version directly from npmjs.org with:
npx -p whitespace-tools spacer ...
npx -p whitespace-tools ender ...
The ender
tool will normalize line endings. Run ender --help
for a list of options.
Run with a file name or pipe a file into the tool to get information on current line endings:
ender src/mySourceFile.js
cat someTextFile.txt | ender
To convert a file, supply --new-eol
as one of cr
, lf
, crlf
or auto
. If no -output-file
option is given, the file will go to STDOUT.
The spacer
tool will normalize line beginnings, up to the first non-whitespace character. Run spacer --help
for options.
Run with a file name or pipe a file into the tool to get information on current line beginnings:
spacer src/mySourcFile.js
cat someTextFile.txt | spacer
You can supply the --new-bol
argument with either spaces
, tabs
or auto
. If the file has existing tabs, supply the --tab-size
argument indicating how many spaces a tab represents. If tabs
is supplied as --new-bol
, supply the --round
flag if you wish extra spaces to be rounded down to a whole tab. Without this flag, the outputted file will still be reported as having mixed
BOL's if there are any odd spaces in the BOL's.
I've implemented this project in C#, Ruby, Python and now Javascript as a way to learn new programming languages, and also because they are really useful tools! A search across projects in GitHub will reveal just how many files have mixtures of tabs & spaces at line BOL's. Line ending problems are a little rarer these days, but they do still occur from time-to-time.
The project is written in ES6 Javascript and cross compiled using Babel. It currently targets Node 8. PR's welcome for any enhancements.