Initial commit
This commit is contained in:
68
poetry.py
Normal file
68
poetry.py
Normal file
@@ -0,0 +1,68 @@
|
||||
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
|
||||
Reference in New Issue
Block a user