#!/usr/bin/env python3
"""Week 4 Generator - Vowel Teams: OA, OW, OU, EW

Phonics: OA makes long O, OW makes long O, OU makes ou sound, EW makes oo sound
Spelling: 12 words, all 6+ letters
Grammar: Verbs - present vs. past tense (-ed)
"""

import os, sys
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
from monday import generate_monday
from tuesday import generate_tuesday
from wednesday import generate_wednesday
from thursday import generate_thursday
from friday import generate_friday
from teacher_guide import generate_teacher_guide
from validate import validate_week

WEEK = os.path.expanduser("~/Home_School/2nd_Grade/English_Language_Arts/Week_04")

WORDS = [
    ("sailboat", "long o (oa)", "a boat moved by wind using sails"),
    ("toadstool", "long o (oa)", "a poisonous mushroom found in forests"),
    ("boatyard", "long o (oa)", "a place where boats are stored or built"),
    ("oatmeal", "long o (oa)", "a breakfast cereal made from oats"),
    ("snowball", "oh sound (ow)", "a round ball of packed snow"),
    ("rainbow", "oh sound (ow)", "a colorful arc in the sky after rain"),
    ("snowman", "oh sound (ow)", "a figure built from stacked snow"),
    ("outdoor", "ou sound (ou)", "outside, in the open air"),
    ("trousers", "ou sound (ou)", "a garment covering the legs"),
    ("fountain", "ou sound (ou)", "a structure that shoots water into the air"),
    ("mountain", "ou sound (ou)", "a very large natural hill"),
    ("newspaper", "ew sound (ew)", "a printed publication with news and stories"),
]
WORD_NAMES = [w[0] for w in WORDS]
PHONICS_LABEL = "Vowel_Teams_OA_OW_OU_EW"

LEARNING_TEXT = (
    "Vowel TEAMS are two letters that work together to make ONE sound. "
    "This week: <strong>OA</strong> makes long O (like <em>boat</em>), "
    "<strong>OW</strong> makes long O (like <em>snow</em>), "
    "<strong>OU</strong> makes an ou sound (like <em>out</em>), "
    "and <strong>EW</strong> makes an oo sound (like <em>new</em>)."
)

GRAMMAR_NOTE = (
    "Grammar: Adding <strong>-ed</strong> to a verb puts it in the <strong>past tense</strong>. "
    "Past tense means the action is finished. Example: I <em>jump</em> (now) → I <em>jumped</em> (done)."
)

GRAMMAR_DEEP = (
    "Verbs can change to show <strong>when</strong> an action happened.<br><br>"
    "<strong>Present tense</strong> = happening now: I <strong>run</strong> to school.<br>"
    "<strong>Past tense (-ed)</strong> = already finished: I <strong>ran</strong> to school yesterday.<br><br>"
    "Regular verbs add <strong>-ed</strong>: walk → walked, jump → jumped, play → played.<br>"
    "Irregular verbs change differently: run → ran, eat → ate."
)

VOWEL_EXAMPLES_MONDAY = [
    'Long <strong>o</strong> as in <em>sailboat</em> -- s-a-i-l-b-<span style="color:#FF7043;font-weight:bold;">oa</span>-t',
    'Long <strong>o</strong> as in <em>snowball</em> -- s-n-<span style="color:#FF7043;font-weight:bold;">ow</span>-b-a-l-l',
    'Ou sound as in <em>outdoor</em> -- <span style="color:#FF7043;font-weight:bold;">ou</span>-t-d-o-o-r',
]

VOWEL_EXAMPLES_TUE = [
    'Long <strong>o</strong> with oa &mdash; <em>sailboat</em>, <em>toadstool</em>',
    'Long <strong>o</strong> with ow &mdash; <em>snowball</em>, <em>rainbow</em>',
    'Ou sound with ou &mdash; <em>outdoor</em>, <em>trousers</em>, <em>fountain</em>',
    'Oo sound with ew &mdash; <em>newspaper</em>',
]

SORT_LABELS = ["Long O (oa)", "Long O (ow)", "Ou Sound (ou)", "Oo Sound (ew)"]
SORT_TITLE = "Vowel Team Sort"

