Source code for advertools.ad_from_string
import string
[docs]def ad_from_string(s, slots=(30, 30, 80, 15, 15), sep=None, capitalize=False):
"""Convert string `s` to an ad by splitting it into groups of words.
Each group would have a length of at most the allowed length for that slot.
If the total length of `s` exceeds the total allowed length, all remaining
characters would be grouped in the last element of the returned list.
Parameters
----------
s : a string of characters, with no restrictions on length.
slots : an iterable of integers for the maximum lengths for each slot
sep : by which character to split `s`
capitalize : whether or not to capitalize each word after grouping. Setting
it as False would leave the input string as is.
Returns
-------
text ad : a list of strings
Examples
--------
>>> ad_from_string('this is a short ad')
... ['This Is A Short Ad', '', '', '', '', '']
>>> ad_from_string('this is a longer ad and would take two of the first slots')
... ['This Is A Longer Ad And Would', 'Take Two Of The First Slots', '', '', '', '']
"""
str_words = s.split(sep=sep)
text_ad = ['' for x in range(len(slots)+1)]
counter = 0
for i, slot in enumerate(slots):
while counter <= len(str_words) - 1:
if len(text_ad[i] + str_words[counter]) > slot:
break
text_ad[i] += ' ' + str_words[counter] if text_ad[i] else str_words[counter]
counter += 1
text_ad[-1] = sep.join(str_words[counter:]) if sep is not None else ' '.join(str_words[counter:])
return [string.capwords(x) if capitalize else x for x in text_ad]