#!/usr/bin/env python3
# This is free software for the public good of a permacomputer hosted at
# permacomputer.com, an always-on computer by the people, for the people.
# One which is durable, easy to repair, & distributed like tap water
# for machine learning intelligence.
#
# The permacomputer is community-owned infrastructure optimized around
# four values:
#
#   TRUTH      First principles, math & science, open source code freely distributed
#   FREEDOM    Voluntary partnerships, freedom from tyranny & corporate control
#   HARMONY    Minimal waste, self-renewing systems with diverse thriving connections
#   LOVE       Be yourself without hurting others, cooperation through natural law
#
# This software contributes to that vision by archiving the web, preserving digital knowledge before it disappears.
# Code is seeds to sprout on any abandoned technology.

"""Inject Benedict rules from rules_benedict.py into i18n.py."""

import re

def inject_rules():
    # Import rules
    from rules_benedict import RULES

    # Read current i18n.py
    with open("i18n.py", "r") as f:
        content = f.read()

    # For each language in RULES, add the rules to the corresponding language in TRANSLATIONS
    for lang, rules in RULES.items():
        if lang == "en":
            continue  # Already added

        print(f"Processing {lang}...")

        # Find the language dict in i18n.py
        lang_pattern = f'"{lang}": {{'
        lang_start = content.find(lang_pattern)
        if lang_start == -1:
            print(f"  Could not find '{lang}' in i18n.py")
            continue

        # Find the closing of this language dict
        brace_count = 0
        pos = lang_start
        in_lang = False
        insert_pos = None
        for i, ch in enumerate(content[lang_start:]):
            if ch == '{':
                brace_count += 1
                in_lang = True
            elif ch == '}':
                brace_count -= 1
                if brace_count == 0 and in_lang:
                    insert_pos = lang_start + i
                    break

        if insert_pos is None:
            print(f"  Could not find end of '{lang}' dict")
            continue

        # Check if rules already exist
        if f'"rule_1":' in content[lang_start:insert_pos]:
            print(f"  Rules already exist for {lang}, skipping")
            continue

        # Generate rules string
        rules_str = ""
        for key, value in rules.items():
            # Escape quotes in value
            escaped = value.replace('\\', '\\\\').replace('"', '\\"')
            rules_str += f'        "{key}": "{escaped}",\n'

        # Insert before the closing }
        content = content[:insert_pos] + rules_str + content[insert_pos:]
        print(f"  Added {len(rules)} rules")

    # Write updated content
    with open("i18n.py", "w") as f:
        f.write(content)

    print("Done!")

if __name__ == "__main__":
    inject_rules()