LEARNING_SKILLS_WED = [
    "<strong>Reading</strong> &mdash; understand vocabulary in context",
    "<strong>Synonyms &amp; Antonyms</strong> &mdash; words with similar and opposite meanings",
    "<strong>Word Webs</strong> &mdash; connecting related vocabulary",
]

REMINDER_TEXT = (
    "Vowel Team Rules:<br><br>"
    "1. <strong>OA</strong> makes long O &mdash; <em>sailboat</em>, <em>boatyard</em><br>"
    "2. <strong>OW</strong> makes long O &mdash; <em>snowball</em>, <em>rainbow</em><br>"
    "3. <strong>OU</strong> makes ou sound &mdash; <em>outdoor</em>, <em>trousers</em><br>"
    "4. <strong>EW</strong> makes oo sound &mdash; <em>newspaper</em><br><br>"
    "The two letters work TOGETHER to make one sound!"
)

# -- MONDAY --
MONDAY_STORY = (
    'The <strong>boatyard</strong> was busy all morning as sailors prepared for the big race. '
    'I helped Dad polish our <strong>sailboat</strong> and check the ropes. '
    'For breakfast we ate <strong>oatmeal</strong> at the dockside cafe while reading the <strong>newspaper</strong> weather report. '
    'I pulled on my canvas <strong>trousers</strong> and watched the boats line up at the <strong>outdoor</strong> harbor. '
    'When the flag dropped, twelve boats raced toward the <strong>mountain</strong> buoy in the distance. '
    'Our boat caught the wind and sped ahead! After we won, we celebrated by the town <strong>fountain</strong> '
    'where kids had built a <strong>snowman</strong> out of white sand and seashells. '
    'A vendor sold us a <strong>snowball</strong> of shaved ice and I spotted a tiny <strong>toadstool</strong> '
    'growing in the garden behind the fountain. A <strong>rainbow</strong> appeared over the water '
    'as the sun came out. What a perfect sailing day!'
)

MONDAY_GRAMMAR_PRACTICE = [
    "the child runs to the fountain",
    "we sail the sailboat on the lake",
    "she reads the newspaper every morning",
]

MONDAY_FILL_DATA = [
   ('A bright ____ appeared in the sky after the rain.', 'rainbow'),
    ('We built a tall ____ in the snow yesterday.', 'snowman'),
    ('The toy ____ sailed across the pond today.', 'sailboat'),
    ('My dad reads the ____ every morning.', 'newspaper'),
]

MONDAY_OPPOSITE_WORDS = ['outdoor', 'mountain']
MONDAY_SENTENCE_WORDS = WORD_NAMES[:4]

# -- TUESDAY --
TUESDAY_LEARNING = (
    "Today we practice Vowel Team patterns. Read each word slowly "
    "and listen for the sound the vowel team creates."
)

TUESDAY_READING = (
    'Our family cabin sat high on the <strong>mountain</strong> where the pine trees touched the clouds. '
    'I put on my warm <strong>trousers</strong> and stepped into the <strong>outdoor</strong> snow. '
    'My brother and I rolled a giant <strong>snowball</strong> for hours until we finished our <strong>snowman</strong> '
    'with a broomstick arm and a scarf. Back inside, Mom served hot <strong>oatmeal</strong> '
    'while Dad read the <strong>newspaper</strong> by the fire. He told us about a <strong>sailboat</strong> '
    'race happening down in the valley <strong>boatyard</strong>. We watched ice form on the '
    '<strong>fountain</strong> in the yard and found a red <strong>toadstool</strong> peeking from under a log. '
    'When the clouds broke, a <strong>rainbow</strong> stretched from our cabin to the valley below. '
    'I wished I could live in the mountains forever!'
)

TUESDAY_COMP_QUESTIONS = [
    "What did they build near the fountain?",
    "What appeared over the mountain after the storm?",
    "Where did they see a sailboat?",
]

