#!/usr/bin/env python3
"""
Week 23 Generator - Contractions & Apostrophes
"""
import os
import sys

# Add course root to path so we can import shared modules
COURSE_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, COURSE_ROOT)

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

# =====================================================================
# WEEK 23 DATA
# =====================================================================

WEEK_DIR = os.path.join(COURSE_ROOT, "Week_23")
WEEK_NUM = 23
PHONICS_LABEL = "Contractions & Apostrophes"

# 4-tuple: (word, pattern_code, phonics_note, context_definition)
WORDS = [
    ("can't", "CN", "cannot squeezes into one word - the apostrophe takes the place of 'no'", "cannot; not able to do something"),
    ("don't", "CN", "do + not join together - the apostrophe replaces the 'o' in not", "do not; used to say something is not done"),
    ("won't", "CN", "will + not becomes won't - a tricky one where the whole word changes!", "will not; refusing or not going to"),
    ("I'll", "CN", "I + will join - the apostrophe replaces 'wi' in will", "I will; something I am going to do"),
    ("you're", "CN", "you + are join - the apostrophe replaces the 'a' in are", "you are; talking about the person you speak to"),
    ("they're", "CN", "they + are join - the apostrophe replaces the 'a' in are", "they are; talking about a group of people"),
    ("it's", "CN", "it + is join - the apostrophe replaces the 'i' in is", "it is; describing a thing"),
    ("we've", "CN", "we + have join - the apostrophe replaces 'ha' in have", "we have; something our group has done"),
    ("she's", "CN", "she + is join - the apostrophe replaces the 'i' in is", "she is; talking about a girl or woman"),
    ("that's", "CN", "that + is join - the apostrophe replaces the 'i' in is", "that is; pointing something out"),
    ("I'm", "CN", "I + am join - the apostrophe replaces the 'a' in am", "I am; talking about yourself"),
    ("let's", "CN", "let + us join - the apostrophe replaces the 'u' in us", "let us; inviting someone to do something together"),
]

LEARNING_SKILLS_MON = [
    "Understand what a contraction is and how it is formed",
    "Recognize that the apostrophe takes the place of missing letters",
    "Match contractions to the two words they come from",
]

LEARNING_SKILLS_TUE = [
    "Spell common contractions correctly with the apostrophe in the right spot",
    "Tell the difference between contractions and possessives",
    "Change full word pairs into contractions and back again",
]

LEARNING_SKILLS_WED = [
    "Read sentences with contractions smoothly and naturally",
    "Fix sentences with missing or misplaced apostrophes",
    "Use contractions correctly in fill-in-the-blank sentences",
]

LEARNING_SKILLS_THU = [
    "Write original sentences using contractions",
    "Find contractions hiding in a reading passage",
    "Swap contractions and full forms in sentences",
]

LEARNING_SKILLS_FRI = [
    "Demonstrate mastery of all 12 contractions on the spelling check",
    "Match each contraction to its full form quickly and correctly",
    "Reflect on when contractions make writing sound friendly and natural",
]

# =====================================================================
# MONDAY DATA
# =====================================================================

MONDAY_LEARNING = (
    "A contraction is a shortcut word! We take two words, squeeze them together, and drop some letters. "
    "The apostrophe (') is a special mark that shows exactly where the missing letters used to be. "
    "For example, 'do not' becomes 'don't' - the apostrophe stands in for the missing 'o'. "
    "This week we will learn 12 contractions and how the apostrophe helps us write and talk the way we really speak!"
)

MONDAY_VOWEL_EXAMPLES = [
    "do + not = don't (the apostrophe replaces the 'o')",
    "you + are = you're (the apostrophe replaces the 'a')",
    "I + will = I'll (the apostrophe replaces 'wi')",
]

MONDAY_GRAMMAR_NOTE = "A contraction joins two words into one. The apostrophe shows where letters are missing."

MONDAY_GRAMMAR_DEEP = (
    "How Contractions Work:\\n"
    "1. Take two words: do + not\\n"
    "2. Squeeze them together and drop a letter: donot -> dont\\n"
    "3. Put an apostrophe where the letter was: don't\\n"
    "\\n"
    "Watch out for the tricky one:\\n"
    "- will + not = won't (the whole word changes!)\\n"
    "\\n"
    "The apostrophe in a contraction always marks MISSING letters. "
    "Later we will see apostrophes can also show belonging (the dog's bone) - that is a possessive, not a contraction."
)

