-
Notifications
You must be signed in to change notification settings - Fork 30
/
kwsCheckTabs.cxx
50 lines (38 loc) · 1.51 KB
/
kwsCheckTabs.cxx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*=========================================================================
Program: KWStyle - Kitware Style Checker
Module: kwsCheckTabs.cxx
Copyright (c) Kitware, Inc. All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#include "kwsParser.h"
#include "kwsPushBoostWarnings.h"
#include <boost/xpressive/xpressive.hpp>
#include "kwsPopBoostWarnings.h"
using namespace boost::xpressive;
namespace kws {
/** Check if the file contains tabs */
bool Parser::CheckTabs()
{
m_TestsDone[TABS] = true;
m_TestsDescription[TABS] = "The file should not have any tabs";
bool hasError = false;
sregex lineWithTabRegex = sregex::compile(R"(^[^\r\n]*?(\t)[^\r\n]*$)");
sregex_iterator currentTabIterator(m_Buffer.begin(), m_Buffer.end(), lineWithTabRegex);
sregex_iterator end;
for (; currentTabIterator != end; ++currentTabIterator)
{
Error error;
smatch const ¤tMatch = *currentTabIterator;
error.line = this->GetLineNumber(currentMatch.position(1), false);
error.line2 = error.line;
error.number = TABS;
error.description = "Tabs identified";
m_ErrorList.push_back(error);
hasError = true;
}
return !hasError;
}
} // end namespace kws