TUESDAY_REMEMBER_1 = (
    "Remember This!",
    "Vowel Teams make ONE sound:<br>"
    "- <strong>OA</strong> = long O &rarr; <em>sailboat</em>, <em>toadstool</em><br>"
    "- <strong>OW</strong> = long O &rarr; <em>snowball</em>, <em>rainbow</em><br>"
    "- <strong>OU</strong> = ou sound &rarr; <em>outdoor</em>, <em>trousers</em><br>"
    "- <strong>EW</strong> = oo sound &rarr; <em>newspaper</em><br><br>"
    "<strong>Try This:</strong> What vowel team is in <em>snowman</em>? ___"
)

TUESDAY_REMEMBER_2 = (
    "Remember This!",
    "To find vowel teams, look for two vowels sitting together:<br><br>"
    "<strong>sailboat</strong> &rarr; s-a-i-l-<strong>oa</strong>-t &rarr; long <strong>o</strong><br>"
    "<strong>snowball</strong> &rarr; s-n-<strong>ow</strong>-b-a-l-l &rarr; long <strong>o</strong><br><br>"
    "<strong>Try This:</strong> What vowel team is in <em>mountain</em>? ___"
)

TUESDAY_SWAP_DATA = [
    ("We built a snowman near the fountain.", ("snowman", "snowball"), ("fountain", "rainbow")),
    ("The sailboat sailed past the boatyard.", ("sailboat", "boatyard"), ("boatyard", "mountain")),
    ("The oatmeal was warm and delicious.", ("oatmeal", "toadstool"), ("warm", "outdoor")),
]

TUESDAY_BUILDER_PROMPTS = [
    ("Write a sentence about a rainbow.", "rainbow"),
    ("Write a sentence about a snowball.", "snowball"),
    ("Write a sentence about a sailboat.", "sailboat"),
]

# -- WEDNESDAY --
WEDNESDAY_LEARNING = (
    "Today we use our Vowel Team words in reading, writing, and thinking. "
    "Each activity helps you understand how these words work in different contexts."
)

WEDNESDAY_READING = (
    'The <strong>outdoor</strong> nature trail wound through an old <strong>mountain</strong> forest. '
    'I wore my hiking <strong>trousers</strong> and followed the map folded inside the <strong>newspaper</strong>. '
    'We stopped for <strong>oatmeal</strong> at a wooden picnic table near a crystal <strong>fountain</strong> that bubbled from the rocks. '
    'A giant <strong>toadstool</strong> with white spots grew beside the path like something from a fairy tale. '
    'Further up, I found white flowers that looked like tiny <strong>snowball</strong>s and a rock formation shaped like a <strong>snowman</strong>. '
    'At the summit, we could see a <strong>sailboat</strong> on the distant lake and the <strong>boatyard</strong> where fishermen worked. '
    'After a spring rain, a <strong>rainbow</strong> appeared over the whole forest. '
    'I collected pinecones and acorns and promised to return every weekend!'
)

WEDNESDAY_VOCAB_Q = (
    "In the sentence 'We visited the boatyard and saw many boats,' what does <strong>boatyard</strong> mean?<br><br>"
    "A) A store that sells boat tickets<br>"
    "B) A place where boats are stored or built<br>"
    "C) A restaurant shaped like a boat<br>"
    "D) A school for learning to sail"
)

WEDNESDAY_SYN_ANT = ["outdoor", "mountain", "rainbow", "sailboat", "snowman", "fountain"]

WEDNESDAY_SORT_DATA = [
    "The sailboat glided past the fountain",
    "A rainbow appeared over the mountain after the rain",
]

WEDNESDAY_CORRECT = [
    "the child throws a snowball outside.",
    "we saw a rainbow after the rain.",
    "she reads the newspaper every morning.",
]

WEDNESDAY_FILL = [
    ("A bright ____ appeared in the sky.", "rainbow"),
    ("We built a tall ____ in the snow.", "snowman"),
    ("The toy ____ sailed on the pond.", "sailboat"),
]

WEDNESDAY_CONTEXT = (
    'Read this sentence: "A rainbow appeared over the mountain after the rain."<br><br>'
    "What does <strong>rainbow</strong> mean?<br>"
    "A) A large cloud in the sky<br>"
    "B) A colorful arc of light after rain<br>"
    "C) A tall mountain covered in snow<br>"
    "D) A type of outdoor umbrella"
)