MONDAY_GRAMMAR_FOCUS = "Contractions and Apostrophes"

MONDAY_GRAMMAR_EXPLANATION = (
    "A contraction is two words joined into one shorter word. "
    "The apostrophe is placed exactly where the missing letters used to be - never anywhere else!"
)

MONDAY_GRAMMAR_PRACTICE = [
    ("I can't wait for the party.", "can't"),
    ("They're playing in the yard.", "they're"),
    ("Let's read a book together.", "let's"),
]

MONDAY_STORY_TEXT = (
    "<strong>I'm</strong> so excited today! <strong>It's</strong> the day of the big class picnic. "
    "\"<strong>Let's</strong> pack the basket,\" says Mom. \"<strong>We've</strong> got sandwiches, apples, and juice.\" "
    "My sister says, \"<strong>I'll</strong> carry the blanket, but I <strong>can't</strong> carry the basket too.\" "
    "\"<strong>Don't</strong> worry,\" I tell her. \"<strong>You're</strong> a great helper already!\" "
    "At the park, our friends wave. <strong>They're</strong> setting up games under a big tree. "
    "<strong>She's</strong> bringing a kite, and it <strong>won't</strong> stay still in the wind. "
    "\"<strong>That's</strong> the best kite I have ever seen!\" I shout. What a wonderful day!"
)

MONDAY_SORT_LABELS = ["Contractions with n't", "Other Contractions"]
TEACHER_MONDAY_SORT_ANSWERS = {
    "Contractions with n't": ["can't", "don't", "won't"],
    "Other Contractions": ["I'll", "you're", "they're", "it's", "we've", "she's", "that's", "I'm", "let's"],
}

MONDAY_FILL_DATA = [
    ("I __________ believe how tall that tree is!", "can't"),
    ("__________ go to the library after lunch.", "Let's"),
    ("__________ my best friend in the whole world.", "You're"),
]

MONDAY_OPPOSITE_WORDS = []
TEACHER_MONDAY_OPPOSITE_ANSWERS = []
MONDAY_SENTENCE_WORDS = ["can't", "don't", "I'll", "you're", "it's", "let's"]

# =====================================================================
# TUESDAY DATA
# =====================================================================

TUESDAY_LEARNING = (
    "Apostrophes have two big jobs! In a contraction, the apostrophe replaces missing letters, like in 'don't' (do not). "
    "In a possessive, the apostrophe shows that something belongs to someone, like 'Sam's hat' - the hat belongs to Sam. "
    "Here is a trick: if you can split the word back into two words, it is a contraction. "
    "If it shows belonging, it is a possessive. Today we will practice both!"
)

TUESDAY_READING_TEXT = (
    "\"Let's build a treehouse!\" said Maya. \"I'll get the wood if you can't find any.\" "
    "Her brother Leo grinned. \"Don't forget the hammer. It's in Dad's toolbox.\" "
    "They worked all morning. \"We've almost finished the floor,\" said Maya proudly. "
    "\"You're really good at this,\" Leo told her. \"That's the straightest wall I have ever seen!\" "
    "Their dog Biscuit barked from below. \"She's jealous,\" laughed Maya. \"Dogs can't climb ladders!\" "
    "By dinner time, the treehouse was done. \"I'm so proud of us,\" said Leo. "
    "\"They're going to love it when our friends visit. But we won't let Biscuit up here - she might chew the rope ladder!\""
)

TUESDAY_COMP_QUESTIONS = [
    "What did Maya and Leo decide to build?",
    "Where was the hammer?",
    "Why did Biscuit bark from below?",
    "Find two contractions in the story and write the two words they come from.",
]

TEACHER_TUESDAY_COMP_ANSWERS = [
    "A treehouse",
    "In Dad's toolbox",
    "She was jealous because dogs can't climb ladders",
    "Any two, e.g., let's = let us, I'll = I will, don't = do not, it's = it is",
]

