Update say-out-loud skill: chime, default voice, built-in speakers, 80% volume

This commit is contained in:
Adolfo Reyna
2026-02-14 21:24:32 -05:00
parent d7c92d20e8
commit d1676d11ef
18 changed files with 1249 additions and 0 deletions

75
fix_lua_corruption.py Normal file
View File

@@ -0,0 +1,75 @@
import os
import re
GAMES_DIR = os.path.expanduser("~/Project/basic1/games/lua_examples")
def fix_file(filepath):
with open(filepath, 'r') as f:
content = f.read()
original_content = content
# 1. Fix corrupted function arguments (removing the inserted ", 2")
# game.width(, 2) -> game.width()
content = re.sub(r'game\.width\(\s*,\s*2\s*\)', 'game.width()', content)
content = re.sub(r'game\.height\(\s*,\s*2\s*\)', 'game.height()', content)
# tostring(val, 2) -> tostring(val)
# This regex looks for tostring(..., 2) where ... is not empty
content = re.sub(r'tostring\(([^,]+),\s*2\s*\)', r'tostring(\1)', content)
# math.floor(val, 2) -> math.floor(val)
content = re.sub(r'math\.floor\(([^,]+),\s*2\s*\)', r'math.floor(\1)', content)
# 2. Fix renderer.text_scaled calls that are missing the scale argument
# The bad regex changed renderer.text(x, y, txt, on) -> renderer.text_scaled(x, y, txt, on)
# It should be renderer.text_scaled(x, y, txt, on, 2)
# We look for renderer.text_scaled calls that end with ", true)" or ", false)"
# and verify they don't already have a 5th argument.
def add_scale_arg(match):
full_match = match.group(0)
# Check if it already ends with ", 2)" or similar integer
if re.search(r',\s*\d+\s*\)$', full_match):
return full_match
# It ends in boolean, so append ", 2"
return full_match.replace(')', ', 2)')
# Regex for renderer.text_scaled(..., true) or (..., false)
# We use a pattern that matches the function call until the closing paren
# This is tricky with nested parens, but usually text calls are simple.
# Let's match line-by-line or simple calls.
lines = content.split('\n')
new_lines = []
for line in lines:
if 'renderer.text_scaled' in line:
# If line ends with "true)" or "false)", append ", 2)"
# Be careful not to double add if I run this script twice.
# And handle cases where it might be `true)` with spaces.
# Simple check: does it end with `true)` or `false)`?
# And does it NOT have `, 2)`?
if re.search(r',\s*(true|false)\s*\)', line):
line = re.sub(r'\)\s*$', ', 2)', line)
new_lines.append(line)
content = '\n'.join(new_lines)
if content != original_content:
print(f"Fixing {filepath}...")
with open(filepath, 'w') as f:
f.write(content)
return True
return False
print(f"Scanning {GAMES_DIR}...")
count = 0
for filename in os.listdir(GAMES_DIR):
if filename.endswith(".lua"):
if fix_file(os.path.join(GAMES_DIR, filename)):
count += 1
print(f"Fixed {count} files.")