WEDNESDAY_DICTATION = ["sailboat", "snowball", "rainbow", "outdoor", "trousers", "mountain"]

# -- THURSDAY --
THURSDAY_LEARNING = (
    "Today we use our Vowel Team words in stories and writing. "
    "Use each word correctly in your sentences and stories."
)

THURSDAY_STORY = (
    'The <strong>outdoor</strong> water park was packed with excited kids. '
    'I changed into my water <strong>trousers</strong> and ran to the main <strong>fountain</strong> splash pad. '
    'Water from the slides created a <strong>rainbow</strong> in the sunshine. '
    'My friend threw a <strong>snowball</strong> of ice water at me and I built a <strong>snowman</strong> out of wet sand nearby. '
    'We raced down the <strong>mountain</strong>-shaped bodyboarding slide and splashed into a pool shaped like a <strong>sailboat</strong>. '
    'Lunch was <strong>oatmeal</strong> bowls at the snack stand while we read the <strong>newspaper</strong> comic page. '
    'After the park closed, we walked past the <strong>boatyard</strong> on the way home '
    'and found a <strong>toadstool</strong> growing in someone\'s garden. The best day ever!'
)

THURSDAY_COMP_QUESTIONS = [
    "Where did the child take the sailboat?",
    "What appeared over the mountain after the rain?",
    "What did the friend read under the tree?",
]

THURSDAY_SORT_DATA = [
    "The sailboat glided on the outdoor pond",
    "A rainbow appeared over the mountain",
]

THURSDAY_DETECTIVE = ["sailbaot", "toadsol", "boatyrd", "oatmel", "snowbal", "rainbw", "snowmn", "outdor"]

THURSDAY_SWAP_DATA = [
    ("We built a snowman near the fountain.", ("snowman", "snowball"), ("fountain", "rainbow")),
    ("The sailboat sailed past the boatyard.", ("sailboat", "boatyard"), ("boatyard", "mountain")),
]

THURSDAY_PARA_PROMPTS = [
    "Write a paragraph about a snowy day.",
    "Write a paragraph about a day at the boatyard.",
]

# -- FRIDAY --
FRIDAY_REVIEW_STORY = (
    'The town parade marched past the <strong>fountain</strong> in the <strong>outdoor</strong> square. '
    'I wore my best <strong>trousers</strong> and ate <strong>oatmeal</strong> cookies from a bakery float. '
    'A <strong>rainbow</strong> banner stretched across Main Street and a giant <strong>snowman</strong> float waved to the crowd. '
    'Kids on the <strong>mountain</strong> club float threw foam <strong>snowball</strong>s to everyone. '
    'The <strong>boatyard</strong> float carried a real <strong>sailboat</strong> mast with flags. '
    'A <strong>toadstool</strong> garden float won first prize and the <strong>newspaper</strong> reporter interviewed the winners. '
    'After the parade, we watched the <strong>fountain</strong> light up at sunset. '
    'What a wonderful way to end the week!'
)

FRIDAY_STORY_QUESTIONS = [
    "What glided past the fountain?",
    "What appeared over the mountain?",
    "Where did Dad read the newspaper?",
]

FRIDAY_OPPOSITE_WORDS = ["outdoor", "mountain", "snowball"]
FRIDAY_BUILDER_WORDS = ["sailboat", "rainbow", "snowman", "fountain"]
FRIDAY_JOURNAL_WORDS = ["trousers", "boatyard", "newspaper", "toadstool"]