TUESDAY_SCRAMBLE_WORDS = ["can't", "you're", "they're", "let's"]
TEACHER_TUESDAY_SCRAMBLE_ANSWERS = [
    ("t'nac", "can't"),
    ("er'uoy", "you're"),
    ("er'yeht", "they're"),
    ("s'tel", "let's"),
]

TUESDAY_REMEMBER_BOXES = [
    ("Contractions",
     "A contraction joins two words into one. The apostrophe replaces the missing letters: "
     "do not = don't, I am = I'm, we have = we've. Tricky one: will not = won't!"),
    ("Contraction or Possessive?",
     "Contraction: it's = it is (missing letters). "
     "Possessive: Sam's hat = the hat belongs to Sam (shows belonging). "
     "Test it: can you split the word into two words? Then it's a contraction!"),
]

TUESDAY_PARAGRAPH_EXAMPLE = (
    "Contractions make our writing sound the way we really talk.",
    "Instead of 'I cannot go,' we say 'I can't go.' Instead of 'Let us play,' we say 'Let's play.' The apostrophe always sits right where the missing letters used to be.",
    "Using contractions correctly makes your stories sound friendly and natural!",
)

TUESDAY_PATTERN_HUNT_WORDS = [
    "can't", "don't", "won't", "I'll", "you're", "they're",
    "it's", "we've", "she's", "that's", "I'm", "let's",
]

TEACHER_TUESDAY_PATTERN_HUNT = {
    "match": ["can't", "don't", "won't", "I'll", "you're", "they're", "it's", "we've", "she's", "that's", "I'm", "let's"],
}

TUESDAY_SWAP_DATA = [
    (
        "I can't find my shoes, so I'll look under the bed.",
        ("can't", "I'll"),
        ("cannot", "I will"),
    ),
    (
        "They're happy because it's finally snowing outside.",
        ("they're", "it's"),
        ("they are", "it is"),
    ),
]

TEACHER_TUESDAY_SWAP_ANSWERS = [
    "cannot, I will",
    "they are, it is",
]

TUESDAY_BUILDER_PROMPTS = [
    ("Write a sentence using 'don't' and 'let's'", "don't"),
    ("Write a sentence using 'I'm' and 'can't'", "I'm"),
]

# =====================================================================
# WEDNESDAY DATA
# =====================================================================

WEDNESDAY_LEARNING = (
    "Today we will connect everything we know about contractions! We will read a story full of contractions, "
    "fix sentences with missing apostrophes, and unscramble sentences. "
    "Remember: the apostrophe always goes exactly where the missing letters used to be."
)

WEDNESDAY_READING = (
    "\"<strong>It's</strong> snowing!\" shouted Ben. \"<strong>Let's</strong> build a snowman before it melts!\" "
    "His sister Ana pulled on her mittens. \"<strong>I'll</strong> roll the biggest ball for the bottom. "
    "<strong>You're</strong> in charge of finding a carrot nose.\" "
    "Ben laughed. \"<strong>I can't</strong> reach the top shelf where Mom keeps the carrots. "
    "<strong>Don't</strong> worry, <strong>I'm</strong> going to ask her for help.\" "
    "Soon the snowman stood tall in the yard. \"<strong>We've</strong> made the best snowman ever!\" said Ana. "
    "\"<strong>That's</strong> true,\" agreed Ben. \"And <strong>he won't</strong> melt today because <strong>it's</strong> so cold. "
    "<strong>They're</strong> going to see him from the school bus tomorrow. <strong>She's</strong> going to smile - even our teacher loves snowmen!\""
)

WEDNESDAY_VOCAB_Q = (
    "Find the contraction that means 'let us' in the story.",
    "What two words make up the contraction 'we've'?"
)

TEACHER_WEDNESDAY_VOCAB_Q_QUESTION = WEDNESDAY_VOCAB_Q
TEACHER_WEDNESDAY_VOCAB_Q_ANSWER = (
    "The contraction is 'let's' (let us). "
    "'We've' is made of 'we' + 'have'."
)

