add over.text.count_leading

add indent support to over.text.Output
This commit is contained in:
Martinez 2016-05-15 00:28:13 +02:00
parent 793d97f854
commit 5b4958e1e2
2 changed files with 26 additions and 2 deletions

View file

@ -236,6 +236,22 @@ def strlen(string):
# --------------------------------------------------
def count_leading(text, char):
"""
Returns the count of leading `char`s within `text`.
"""
if not text:
return 0
for i, c in enumerate(text):
if c != char:
return i
return i + 1
# --------------------------------------------------
class Output:
class tag:
class short:
@ -270,13 +286,15 @@ class Output:
<T> - tag
<n> - name
<t> - supplied text
<i> - indentation start marker
"""
def __init__(self, name, format="[%Y-%m-%d %H:%M:%S] <T> -- <n>, <t>", colors=True, end=".\n", stream=sys.stderr):
def __init__(self, name, format="[%Y-%m-%d %H:%M:%S] <T> -- <n>, <i><t>", colors=True, end=".\n", indent=True, stream=sys.stderr):
self.name = name
self.format = format
self.colors = colors
self.end = end
self.indent = indent
self.stream = stream
def __call__(self, text, tag=None, format=None, colors=None, end=None):
@ -288,6 +306,12 @@ class Output:
output = datetime.datetime.now().strftime(format)
output = output.replace("<T>", tag)
output = output.replace("<n>", self.name)
if self.indent:
indent_width = render(output, colors=False).index("<i>")
text = paragraph(text, indent=indent_width)[indent_width:]
output = output.replace("<i>", "")
output = output.replace("<t>", text)
output += end

View file

@ -4,5 +4,5 @@
major = 0 # VERSION_MAJOR_IDENTIFIER
minor = 0 # VERSION_MINOR_IDENTIFIER
# VERSION_LAST_MM 0.0
patch = 1 # VERSION_PATCH_IDENTIFIER
patch = 2 # VERSION_PATCH_IDENTIFIER
str = ".".join(str(v) for v in (major, minor, patch))