Browse Source

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.
Nick Mathewson 4 years ago
parent
commit
16890839d3
1 changed files with 22 additions and 3 deletions
  1. 22 3
      scripts/maint/annotate_ifdef_directives

+ 22 - 3
scripts/maint/annotate_ifdef_directives

@@ -26,14 +26,33 @@ import re
 # Any block with fewer than this many lines does not need annotations.
 LINE_OBVIOUSNESS_LIMIT = 4
 
+# Maximum line width.
+LINE_WIDTH=80
+
 class Problem(Exception):
     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):
     """