WEDNESDAY_SYN_ANT = ["can't", "don't", "won't"]
WEDNESDAY_WORD_WEB_CENTER = "Apostrophe"
WEDNESDAY_WORD_WEB_INSTRUCTION = (
    "Create a word web with 'Apostrophe' in the center. "
    "Add contractions on the branches, and next to each one write the two words it comes from."
)

WEDNESDAY_SORT_DATA = [
    "Let's build a tall snowman before the warm sun melts it",
    "I can't wait because they're coming to visit us this weekend",
]

TEACHER_WEDNESDAY_SORT_ANSWERS = {
    "sentences": [
        "Let's build a tall snowman before the warm sun melts it",
        "I can't wait because they're coming to visit us this weekend",
    ],
    "correct_order": [
        "Let's build a tall snowman before the warm sun melts it",
        "I can't wait because they're coming to visit us this weekend",
    ],
}

WEDNESDAY_CORRECT = [
    "I cant find my red mittens anywhere.",
    "Shes' reading her favorite book about dragons.",
    "dont forget that were going to the zoo",
]

TEACHER_WEDNESDAY_CORRECT_ANSWERS = [
    ("I cant find my red mittens anywhere.", "I can't find my red mittens anywhere. (missing apostrophe)"),
    ("Shes' reading her favorite book about dragons.", "She's reading her favorite book about dragons. (apostrophe in the wrong place)"),
    ("dont forget that were going to the zoo", "Don't forget that we're going to the zoo. (missing apostrophes, capital, and period)"),
]

WEDNESDAY_FILL = [
    ("__________ raining, so bring your umbrella.", "It's"),
    ("We __________ swim because the pool is closed.", "can't"),
    ("__________ finished all of our homework already.", "We've"),
    ("__________ the funniest joke I have ever heard!", "That's"),
    ("I hope she __________ forget her lunch again.", "won't"),
]

TEACHER_WEDNESDAY_FILL_ANSWERS = ["It's", "can't", "We've", "That's", "won't"]

# =====================================================================
# THURSDAY DATA
# =====================================================================

THURSDAY_LEARNING = (
    "Today we become writers! We will use contractions in our own sentences and stories. "
    "We will also be grammar detectives and hunt for contractions in a passage. "
    "Remember: contractions make writing sound friendly, like real talking!"
)

THURSDAY_REMEMBER_TEXT = (
    "A contraction = two words joined into one. "
    "The apostrophe replaces the missing letters: do not = don't, I am = I'm, we have = we've. "
    "Tricky one: will not = won't. "
    "Possessives are different - they show belonging (the cat's toy)."
)

THURSDAY_STORY_TEXT = (
    "\"I'm going to the science fair today,\" said Rosa at breakfast. "
    "\"I can't wait to show everyone my volcano. It's going to erupt with red bubbles!\" "
    "Her dad smiled. \"Don't forget your poster. I'll drive you to school early.\" "
    "At the fair, Rosa's friend Kim ran over. \"You're here! We've been waiting for you. "
    "Let's set up our tables next to each other.\" "
    "When the judges came by, Rosa's volcano erupted perfectly. \"That's amazing!\" said one judge. "
    "\"She's a real scientist,\" whispered Kim proudly. "
    "Rosa grinned. \"They're giving out ribbons at noon, and I won't stop smiling until then!\""
)

THURSDAY_COMP_QUESTIONS = [
    "What did Rosa bring to the science fair?",
    "Who drove Rosa to school early?",
    "What did the judge say when the volcano erupted?",
    "Find the contraction that means 'will not' in the story.",
]

TEACHER_THURSDAY_COMP_ANSWERS = [
    "A volcano (and her poster)",
    "Her dad",
    "\"That's amazing!\"",
    "won't",
]

THURSDAY_SORT_DATA = [
    "She's bringing her science project to the big fair today",
    "Don't worry because I'll help you carry the heavy boxes",
]

TEACHER_THURSDAY_SORT_ANSWERS = {
    "sentences": [
        "She's bringing her science project to the big fair today",
        "Don't worry because I'll help you carry the heavy boxes",
    ],
    "correct_order": [
        "She's bringing her science project to the big fair today",
        "Don't worry because I'll help you carry the heavy boxes",
    ],
}

