from maze_builder.sewer import MadLibs, Choice
from maze_builder.lost_text.text_decorations import (
    fix_sentence, pluralize, pluralize_verb, past_participle)
from maze_builder.lost_text.typography import fix_typography

quote_sentence = MadLibs(
    '{FULL_QUOTE FIXED CURLED}',
    FIXED=fix_sentence,
    CURLED=fix_typography,
    PLURALIZED=pluralize,
    PLURALIZED_VERB=pluralize_verb,
    PASTP=past_participle,
    FULL_QUOTE={
        '"{QUOTE}."': 100,
        '{QUOTE}.': 40,
        '"{QUOTE}," according to the {SCRIPTURES}.': 20,
        'Some say, "{QUOTE}."': 20,
        'I’ve learned the truth of "{QUOTE}."': 10,
        '{MY_TEACHER} {ALWAYS_SAID}, "{QUOTE}."': 10,
        'Remember, "{QUOTE}!"': 20,
        'My {MOTHER} {ALWAYS_SAID}, "{QUOTE}."': 10,
        '{FULL_SILLY_QUOTE}': 60,
    },
    FULL_SILLY_QUOTE={
        '{AS_MY} {TEACHER} {ALWAYS_SAID}, "{SILLY_QUOTE}."': 10,
        '{AS_MY} {MOTHER} {ALWAYS_SAID}, "{SILLY_QUOTE}."': 10,
        'my {MOTHER}’s last words were, "{SILLY_QUOTE}."': 1,
    },
    AS_MY={
        'as my': 10,
        'my': 10,
    },
    SAID={
        'said': 20,
        'told me': 20,
        'told people': 1,
        'told anyone who’d listen': 1,
        'told everyone': 1,
        'whispered': 1,
        'repeated': 1,
        'entoned': 1,
        'recited': 5,
    },
    ALWAYS_SAID={
        '{SAID}': 5,
        'once {SAID}': 10,
        'always {SAID}': 10,
    },
    SILLY_QUOTE={
        'stop repeating me': 20,
        'stop quoting me': 30,
        'stop doing that': 10,
        'oops': 10,
        'don’t do that': 1,
        'you’re going to die in {THAT_MAZE} one day': 10,
        'mind your own business': 1,
        'your {MOTHER} died in {THAT_MAZE}': 5,
        'don’t go in {THAT_MAZE}': 30,
        'stay out of {THAT_MAZE}': 10,
        'stay away from {THAT_MAZE}': 10,
        'pay attention to your orienteering studies': 5,
        'everyone who goes in {THAT_MAZE} dies': 10,
    },
    THAT_MAZE={
        'that maze': 10,
        'the maze': 10,
        'the labyrinth': 5,
    },
    SCRIPTURES={
        'scriptures': 100,
        'prophesy': 50,
    },
    QUOTE={
        '{TOLKIEN}': 10,
        'if you don’t get {LOST}, {THEN} you may never be {FOUND}': 4,
        '{WALKER}': 5,
        '{ARNOLD}': 5,
        'in order to {FINDS PLURALIZED_VERB} yourself, you need to get {LOST}': 3,
        'if you meet {THE_TEACHER} {ON_THE_ROAD}, {KILL} {HIM}': 4,
        'a good {MAN} is hard to find': 2,
        '{LINCOLN}': 2,
        'be not afraid of going slowly, be afraid only of standing still': 2,
        'learn from yesterday, live for today, hope for tomorrow': 0.5,
        'do not confine your children to your own learning, for they were born in another time': 0.2,
        'in {LOVE}ing others we {LOVE+} ourselves': 0.5,
        '{HAPPINESS} will never come to those who fail to appreciate what they already have': 0.2,
        'there is {ONLY} one {HAPPINESS} in {LIFE} -- to {LOVE} and to be {LOVE+ PASTP}': 5,
        '{LIFE} can {ONLY} be {UNDERSTOOD} backwards, but it must be lived forward': 1,
        'in three words I can sum up everything I’ve learned about {LIFE} -- {IT_GOES_ON}': 1,
        '{LIFE} is not a problem to be solved, but a reality to be experienced': 0.2,
        'one day {YOUR_LIFE} will flash before your eyes -- make sure its worth watching': 0.2,
        '{THINGS} fall apart so {THINGS+} can fall together': 3,
        'a gem cannot be polished without friction, nor a {MAN} perfected without trials': 0.2,
        'follow love and it will flee, flee love and it will follow': 0.2,
    },
    ON_THE_ROAD={
        'on the {ROAD}': 7,
        'in {THAT_MAZE}': 2,
        'in {LIFE}': 1,
    },
    IT_GOES_ON={
        'it goes on': 10,
        'you’ll get lost': 10,
        'don’t quit early': 5,
    },
    ONLY={
        'only': 10,
        'just': 5,
    },
    HAPPINESS={
        'happiness': 10,
        'joy': 10,
        'purpose': 10,
        'lesson': 5,
    },
    UNDERSTOOD={
        'understood': 10,
        'grokked': 1,
    },
    TEACH={
        'teach': 10,
        'tutor': 5,
        'mentor': 5,
    },
    THINGS={
        'things': 20,
        'plans': 10,
        'routes': 1,
        'lives': 2,
        'people': 5,
    },
    YOUR_LIFE={
        'your life': 10,
        'your journey': 5,
        'your past': 5,
    },
    LIFE={
        'life': 20,
        'a maze': 10,
        'a journey': 5,
        'your journey': 5,
        '{THAT_MAZE}': 20,
    },
    LOVE={
        'love': 20,
        'eat': 20,
        'hunt': 20,
        'confuse': 10,
        'chase': 10,
        'feel': 10,
        'lose': 15,
        'see': 10,
        'ride': 1,
        'know': 5,
        'bear': 5,
        'bite': 1,
        'break': 5,
        'choose': 1,
        'lead': 1,
        'do': 1,
        'fuck': 1,
        'burn': 1,
        'please': 1,
        'teach': 1,
        'shake': 1,
        'steal': 2,
        'take': 5,
        'win': 10,
        'tutor': 1,
        'mentor': 1,
    },
    LINCOLN={
        'I’m {A_SLOW} {WALK}er but I never {WALK+} back': 10,
        'I’m {A_SLOW} runner but I never run back': 2,
    },
    A_SLOW={
        'a slow': 10,
        'a very slow': 10,
        'not a speedy': 2,
    },
    WALK={
        'walk': 10,
        'crawl': 5,
        'climb': 5,
    },
    ROAD={
        'road': 100,
        'way': 50,
        'route': 20,
        'path': 50,
    },
    KILL={
        'kill': 100,
        'murder': 10,
        'terminate': 10,
        'destroy': 10,
        'dispatch': 1,
        'execute': 1,
    },
    HIM={
        'him': 100,
        'her': 100,
        'hir': 50,
        'zir': 10,
        'them': 50,
    },
    THEN={
        'there’s a chance': 20,
        'then': 20,
        'it’s possible': 10,
        'perhaps': 10,
    },
    TOLKIEN={
        'not all who {WANDER} are {LOST}': 100,
    },
    WALKER={
        '{IN_SEARCH_OF} {MY_MOTHERS} {GARDEN}, I {DISCOVERED} my own': 100,
    },
    ARNOLD={
        'he who {FINDS} himself, {LOSES} his {MISERY}': 100,
        'she who {FINDS} herself, {LOSES} her {MISERY}': 100,
        'you who {FINDS PLURALIZED_VERB} yourself, {LOSES PLURALIZED_VERB} your {MISERY}': 50,
        'ze who {FINDS} hirself, {LOSES} hir {MISERY}': 50,
        'thou who {FINDS PLURALIZED_VERB} thyself, {LOSES PLURALIZED_VERB} thy {MISERY}': 20,
        'they who {FINDS PLURALIZED_VERB} theirself, {LOSES PLURALIZED_VERB} their {MISERY}': 50,
        'ze who {FINDS} zirself, {LOSES} zir {MISERY}': 10,
        'bun who {FINDS} bunself, {LOSES} buns {MISERY}': 5,
        'thon who {FINDS} thonself, {LOSES} thons {MISERY}': 1,
    },
    WANDER={
        'wander': 100,
        'amble': 50,
        'cruise': 5,
        'drift': 50,
        'float': 5,
        'hike': 25,
        'meander': 50,
        'ramble': 50,
        'roam': 50,
        'saunter': 25,
        'straggle': 50,
        'stray': 50,
        'stroll': 25,
        'traipse': 25,
        'trek': 25,
        'aberatte': 5,
        'circumambulate': 50,
        'diverge': 50,
        'gallivant': 50,
        'jaunt': 25,
        'range': 15,
        'rove': 50,
        'tramp': 25,
        'circumlocute': 25,
        'circumnutate': 50,
        'peregrinate': 10,
        'journey': 25,
        'travel': 20,
        'voyage': 20,
        'wend': 10,
        'hit the road': 10,
    },
    LOST={
        'lost': 100,
        'absent': 10,
        'adrift': 50,
        'disoriented': 50,
        'misplaced': 50,
        'vanished': 5,
        'mislaid': 25,
        'astray': 50,
        'wandering': 25,
        'irrecoverable': 50,
        'irretrievable': 50,
        'nowhere to be found': 10,
        'wayward': 50,
        'irredeemable': 50,
        'off-course': 25,
        'straying': 10,
        'AWOL': 10,
        'playing hooky': 5,
        'missing': 10,
        'erring': 50,
        'wrong': 20,
    },
    FOUND={
        'found': 100,
        'present': 10,
        'anchored': 10,
        'on course': 20,
        'on target': 10,
        'right': 10,
        'redeemed': 50,
        'recovered': 25,
        'retrieved': 25,
        'oriented': 10,
    },
    FIND={
        'find': 10,
        'locate': 1,
        'discover': 5,
    },
    IN_SEARCH_OF={
        'in search of': 100,
        'pursuing': 50,
        'seeking': 50,
        'searching for': 50,
        'looking for': 50,
        'in pursuit of': 50,
        'pursuing': 50,
        'hunting': 20,
        'questing for': 20,
        'on the hunt for': 20,
        'in exploration for': 10,
    },
    MY_TEACHER={
        'my {MOTHER}': 50,
        'my {TEACHER}': 100,
        '{THE_TEACHER}': 50,
    },
    MY_MOTHERS={
        'my {MOTHER}’s': 100,
        'my {TEACHER}’s': 50,
        '{THE_TEACHER}’s': 50,
    },
    THE_TEACHER={
        'the {TEACHER}': 50,
        'the Buddha': 15,
        'the Christ': 5,
    },
    MOTHER={
        'mother': 30,
        'father': 30,
        'parent': 10,
        'grandmother': 20,
        'grandfather': 20,
        'grandparent': 5,
        'ancestor': 10,
    },
    TEACHER={
        'teacher': 10,
        'preacher': 10,
        'professor': 10,
        'pastor': 10,
        'yogi': 10,
        'reverend': 10,
        'parson': 10,
    },
    GARDEN={
        'garden': 100,
        'courtyard': 50,
        'happy place': 10,
        'park': 10,
        'lawn': 5,
        'farm': 50,
        'dream home': 50,
        'memory palace': 10,
        'tao': 5,
        'way': 5,
        'path': 5,
    },
    DISCOVERED={
        'discovered': 100,
        'found': 50,
        'located': 50,
        'uncovered': 20,
        'unearthed': 20,
        'learned': 50,
        'realized': 35,
        'recognized': 35,
        'fathomed': 5,
        'saw': 1,
        'ascertained': 5,
        'found out': 10,
        'hit on': 10,
        'came up with': 35,
        'invented': 35,
        'originated': 35,
        'planted': 20,
        'devised': 20,
        'designed': 20,
        'contrived': 20,
    },
    FINDS={
        'finds': 100,
        'discovers': 50,
        'obtains': 20,
        'locates': 10,
        'unearths': 10,
        'acquires': 10,
        'gains': 10,
        'retrieves': 10,
        'recovers': 10,
        'regains': 10,
        'recovers': 10,
        'works out': 10,
        'invents': 10,
        'figures out': 10,
        'recognizes': 10,
    },
    LOSES={
        'loses': 100,
        'buries': 10,
        'misplaces': 50,
        'departs from': 20,
        'leaves': 50,
        'mislays': 50,
    },
    MISERY={
        'misery': 100,
        'suffering': 50,
        'unhappiness': 50,
        'distress': 50,
        'anguish': 50,
        'anxiety': 50,
        'angst': 50,
        'torment': 50,
        'pain': 50,
        'despair': 50,
        'depression': 50,
        'melancholy': 50,
        'woe': 50,
    },
    MAN={
        'man': 10,
        'woman': 10,
        'person': 5,
    },
)


if __name__ == '__main__':
    for _ in range(20):
        print(quote_sentence())
