consist solely of whitespace characters.
"""
if predicate is None:
- def predicate(line):
- return line.strip()
-
- def prefixed_lines():
- for line in text.splitlines(True):
- yield (prefix + line if predicate(line) else line)
- return ''.join(prefixed_lines())
+ # str.splitlines(True) doesn't produce empty string.
+ # ''.splitlines(True) => []
+ # 'foo\n'.splitlines(True) => ['foo\n']
+ # So we can use just `not s.isspace()` here.
+ predicate = lambda s: not s.isspace()
+
+ prefixed_lines = []
+ for line in text.splitlines(True):
+ if predicate(line):
+ prefixed_lines.append(prefix)
+ prefixed_lines.append(line)
+
+ return ''.join(prefixed_lines)
if __name__ == "__main__":