THURSDAY_DETECTIVE_WORDS = ["ca'nt", "don't", "wo'nt", "I'll", "youre'", "they're", "it's", "weve'", "she's", "thats'", "I'm", "let's"]
TEACHER_THURSDAY_DETECTIVE_ANSWERS = [
    ("ca'nt", "can't"), ("don't", "don't"), ("wo'nt", "won't"),
    ("I'll", "I'll"), ("youre'", "you're"), ("they're", "they're"),
    ("it's", "it's"), ("weve'", "we've"), ("she's", "she's"),
    ("thats'", "that's"), ("I'm", "I'm"), ("let's", "let's"),
]

THURSDAY_SWAP_DATA = [
    (
        "She's sure that we've picked the best pumpkin.",
        ("She's", "we've"),
        ("She is", "we have"),
    ),
    (
        "Don't be sad - I'm coming to your game.",
        ("Don't", "I'm"),
        ("Do not", "I am"),
    ),
]

TEACHER_THURSDAY_SWAP_ANSWERS = [
    "She is, we have",
    "Do not, I am",
]

THURSDAY_MAP_WORD = "can't"
THURSDAY_MAP_SUGGESTIONS = [
    "Meaning: cannot; not able to",
    "Made from: can + not",
    "The apostrophe replaces: 'no'",
    "Example: I can't reach the top shelf.",
]

THURSDAY_CONTEXT_CLUE_WRITING = ["won't", "we've"]

THURSDAY_STORY_PROMPT = (
    "Write a short story using at least 4 contractions from our spelling list. "
    "Circle each apostrophe when you are done!"
)

THURSDAY_PARA_PROMPTS = [
    "Write a sentence using 'they're' and 'won't'",
    "Write a sentence using 'she's' and 'that's'",
]

THURSDAY_FIX_PARAGRAPH = (
    "Im so happy today! Its my birthday, and lets have a party. My friends cant wait to come over. "
    "Theyre bringing games, and weve got a big chocolate cake. Mom says she wont light the candles until everyone arrives. "
    "Youre invited too - dont be late!"
)

# =====================================================================
# FRIDAY DATA
# =====================================================================

FRIDAY_LEARNING = (
    "It's assessment day! Today we will show everything we've learned about contractions and apostrophes. "
    "We will take our spelling check, match contractions to their full forms, and write about our favorite contraction. "
    "You've worked hard all week - let's finish strong!"
)

FRIDAY_STORY = (
    "What a week we've had! We learned that contractions are shortcut words. "
    "Now I can't imagine writing without them! Don't you agree that they're useful? "
    "It's easy once you know the secret: the apostrophe stands where letters are missing. "
    "I'll always remember that 'will not' becomes 'won't' - the trickiest one of all. "
    "You're ready for the spelling check now. She's proud of you, and I'm proud too. "
    "That's the truth! Let's show what we know!"
)

FRIDAY_STORY_QUESTIONS = [
    "What is a contraction?",
    "What does the apostrophe in a contraction show?",
    "Which contraction is the trickiest, and why?",
]

TEACHER_FRIDAY_STORY_ANSWERS = [
    "A shortcut word made by joining two words into one.",
    "It shows where the missing letters used to be.",
    "won't - because 'will not' changes its whole shape, not just one letter.",
]

FRIDAY_OPPOSITE_WORDS = ["can't", "don't", "you're", "we've"]
TEACHER_FRIDAY_OPPOSITE_ANSWERS = [
    ("can't", "cannot"),
    ("don't", "do not"),
    ("you're", "you are"),
    ("we've", "we have"),
]

FRIDAY_BUILDER_WORDS = ["can't", "let's", "they're"]
FRIDAY_JOURNAL_WORDS = ["I'm", "it's", "won't"]

# =====================================================================
# TEACHER ANSWER KEYS (aliases for clarity)
# =====================================================================

TEACHER_MONDAY_FILL_ANSWERS = MONDAY_FILL_DATA

# =====================================================================
# MAIN
# =====================================================================