# -- TEACHER GUIDE DATA --
TEACHER_MONDAY_PHONICS_EXPLANATION = (
    "Vowel TEAMS are two letters that work together to make ONE sound. "
    "OA makes long O (boat), OW makes long O (snow), OU makes ou (out), EW makes oo (new)."
)
TEACHER_MONDAY_GRAMMAR_FOCUS = "Verbs — Present vs. Past Tense (-ed)"
TEACHER_MONDAY_GRAMMAR_EXPLANATION = (
    "Adding -ed puts a verb in the past tense — the action is finished. "
    "Present: I run. Past: I ran. Regular verbs add -ed: walk → walked."
)
TEACHER_MONDAY_SORT_LABELS = ["Long O (oa)", "Long O (ow)", "Ou Sound (ou)", "Oo Sound (ew)"]
TEACHER_MONDAY_SORT_ANSWERS = [
    ["sailboat", "toadstool", "boatyard", "oatmeal"],
    ["snowball", "rainbow", "snowman"],
    ["outdoor", "trousers", "fountain", "mountain"],
    ["newspaper"],
]
TEACHER_MONDAY_FILL_ANSWERS = ["rainbow", "snowman", "sailboat", "newspaper"]
TEACHER_MONDAY_OPPOSITE_ANSWERS = [("outdoor", "indoor"), ("mountain", "valley")]
TEACHER_MONDAY_SENTENCE_WORDS = [w[0] for w in WORDS[:4]]

TEACHER_TUESDAY_PHONICS_EXPLANATION = (
    "Today we practice Vowel Team patterns. Read each word slowly and listen for the vowel team sound."
)
TEACHER_TUESDAY_SCRAMBLE_ANSWERS = []
TEACHER_TUESDAY_COMP_QUESTIONS = [
    "What did they build near the fountain?",
    "What appeared over the mountain after the storm?",
    "Where did they see a sailboat?",
]
TEACHER_TUESDAY_COMP_ANSWERS = [
    "A snowman stood tall near the fountain.",
    "A rainbow appeared over the mountain.",
    "A sailboat glided past at the boatyard.",
]
TEACHER_TUESDAY_PATTERN_HUNT = {
    "match": ["snowman", "fountain", "rainbow", "mountain", "snowball", "outdoor", "trousers", "boatyard", "sailboat", "oatmeal", "newspaper", "toadstool"],
    "decoy": [],
}
TEACHER_TUESDAY_SWAP_ANSWERS = [
    "snowman / fountain (snowman, rainbow)",
    "sailboat / boatyard (boatyard, mountain)",
    "oatmeal / outdoor (oatmeal, outdoor)",
]
TEACHER_TUESDAY_BUILDER_PROMPTS = [
    ("Write a sentence about a rainbow.", "rainbow"),
    ("Write a sentence about a snowball.", "snowball"),
    ("Write a sentence about a sailboat.", "sailboat"),
]

TEACHER_WEDNESDAY_PHONICS_EXPLANATION = (
    "Today we use Vowel Team words in reading, writing, and thinking."
)
TEACHER_WEDNESDAY_VOCAB_Q_QUESTION = "In 'We visited the boatyard,' what does boatyard mean?"
TEACHER_WEDNESDAY_VOCAB_Q_ANSWER = "B) A place where boats are stored or built"
TEACHER_WEDNESDAY_SYN_ANT_WORDS = ["outdoor", "mountain", "rainbow", "sailboat", "snowman", "fountain"]
TEACHER_WEDNESDAY_WORD_WEB_CENTER = "mountain"
TEACHER_WEDNESDAY_WORD_WEB_SUGGESTIONS = ["hill", "peak", "climb", "rock", "snow", "trail"]
TEACHER_WEDNESDAY_SORT_ANSWERS = {
    "sentences": ["The sailboat glided past the fountain", "A rainbow appeared over the mountain after the rain"],
    "correct_order": ["The sailboat glided past the fountain.", "A rainbow appeared over the mountain after the rain."],
}
TEACHER_WEDNESDAY_CORRECT_ANSWERS = [
    ("the child throws a snowball outside.", "The child throws a snowball outside."),
    ("we saw a rainbow after the rain.", "We saw a rainbow after the rain."),
    ("she reads the newspaper every morning.", "She reads the newspaper every morning."),
]
TEACHER_WEDNESDAY_FILL_ANSWERS = ["rainbow", "snowman", "sailboat"]
TEACHER_WEDNESDAY_CONTEXT_CLUE_QUESTION = "What does 'rainbow' mean?"
TEACHER_WEDNESDAY_CONTEXT_CLUE_ANSWER = "B) A colorful arc of light after rain"
TEACHER_WEDNESDAY_DICTATION_WORDS = ["sailboat", "snowball", "rainbow", "outdoor", "trousers", "mountain"]

