forked from AFPy/python-docs-fr
39 lines
945 B
Python
39 lines
945 B
Python
|
#!/usr/bin/env python
|
||
|
"""Measure line length in given files, run as:
|
||
|
|
||
|
python line-length.py *.po
|
||
|
|
||
|
It does not count zero-width caracters from the Mn Unicode category
|
||
|
(Nonspacing Mark).
|
||
|
|
||
|
It returns 0 on success, 1 on failure.
|
||
|
"""
|
||
|
|
||
|
from unicodedata import category
|
||
|
import fileinput
|
||
|
import sys
|
||
|
|
||
|
SOFT_LIMIT = 80 # used for splitables lines (with spaces in them)
|
||
|
HARD_LIMIT = 88 # used for non-splitables lines (without spaces in them)
|
||
|
|
||
|
|
||
|
def clean(line):
|
||
|
return "".join(char for char in line if category(char) != "Mn").rstrip("\n")
|
||
|
|
||
|
|
||
|
return_code = 0
|
||
|
|
||
|
for line in fileinput.input(encoding="utf-8"):
|
||
|
line = clean(line)
|
||
|
limit = SOFT_LIMIT if line.count(" ") > 1 else HARD_LIMIT
|
||
|
if len(line) > limit:
|
||
|
print(
|
||
|
f"{fileinput.filename()}:{fileinput.filelineno()} line too long "
|
||
|
f"({len(line)} > {limit} characters)",
|
||
|
file=sys.stderr,
|
||
|
)
|
||
|
return_code = 1
|
||
|
|
||
|
|
||
|
sys.exit(return_code)
|