39 lines
920 B
Python
39 lines
920 B
Python
"""
|
|
>>> clip('banana ', 6)
|
|
'banana'
|
|
>>> clip('banana ', 7)
|
|
'banana'
|
|
>>> clip('banana ', 5)
|
|
'banana'
|
|
>>> clip('banana split', 6)
|
|
'banana'
|
|
>>> clip('banana split', 7)
|
|
'banana'
|
|
>>> clip('banana split', 10)
|
|
'banana'
|
|
>>> clip('banana split', 11)
|
|
'banana'
|
|
>>> clip('banana split', 12)
|
|
'banana split'
|
|
"""
|
|
|
|
# BEGIN CLIP_ANNOT
|
|
|
|
def clip(text:str, max_len:'int > 0'=80) -> str: # <1>
|
|
"""Return text clipped at the last space before or after max_len
|
|
"""
|
|
end = None
|
|
if len(text) > max_len:
|
|
space_before = text.rfind(' ', 0, max_len)
|
|
if space_before >= 0:
|
|
end = space_before
|
|
else:
|
|
space_after = text.rfind(' ', max_len)
|
|
if space_after >= 0:
|
|
end = space_after
|
|
if end is None: # no spaces were found
|
|
end = len(text)
|
|
return text[:end].rstrip()
|
|
|
|
# END CLIP_ANNOT
|