TEACHER_THURSDAY_PHONICS_EXPLANATION = (
    "Today we use Vowel Team words in stories and writing."
)
TEACHER_THURSDAY_COMP_QUESTIONS = [
    "Where did the child take the sailboat?",
    "What appeared over the mountain after the rain?",
    "What did the friend read under the tree?",
]
TEACHER_THURSDAY_COMP_ANSWERS = [
    "The outdoor pond.",
    "A rainbow appeared.",
    "The newspaper.",
]
TEACHER_THURSDAY_SORT_ANSWERS = {
    "sentences": ["The sailboat glided on the outdoor pond", "A rainbow appeared over the mountain"],
    "correct_order": ["The sailboat glided on the outdoor pond.", "A rainbow appeared over the mountain."],
}
TEACHER_THURSDAY_DETECTIVE_ANSWERS = [
    ("sailbaot", "sailboat"), ("toadsol", "toadstool"), ("boatyrd", "boatyard"),
    ("oatmel", "oatmeal"), ("snowbal", "snowball"), ("rainbw", "rainbow"),
    ("snowmn", "snowman"), ("outdor", "outdoor"),
]
TEACHER_THURSDAY_SWAP_ANSWERS = [
    "snowman / fountain (snowman, rainbow)",
    "sailboat / boatyard (boatyard, mountain)",
]
TEACHER_THURSDAY_MAP_WORD = "sailboat"
TEACHER_THURSDAY_MAP_SUGGESTIONS = ["Definition", "Sentence", "Synonym", "Antonym", "Drawing"]
TEACHER_THURSDAY_PARA_PROMPTS = [
    "Write a paragraph about a snowy day.",
    "Write a paragraph about a day at the boatyard.",
]

TEACHER_FRIDAY_PHONICS_EXPLANATION = (
    "Today we review and assess everything we learned about Vowel Teams this week."
)
TEACHER_FRIDAY_TEST_ANSWERS = [w[0] for w in WORDS]
TEACHER_FRIDAY_STORY_QUESTIONS = [
    "What glided past the fountain?",
    "What appeared over the mountain?",
    "Where did Dad read the newspaper?",
]
TEACHER_FRIDAY_STORY_ANSWERS = [
    "The sailboat glided past.",
    "A rainbow appeared.",
    "At the boatyard.",
]
TEACHER_FRIDAY_OPPOSITE_ANSWERS = [("outdoor", "indoor"), ("mountain", "valley"), ("snowball", "warm ball")]
TEACHER_FRIDAY_BUILDER_WORDS = ["sailboat", "rainbow", "snowman", "fountain"]
TEACHER_FRIDAY_JOURNAL_WORDS = ["trousers", "boatyard", "newspaper", "toadstool"]

# -- VALIDATION --
FILL_DATA = MONDAY_FILL_DATA
DETECTIVE_WORDS = THURSDAY_DETECTIVE
DETECTIVE_ANSWERS = ["sailboat", "toadstool", "boatyard", "oatmeal", "snowball", "rainbow", "snowman", "outdoor"]
OPPOSITE_PAIRS = [("outdoor", "indoor"), ("mountain", "valley")]
LEARNING_EXAMPLES = ["sailboat", "snowball", "outdoor"]
BREAKDOWNS = {
    "sailboat": "s-a-i-l-b-oa-t",
    "snowball": "s-n-ow-b-a-l-l",
    "outdoor": "ou-t-d-o-o-r",
}

def main():
    print("=" * 50)
    print("Week 4 Generator - Vowel Teams: OA, OW, OU, EW")
    print("=" * 50)

