69 lines
2.1 KiB
Python
69 lines
2.1 KiB
Python
from vocabulary import (
|
|
get_meter,
|
|
random_word,
|
|
rhyming_pair,
|
|
)
|
|
from grammar import (
|
|
make_indefinite,
|
|
noun_phrase,
|
|
past_tense_transitive,
|
|
pluralize,
|
|
verb_phrase,
|
|
verb_phrase_transitive,
|
|
)
|
|
from grammatical_types import (
|
|
Adjective,
|
|
Adverb,
|
|
Noun,
|
|
Meter,
|
|
Poem,
|
|
Pronoun,
|
|
TransitiveVerb,
|
|
)
|
|
|
|
def love_poem():
|
|
"() -> Poem"
|
|
poem = Poem()
|
|
poem.append("roses are red")
|
|
poem.append("violets are blue")
|
|
poem.append(pluralize(random_word(Noun)) + " are " + random_word(Adjective))
|
|
poem.append("and so are you.")
|
|
return poem
|
|
|
|
def couplet():
|
|
"() -> Poem"
|
|
poem = Poem()
|
|
first_noun, second_noun = rhyming_pair(Noun, Noun, meter=Meter("1"))
|
|
first_adjective = random_word(Adjective, meter=Meter("100"))
|
|
first_np = make_indefinite(noun_phrase(first_adjective, first_noun))
|
|
second_adjective = random_word(Adjective, meter=Meter("10"))
|
|
second_np = make_indefinite(noun_phrase(second_adjective, second_noun))
|
|
poem.append("I used to have " + first_np)
|
|
poem.append("Until I swapped it for " + second_np + ".")
|
|
return poem
|
|
|
|
def limerick(name, subjective_pronoun, possessive_pronoun):
|
|
"""str, str, str -> Poem
|
|
For example, `limerick("Chris", "he", "his")`.
|
|
"""
|
|
noun0, noun1 = random_word(Noun, count=2, rhymes_with=name)
|
|
adjective = random_word(Adjective, meter=Meter("100"))
|
|
adverb = random_word(Adverb, meter=Meter("10"))
|
|
verb0, verb1 = rhyming_pair(TransitiveVerb, TransitiveVerb, meter=Meter("10"))
|
|
object_pronoun = Pronoun("it")
|
|
|
|
np0 = make_indefinite(noun_phrase(adjective, noun0))
|
|
np1 = make_indefinite(noun1)
|
|
verb0 = past_tense_transitive(verb0)
|
|
verb1 = past_tense_transitive(verb1)
|
|
vp0 = verb_phrase(adverb, verb_phrase_transitive(verb0, object_pronoun))
|
|
vp1 = verb_phrase_transitive(verb1, object_pronoun)
|
|
|
|
poem = Poem()
|
|
poem.append("there once was a person named " + name)
|
|
poem.append("who owned " + np0 + ".")
|
|
poem.append(subjective_pronoun + " " + vp0 + ",")
|
|
poem.append("and then " + subjective_pronoun + " " + vp1 + ",")
|
|
poem.append("until it turned into " + np1 + ".")
|
|
return poem
|