#!/usr/bin/env python3
"""Revert Turkish chars in Dart identifiers (interpolations + part/import paths).
Strings/comments untouched."""
import re, sys
from pathlib import Path

TR_MAP = str.maketrans({
    'ş':'s','Ş':'S','ğ':'g','Ğ':'G','ü':'u','Ü':'U',
    'ö':'o','Ö':'O','ç':'c','Ç':'C','ı':'i','İ':'I',
})

INTERP_RE = re.compile(r'\$\{([^{}]+)\}')
INTERP_SIMPLE_RE = re.compile(r'\$([A-Za-z_\u00C0-\uFFFF][\w\u00C0-\uFFFF]*(?:\.[A-Za-z_\u00C0-\uFFFF][\w\u00C0-\uFFFF]*)*)')
PART_RE = re.compile(r"""(part\s+)(['"])([^'"]+)\2""")
IMPORT_RE = re.compile(r"""(import\s+)(['"])([^'"]+)\2""")
EXPORT_RE = re.compile(r"""(export\s+)(['"])([^'"]+)\2""")

def fix_path(p):
    return p.translate(TR_MAP)

def fix_interp(m):
    return '${' + m.group(1).translate(TR_MAP) + '}'

def fix_interp_simple(m):
    return '$' + m.group(1).translate(TR_MAP)

def process(path: Path):
    try:
        text = path.read_text(encoding='utf-8')
    except Exception:
        return False
    orig = text
    text = INTERP_RE.sub(fix_interp, text)
    text = INTERP_SIMPLE_RE.sub(fix_interp_simple, text)
    text = PART_RE.sub(lambda m: f"{m.group(1)}{m.group(2)}{fix_path(m.group(3))}{m.group(2)}", text)
    text = IMPORT_RE.sub(lambda m: f"{m.group(1)}{m.group(2)}{fix_path(m.group(3))}{m.group(2)}", text)
    text = EXPORT_RE.sub(lambda m: f"{m.group(1)}{m.group(2)}{fix_path(m.group(3))}{m.group(2)}", text)
    if text != orig:
        path.write_text(text, encoding='utf-8')
        return True
    return False

def main():
    root = Path(sys.argv[1] if len(sys.argv) > 1 else 'lib')
    n = 0
    for p in root.rglob('*.dart'):
        if process(p):
            n += 1
            print(f"FIX {p}")
    print(f"Total: {n}")

if __name__ == '__main__':
    main()