def main():
    print("=" * 50)
    print("Week 4 Generator - Vowel Teams: OA, OW, OU, EW")
    print("=" * 50)


    # Phonetic audit (verifies words against database)
    try:
        from audit.run_audit import validate_before_generate
        validate_before_generate(__file__)
    except ImportError:
        print("  [warn] audit system unavailable — skipping phonetic check")
    except Exception as e:
        print(f"\n  AUDIT FAILED: {e}")
        exit(1)

    errors = validate_week(
        words=WORDS, word_names=WORD_NAMES,
        fill_data=FILL_DATA,
        detective_words=DETECTIVE_WORDS, detective_answers=DETECTIVE_ANSWERS,
        opposite_pairs=OPPOSITE_PAIRS,
        learning_examples=LEARNING_EXAMPLES,
        breakdowns=BREAKDOWNS,
        generate_friday=lambda: None,
        phonetic_check=False
    )
    if errors:
        print("\nVALIDATION FAILED:")
        for e in errors:
            print(f"  - {e}")
        exit(1)
    print("Validation passed.\n")

    generate_monday(
        week_dir=WEEK, week_num=4, phonics_label=PHONICS_LABEL, words=WORDS,
        learning_text=LEARNING_TEXT, vowel_examples=VOWEL_EXAMPLES_MONDAY,
        grammar_note=GRAMMAR_NOTE, grammar_deep=GRAMMAR_DEEP,
        grammar_practice=MONDAY_GRAMMAR_PRACTICE,
        story_text=MONDAY_STORY, sort_labels=SORT_LABELS, sort_title=SORT_TITLE,
        fill_data=MONDAY_FILL_DATA, opposite_words=MONDAY_OPPOSITE_WORDS,
        sentence_words=MONDAY_SENTENCE_WORDS,
    )

    generate_tuesday(
        week_dir=WEEK, week_num=4, phonics_label=PHONICS_LABEL, words=WORDS,
        learning_text=TUESDAY_LEARNING, vowel_examples=VOWEL_EXAMPLES_TUE,
        remember_boxes=[TUESDAY_REMEMBER_1, TUESDAY_REMEMBER_2],
        reading_text=TUESDAY_READING, comp_questions=TUESDAY_COMP_QUESTIONS,
        swap_data=TUESDAY_SWAP_DATA, builder_prompts=TUESDAY_BUILDER_PROMPTS,
    )

    generate_wednesday(
        week_dir=WEEK, week_num=4, phonics_label=PHONICS_LABEL, words=WORDS,
        learning_text=WEDNESDAY_LEARNING, learning_skills=LEARNING_SKILLS_WED,
        reading_passage=WEDNESDAY_READING, vocab_question=WEDNESDAY_VOCAB_Q,
        syn_ant_words=WEDNESDAY_SYN_ANT, word_web_center="mountain",
        sentence_sort_data=WEDNESDAY_SORT_DATA, correct_sentences=WEDNESDAY_CORRECT,
        fill_data=WEDNESDAY_FILL, context_clue=WEDNESDAY_CONTEXT,
        dictation_words=WEDNESDAY_DICTATION,
    )

    generate_thursday(
        week_dir=WEEK, week_num=4, phonics_label=PHONICS_LABEL, words=WORDS,
        learning_text=THURSDAY_LEARNING, remember_text=REMINDER_TEXT,
        story_text=THURSDAY_STORY, comp_questions=THURSDAY_COMP_QUESTIONS,
        sentence_sort_data=THURSDAY_SORT_DATA, detective_words=THURSDAY_DETECTIVE,
        swap_data=THURSDAY_SWAP_DATA, map_word="sailboat",
        para_prompts=THURSDAY_PARA_PROMPTS,
    )

    generate_friday(
        week_dir=WEEK, week_num=4, phonics_label=PHONICS_LABEL, words=WORDS,
        review_story=FRIDAY_REVIEW_STORY, story_questions=FRIDAY_STORY_QUESTIONS,
        opposite_words=FRIDAY_OPPOSITE_WORDS, builder_words=FRIDAY_BUILDER_WORDS,
        journal_words=FRIDAY_JOURNAL_WORDS,
    )

    generate_teacher_guide(
        week_dir=WEEK, week_num=4, phonics_label=PHONICS_LABEL, words=WORDS,
        phonics_name="Vowel Teams: OA, OW, OU, EW",

        monday_phonics_explanation=TEACHER_MONDAY_PHONICS_EXPLANATION,
        monday_grammar_focus=TEACHER_MONDAY_GRAMMAR_FOCUS,
        monday_grammar_explanation=TEACHER_MONDAY_GRAMMAR_EXPLANATION,
        monday_story_text=MONDAY_STORY,
        monday_sort_labels=TEACHER_MONDAY_SORT_LABELS,
        monday_sort_answers=TEACHER_MONDAY_SORT_ANSWERS,
        monday_fill_answers=TEACHER_MONDAY_FILL_ANSWERS,
        monday_opposite_answers=TEACHER_MONDAY_OPPOSITE_ANSWERS,
        monday_sentence_words=TEACHER_MONDAY_SENTENCE_WORDS,

        tuesday_phonics_explanation=TEACHER_TUESDAY_PHONICS_EXPLANATION,
        tuesday_scramble_answers=TEACHER_TUESDAY_SCRAMBLE_ANSWERS,
        tuesday_reading_text=TUESDAY_READING,
        tuesday_comp_questions=TEACHER_TUESDAY_COMP_QUESTIONS,
        tuesday_comp_answers=TEACHER_TUESDAY_COMP_ANSWERS,
        tuesday_pattern_hunt_answers=TEACHER_TUESDAY_PATTERN_HUNT,
        tuesday_swap_answers=TEACHER_TUESDAY_SWAP_ANSWERS,
        tuesday_builder_prompts=TEACHER_TUESDAY_BUILDER_PROMPTS,

        wednesday_phonics_explanation=TEACHER_WEDNESDAY_PHONICS_EXPLANATION,
        wednesday_reading_text=WEDNESDAY_READING,
        wednesday_vocab_q_question=TEACHER_WEDNESDAY_VOCAB_Q_QUESTION,
        wednesday_vocab_q_answer=TEACHER_WEDNESDAY_VOCAB_Q_ANSWER,
        wednesday_syn_ant_words=TEACHER_WEDNESDAY_SYN_ANT_WORDS,
        wednesday_word_web_center=TEACHER_WEDNESDAY_WORD_WEB_CENTER,
        wednesday_word_web_suggestions=TEACHER_WEDNESDAY_WORD_WEB_SUGGESTIONS,
        wednesday_sort_answers=TEACHER_WEDNESDAY_SORT_ANSWERS,
        wednesday_correct_answers=TEACHER_WEDNESDAY_CORRECT_ANSWERS,
        wednesday_fill_answers=TEACHER_WEDNESDAY_FILL_ANSWERS,
        wednesday_context_clue_question=TEACHER_WEDNESDAY_CONTEXT_CLUE_QUESTION,
        wednesday_context_clue_answer=TEACHER_WEDNESDAY_CONTEXT_CLUE_ANSWER,
        wednesday_dictation_words=TEACHER_WEDNESDAY_DICTATION_WORDS,

        thursday_phonics_explanation=TEACHER_THURSDAY_PHONICS_EXPLANATION,
        thursday_comp_questions=TEACHER_THURSDAY_COMP_QUESTIONS,
        thursday_comp_answers=TEACHER_THURSDAY_COMP_ANSWERS,
        thursday_sort_answers=TEACHER_THURSDAY_SORT_ANSWERS,
        thursday_detective_answers=TEACHER_THURSDAY_DETECTIVE_ANSWERS,
        thursday_swap_answers=TEACHER_THURSDAY_SWAP_ANSWERS,
        thursday_map_word=TEACHER_THURSDAY_MAP_WORD,
        thursday_map_suggestions=TEACHER_THURSDAY_MAP_SUGGESTIONS,
        thursday_para_prompts=TEACHER_THURSDAY_PARA_PROMPTS,

        friday_phonics_explanation=TEACHER_FRIDAY_PHONICS_EXPLANATION,
        friday_test_answers=TEACHER_FRIDAY_TEST_ANSWERS,
        friday_story_questions=TEACHER_FRIDAY_STORY_QUESTIONS,
        friday_story_answers=TEACHER_FRIDAY_STORY_ANSWERS,
        friday_opposite_answers=TEACHER_FRIDAY_OPPOSITE_ANSWERS,
        friday_builder_words=TEACHER_FRIDAY_BUILDER_WORDS,
        friday_journal_words=TEACHER_FRIDAY_JOURNAL_WORDS,
    )

    print("\nAll done! Check Week_04/ for PDFs.")

if __name__ == "__main__":
    main()