Permalink
Browse files

Merge pull request #1 from vibhav/master

Allow users to specify maximum line length on the command-line.
  • Loading branch information...
2 parents a1c7939 + 1bc7dde commit b3e5fa5dd3a3cb6f2b14c217889fb159a4e51d39 @robbywalker robbywalker committed Jul 1, 2013
Showing with 14 additions and 10 deletions.
  1. +12 −6 src/ocstyle/main.py
  2. +2 −4 src/ocstyle/rules.py
View
@@ -15,6 +15,7 @@
"""Basic Objective C style checker."""
+import argparse
import os.path
import sys
@@ -23,16 +24,16 @@
from ocstyle import rules
-def check(path):
+def check(path, maxLineLength):
"""Style checks the given path."""
with open(path) as f:
- return checkFile(path, f)
+ return checkFile(path, f, maxLineLength)
-def checkFile(path, f):
+def checkFile(path, f, maxLineLength):
"""Style checks the given file object."""
content = f.read()
- lineErrors = rules.setupLines(content)
+ lineErrors = rules.setupLines(content, maxLineLength)
result = parcon.Exact(rules.entireFile).parse_string(content)
if path.endswith(('.m', '.mm')):
result = [err for err in result if not isinstance(err, rules.Error) or not err.kind.endswith('InHeader')]
@@ -43,10 +44,15 @@ def checkFile(path, f):
def main():
"""Main body of the script."""
- for filename in sys.argv[1:]:
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--maxLineLength", action="store", type=int, default=120, help="Maximum line length")
+ args, filenames = parser.parse_known_args()
+
+ for filename in filenames:
if not os.path.isdir(filename):
print filename
- for part in check(filename):
+ for part in check(filename, args.maxLineLength):
if isinstance(part, rules.Error):
print 'ERROR: %s' % part
else:
@@ -30,14 +30,12 @@
TAB_SIZE = 4
-MAX_LINE_LENGTH = 120
-
LINES = []
# PyLint has a very hard time with our decorator pattern. # pylint: disable=E1120
-def setupLines(content):
+def setupLines(content, maxLineLength):
"""Setup line position data."""
LINES[:] = []
pos = -1
@@ -51,7 +49,7 @@ def setupLines(content):
errors = []
for lineNo in range(1, len(LINES)):
lineLength = LINES[lineNo] - LINES[lineNo - 1] - 1 # Remove the \n character.
- if lineLength > MAX_LINE_LENGTH:
+ if lineLength > maxLineLength:
errors.append(Error(
'LineTooLong', 'Line too long: %d chars over the %d limit' % (lineLength, MAX_LINE_LENGTH),
LINES[lineNo], LINES))

0 comments on commit b3e5fa5

Please sign in to comment.