annotate_ifdef_directives: obey an 80-column line-limit

If we would add a comment making a line longer than 80 columns,
instead truncate the variable portion of the comment until it just
fits into 80 columns, with an ellipsis.
This commit is contained in:
Nick Mathewson 2019-09-18 10:51:05 -04:00
parent f36e743e5d
commit 16890839d3

View File

@ -26,14 +26,33 @@ import re
# Any block with fewer than this many lines does not need annotations. # Any block with fewer than this many lines does not need annotations.
LINE_OBVIOUSNESS_LIMIT = 4 LINE_OBVIOUSNESS_LIMIT = 4
# Maximum line width.
LINE_WIDTH=80
class Problem(Exception): class Problem(Exception):
pass pass
def commented_line(fmt, argument): def commented_line(fmt, argument, maxwidth=LINE_WIDTH):
""" """
Return fmt%argument, for use as a commented line. Return fmt%argument, for use as a commented line. If the line would
be longer than maxwidth, truncate argument.
Requires that fmt%"..." will fit into maxwidth characters.
""" """
return fmt % argument result = fmt % argument
if len(result) <= maxwidth:
return result
else:
# figure out how much we need to truncate by to fit the argument,
# plus an ellipsis.
ellipsis = "..."
result = fmt % (argument + ellipsis)
overrun = len(result) - maxwidth
truncated_argument = argument[:-overrun] + ellipsis
result = fmt % truncated_argument
assert len(result) <= maxwidth
return result
def uncomment(s): def uncomment(s):
""" """