def main():
    if len(sys.argv) > 1 and sys.argv[1] == "--generate":
        pass
    else:
        print("Usage: python3 generate_week23.py --generate")
        return

    print("=== Generating Week 23 ===")

    # 1. Generate daily PDFs
    print("  Generating Monday PDF...")
    generate_monday(
        week_dir=WEEK_DIR,
        week_num=WEEK_NUM,
        phonics_label=PHONICS_LABEL,
        words=WORDS,
        learning_text=MONDAY_LEARNING,
        vowel_examples=MONDAY_VOWEL_EXAMPLES,
        grammar_note=MONDAY_GRAMMAR_NOTE,
        grammar_deep=MONDAY_GRAMMAR_DEEP,
        grammar_practice=MONDAY_GRAMMAR_PRACTICE,
        story_text=MONDAY_STORY_TEXT,
        sort_labels=MONDAY_SORT_LABELS,
        fill_data=MONDAY_FILL_DATA,
        opposite_words=MONDAY_OPPOSITE_WORDS,
        sentence_words=MONDAY_SENTENCE_WORDS
    )

    print("  Generating Tuesday PDF...")
    generate_tuesday(
        week_dir=WEEK_DIR,
        week_num=WEEK_NUM,
        phonics_label=PHONICS_LABEL,
        words=WORDS,
        learning_text=TUESDAY_LEARNING,
        reading_text=TUESDAY_READING_TEXT,
        comp_questions=TUESDAY_COMP_QUESTIONS,
        teacher_comp_answers=TEACHER_TUESDAY_COMP_ANSWERS,
        scramble_words=TUESDAY_SCRAMBLE_WORDS,
        teacher_scramble_answers=TEACHER_TUESDAY_SCRAMBLE_ANSWERS,
        remember_boxes=TUESDAY_REMEMBER_BOXES,
        paragraph_example=TUESDAY_PARAGRAPH_EXAMPLE,
        pattern_hunt_words=TUESDAY_PATTERN_HUNT_WORDS,
        teacher_pattern_hunt=TEACHER_TUESDAY_PATTERN_HUNT,
        swap_data=TUESDAY_SWAP_DATA,
        builder_prompts=TUESDAY_BUILDER_PROMPTS
    )

    print("  Generating Wednesday PDF...")
    generate_wednesday(
        week_dir=WEEK_DIR,
        week_num=WEEK_NUM,
        phonics_label=PHONICS_LABEL,
        words=WORDS,
        learning_text=WEDNESDAY_LEARNING,
        learning_skills=LEARNING_SKILLS_WED,
        reading_text=WEDNESDAY_READING,
        vocab_q=WEDNESDAY_VOCAB_Q,
        teacher_vocab_q_question=TEACHER_WEDNESDAY_VOCAB_Q_QUESTION,
        teacher_vocab_q_answer=TEACHER_WEDNESDAY_VOCAB_Q_ANSWER,
        syn_ant=WEDNESDAY_SYN_ANT,
        word_web_center=WEDNESDAY_WORD_WEB_CENTER,
        word_web_suggestions=WEDNESDAY_WORD_WEB_INSTRUCTION,
        sort_data=WEDNESDAY_SORT_DATA,
        teacher_sort_answers=TEACHER_WEDNESDAY_SORT_ANSWERS,
        correct_sentences=WEDNESDAY_CORRECT,
        teacher_correct_answers=TEACHER_WEDNESDAY_CORRECT_ANSWERS,
        fill_data=WEDNESDAY_FILL,
        teacher_fill_answers=TEACHER_WEDNESDAY_FILL_ANSWERS
    )

    print("  Generating Thursday PDF...")
    generate_thursday(
        week_dir=WEEK_DIR,
        week_num=WEEK_NUM,
        phonics_label=PHONICS_LABEL,
        words=WORDS,
        learning_text=THURSDAY_LEARNING,
        remember_text=THURSDAY_REMEMBER_TEXT,
        story_text=THURSDAY_STORY_TEXT,
        comp_questions=THURSDAY_COMP_QUESTIONS,
        sentence_sort_data=THURSDAY_SORT_DATA,
        detective_words=THURSDAY_DETECTIVE_WORDS,
        swap_data=THURSDAY_SWAP_DATA,
        map_word=THURSDAY_MAP_WORD,
        para_prompts=THURSDAY_PARA_PROMPTS,
        story_prompt=THURSDAY_STORY_PROMPT,
        context_clue_writing=THURSDAY_CONTEXT_CLUE_WRITING,
        fix_paragraph=THURSDAY_FIX_PARAGRAPH
    )

    print("  Generating Friday PDF...")
    generate_friday(
        week_dir=WEEK_DIR,
        week_num=WEEK_NUM,
        phonics_label=PHONICS_LABEL,
        words=WORDS,
        review_story=FRIDAY_STORY,
        story_questions=FRIDAY_STORY_QUESTIONS,
        opposite_words=FRIDAY_OPPOSITE_WORDS,
        builder_words=FRIDAY_BUILDER_WORDS,
        journal_words=FRIDAY_JOURNAL_WORDS
    )

    print("  Generating Teacher Guide...")
    generate_teacher_guide(
        week_dir=WEEK_DIR,
        week_num=WEEK_NUM,
        phonics_label=PHONICS_LABEL,
        words=WORDS,
        learning_skills_mon=LEARNING_SKILLS_MON,
        learning_skills_tue=LEARNING_SKILLS_TUE,
        learning_skills_wed=LEARNING_SKILLS_WED,
        learning_skills_thu=LEARNING_SKILLS_THU,
        learning_skills_fri=LEARNING_SKILLS_FRI,
        grammar_note=MONDAY_GRAMMAR_NOTE,
        teacher_monday_learning=MONDAY_LEARNING,
        teacher_tuesday_learning=TUESDAY_LEARNING,
        teacher_wednesday_learning=WEDNESDAY_LEARNING,
        teacher_thursday_learning=THURSDAY_LEARNING,
        teacher_friday_learning=FRIDAY_LEARNING,
        monday_grammar_focus=MONDAY_GRAMMAR_FOCUS,
        monday_grammar_explanation=MONDAY_GRAMMAR_EXPLANATION,
        monday_story_text=MONDAY_STORY_TEXT,
        monday_sort_labels=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=MONDAY_SENTENCE_WORDS,
        tuesday_comp_questions=TUESDAY_COMP_QUESTIONS,
        tuesday_comp_answers=TEACHER_TUESDAY_COMP_ANSWERS,
        tuesday_scramble_answers=TEACHER_TUESDAY_SCRAMBLE_ANSWERS,
        tuesday_pattern_hunt_answers=TEACHER_TUESDAY_PATTERN_HUNT,
        tuesday_swap_answers=TEACHER_TUESDAY_SWAP_ANSWERS,
        tuesday_builder_prompts=TUESDAY_BUILDER_PROMPTS,
        wednesday_vocab_q_answer=TEACHER_WEDNESDAY_VOCAB_Q_ANSWER,
        wednesday_vocab_q_question=TEACHER_WEDNESDAY_VOCAB_Q_QUESTION,
        wednesday_syn_ant_words=WEDNESDAY_SYN_ANT,
        wednesday_word_web_center=WEDNESDAY_WORD_WEB_CENTER,
        wednesday_word_web_suggestions=WEDNESDAY_WORD_WEB_INSTRUCTION,
        wednesday_sort_answers=TEACHER_WEDNESDAY_SORT_ANSWERS,
        wednesday_correct_answers=TEACHER_WEDNESDAY_CORRECT_ANSWERS,
        wednesday_fill_answers=TEACHER_WEDNESDAY_FILL_ANSWERS,
        thursday_comp_questions=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=THURSDAY_MAP_WORD,
        thursday_map_suggestions=THURSDAY_MAP_SUGGESTIONS,
        thursday_para_prompts=THURSDAY_PARA_PROMPTS,
        friday_story_questions=FRIDAY_STORY_QUESTIONS,
        friday_story_answers=TEACHER_FRIDAY_STORY_ANSWERS,
        friday_opposite_answers=TEACHER_FRIDAY_OPPOSITE_ANSWERS,
        friday_builder_words=FRIDAY_BUILDER_WORDS,
        friday_journal_words=FRIDAY_JOURNAL_WORDS
    )

    print("Done.")


if __name__ == "__main__":
    main()
