Skip to content

Commit

Permalink
checkwhitespace.d: Allow individual errors to be turned off.
Browse files Browse the repository at this point in the history
To allow running checkwhitespace on files not recognized by the program, e.g: 'checkwhitespace --allow-tabs Makefile'
  • Loading branch information
ibuclaw committed Feb 11, 2018
1 parent a36dafa commit c3349fd
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions checkwhitespace.d
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@ import std.path;

int main(string[] args)
{
import std.getopt;
bool allowdos, allowtabs, allowtrailing;
getopt(args,
"allow-windows-newlines", &allowdos,
"allow-tabs", &allowtabs,
"allow-trailing-whitespace", &allowtrailing);

bool error;
auto r = regex(r" +\n");
foreach(a; args[1..$])
Expand All @@ -23,18 +30,18 @@ int main(string[] args)
{
ptrdiff_t pos;
auto str = a.readText();
if ((pos = str.indexOf("\r\n")) >= 0)
if (!allowdos && (pos = str.indexOf("\r\n")) >= 0)
{
writefln("Error - file '%s' contains windows line endings at line %d", a, str[0..pos].count('\n') + 1);
error = true;
}
if (a.extension() != ".mak" && (pos = str.indexOf('\t')) >= 0)
if (!allowtabs && a.extension() != ".mak" && (pos = str.indexOf('\t')) >= 0)
{
writefln("Error - file '%s' contains tabs at line %d", a, str[0..pos].count('\n') + 1);
error = true;
}
auto m = str.matchFirst(r);
if (!m.empty)
if (!allowtrailing && !m.empty)
{
pos = m.front.ptr - str.ptr; // assume the match is a slice of the string
writefln("Error - file '%s' contains trailing whitespace at line %d", a, str[0..pos].count('\n') + 1);
Expand Down

0 comments on commit c3349fd

Please sign in to comment.