sync with Atlas

This commit is contained in:
Luciano Ramalho
2021-07-10 11:58:24 -03:00
parent a77e6d1e97
commit 1283115921
8 changed files with 108 additions and 70 deletions

View File

@@ -1,40 +1,48 @@
"""
>>> clip('banana ', 6)
'banana'
>>> clip('banana ', 7)
'banana'
>>> clip('banana ', 5)
>>> clip('banana split', 5)
'banana'
>>> clip('banana split', 6)
'banana'
>>> clip('banana split', 7)
'banana'
>>> clip('banana split', 10)
>>> clip('banana split', 8)
'banana'
>>> clip('banana split', 11)
'banana'
>>> clip('banana split', 12)
'banana split'
>>> clip('bananasplit', 5)
'bananasplit'
>>> clip('banana split', 8)
'banana'
>>> clip('banana-split', 3)
'banana-split'
Jess' tests:
>>> text = 'The quick brown fox jumps over the lazy dog.'
>>> clip14 = clip(text, max_len=14)
>>> clip14
'The quick'
>>> len(clip14)
9
>>> clip15 = clip(text, max_len=15)
>>> clip15
'The quick brown'
>>> len(clip15)
15
"""
# tag::CLIP[]
def clip(text, max_len=80):
"""Return text clipped at the last space before or after max_len"""
"""Return max_len characters clipped at space if possible"""
text = text.rstrip()
end = len(text)
if end <= max_len:
if len(text) <= max_len or ' ' not in text:
return text
space_before = text.rfind(' ', 0, max_len)
if space_before >= 0:
end = space_before
end = len(text)
space_at = text.rfind(' ', 0, max_len + 1)
if space_at >= 0:
end = space_at
else:
space_after = text.find(' ', max_len)
if space_after >= 0:
end = space_after
space_at = text.find(' ', max_len)
if space_at >= 0:
end = space_at
return text[:end].rstrip()
# end::CLIP[]

View File

@@ -4,6 +4,6 @@
>>> clip.__code__ # doctest: +ELLIPSIS
<code object clip at 0x...>
>>> clip.__code__.co_varnames
('text', 'max_len', 'end', 'space_before', 'space_after')
('text', 'max_len', 'end', 'space_at')
>>> clip.__code__.co_argcount
2