123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- """
- Utility functions for generating "lorem ipsum" Latin text.
- """
- import random
- COMMON_P = (
- "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod "
- "tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim "
- "veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea "
- "commodo consequat. Duis aute irure dolor in reprehenderit in voluptate "
- "velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint "
- "occaecat cupidatat non proident, sunt in culpa qui officia deserunt "
- "mollit anim id est laborum."
- )
- WORDS = (
- "exercitationem",
- "perferendis",
- "perspiciatis",
- "laborum",
- "eveniet",
- "sunt",
- "iure",
- "nam",
- "nobis",
- "eum",
- "cum",
- "officiis",
- "excepturi",
- "odio",
- "consectetur",
- "quasi",
- "aut",
- "quisquam",
- "vel",
- "eligendi",
- "itaque",
- "non",
- "odit",
- "tempore",
- "quaerat",
- "dignissimos",
- "facilis",
- "neque",
- "nihil",
- "expedita",
- "vitae",
- "vero",
- "ipsum",
- "nisi",
- "animi",
- "cumque",
- "pariatur",
- "velit",
- "modi",
- "natus",
- "iusto",
- "eaque",
- "sequi",
- "illo",
- "sed",
- "ex",
- "et",
- "voluptatibus",
- "tempora",
- "veritatis",
- "ratione",
- "assumenda",
- "incidunt",
- "nostrum",
- "placeat",
- "aliquid",
- "fuga",
- "provident",
- "praesentium",
- "rem",
- "necessitatibus",
- "suscipit",
- "adipisci",
- "quidem",
- "possimus",
- "voluptas",
- "debitis",
- "sint",
- "accusantium",
- "unde",
- "sapiente",
- "voluptate",
- "qui",
- "aspernatur",
- "laudantium",
- "soluta",
- "amet",
- "quo",
- "aliquam",
- "saepe",
- "culpa",
- "libero",
- "ipsa",
- "dicta",
- "reiciendis",
- "nesciunt",
- "doloribus",
- "autem",
- "impedit",
- "minima",
- "maiores",
- "repudiandae",
- "ipsam",
- "obcaecati",
- "ullam",
- "enim",
- "totam",
- "delectus",
- "ducimus",
- "quis",
- "voluptates",
- "dolores",
- "molestiae",
- "harum",
- "dolorem",
- "quia",
- "voluptatem",
- "molestias",
- "magni",
- "distinctio",
- "omnis",
- "illum",
- "dolorum",
- "voluptatum",
- "ea",
- "quas",
- "quam",
- "corporis",
- "quae",
- "blanditiis",
- "atque",
- "deserunt",
- "laboriosam",
- "earum",
- "consequuntur",
- "hic",
- "cupiditate",
- "quibusdam",
- "accusamus",
- "ut",
- "rerum",
- "error",
- "minus",
- "eius",
- "ab",
- "ad",
- "nemo",
- "fugit",
- "officia",
- "at",
- "in",
- "id",
- "quos",
- "reprehenderit",
- "numquam",
- "iste",
- "fugiat",
- "sit",
- "inventore",
- "beatae",
- "repellendus",
- "magnam",
- "recusandae",
- "quod",
- "explicabo",
- "doloremque",
- "aperiam",
- "consequatur",
- "asperiores",
- "commodi",
- "optio",
- "dolor",
- "labore",
- "temporibus",
- "repellat",
- "veniam",
- "architecto",
- "est",
- "esse",
- "mollitia",
- "nulla",
- "a",
- "similique",
- "eos",
- "alias",
- "dolore",
- "tenetur",
- "deleniti",
- "porro",
- "facere",
- "maxime",
- "corrupti",
- )
- COMMON_WORDS = (
- "lorem",
- "ipsum",
- "dolor",
- "sit",
- "amet",
- "consectetur",
- "adipisicing",
- "elit",
- "sed",
- "do",
- "eiusmod",
- "tempor",
- "incididunt",
- "ut",
- "labore",
- "et",
- "dolore",
- "magna",
- "aliqua",
- )
- def sentence():
- """
- Return a randomly generated sentence of lorem ipsum text.
- The first word is capitalized, and the sentence ends in either a period or
- question mark. Commas are added at random.
- """
- # Determine the number of comma-separated sections and number of words in
- # each section for this sentence.
- sections = [
- " ".join(random.sample(WORDS, random.randint(3, 12)))
- for i in range(random.randint(1, 5))
- ]
- s = ", ".join(sections)
- # Convert to sentence case and add end punctuation.
- return "%s%s%s" % (s[0].upper(), s[1:], random.choice("?."))
- def paragraph():
- """
- Return a randomly generated paragraph of lorem ipsum text.
- The paragraph consists of between 1 and 4 sentences, inclusive.
- """
- return " ".join(sentence() for i in range(random.randint(1, 4)))
- def paragraphs(count, common=True):
- """
- Return a list of paragraphs as returned by paragraph().
- If `common` is True, then the first paragraph will be the standard
- 'lorem ipsum' paragraph. Otherwise, the first paragraph will be random
- Latin text. Either way, subsequent paragraphs will be random Latin text.
- """
- paras = []
- for i in range(count):
- if common and i == 0:
- paras.append(COMMON_P)
- else:
- paras.append(paragraph())
- return paras
- def words(count, common=True):
- """
- Return a string of `count` lorem ipsum words separated by a single space.
- If `common` is True, then the first 19 words will be the standard
- 'lorem ipsum' words. Otherwise, all words will be selected randomly.
- """
- word_list = list(COMMON_WORDS) if common else []
- c = len(word_list)
- if count > c:
- count -= c
- while count > 0:
- c = min(count, len(WORDS))
- count -= c
- word_list += random.sample(WORDS, c)
- else:
- word_list = word_list[:count]
- return " ".join(word_list)
|