#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from __future__ import annotations

import html as html_std
import re
from pathlib import Path

SRC_DIR = Path("/home/snapat/public_html/includes/guides/articles/__src__")
OUT_DIR = Path("/home/snapat/public_html/includes/guides/articles")


def snapty_guide_word_count(body_html: str) -> int:
    text = re.sub(r"<[^>]*>", "", body_html)
    text = html_std.unescape(text)
    text = re.sub(r"\s+", " ", text.strip())

    return 0 if text == "" else len(text.split(" "))


def php_escape_sq(s: str) -> str:
    return s.replace("\\", "\\\\").replace("'", "\\'")


def emit(slug: str, order: int, title: str, description: str, body_html: str) -> None:
    body_html_compact = "".join(body_html.splitlines())

    wc = snapty_guide_word_count(body_html_compact)

    php = "".join(
        [
            "<?php\n",
            "declare(strict_types=1);\n",
            "return [\n",
            f"    'slug' => '{slug}',\n",
            f"    'order' => {order},\n",
            "    'updated' => '2026-05-19',\n",
            f"    'title' => '{php_escape_sq(title)}',\n",
            f"    'description' => '{php_escape_sq(description)}',\n",
            f"    'body' => '{php_escape_sq(body_html_compact)}',\n",
            "];\n",
        ]
    )

    outfile = OUT_DIR / f"{slug}.php"

    outfile.write_text(php, encoding="utf-8")

    

    print(f"{slug}: {wc}")

def main() -> None:
    SRC_DIR.mkdir(parents=True, exist_ok=True)
    specs: list[tuple[str, int, str, str, str]] = [
        (
            "vip-100-members",
            1,
            "VIP وشبكة الـ100 عضواً: تعزيز الظهور على سناب شات بحكمة",
            "خدمات تنظيم دعم لقصصك عبر مجموعات مهتمة، مع تنبيهات ضد طلب كلمة المرور وضمانات النجوم الوهمية وبدائل أكثر أمناً لتنمية الظهور.",
            "vip-100-members.html",
        ),
        (
            "snapchat-lenses",
            2,
            "عدسات سناب شات وأساسيات Lens Studio لمن يبتكر تجارب سريعة",
            "لمحة عن أثر العدسات وفلسفة تجربة الكاميرا، وخطوط أولى في Lens Studio، مع تحذيرات أمنية ورفض ادعاءات طرف ثالث حول ظهور مضمون.",
            "snapchat-lenses.html",
        ),
        (
            "snapchat-developer",
            3,
            "أن تصبح مطوِّر تجارب سناب عبر Lens Studio وSnap Kit",
            "مسار عملي لفهم عدسات الأجهزة وحزمة التطوير دون ادعاءات سريكة، وبيانات حساب لا تُسلّم خارج التدفق الرسمي.",
            "snapchat-developer.html",
        ),
        (
            "snapchat-influencer",
            4,
            "مسار تأثيري على سناب شات واستراتيجية محتوى مستدامة",
            "دليل واقعي لمبدئي وفِرق أكبر لتنظيم النيتش، والإيقاع، والجودة أمام مهام طرف ثالث وبائعين يعدون نجوماً ونقاطاً مضمونة خارج الإجراء الرسمي.",
            "snapchat-influencer.html",
        ),
        (
            "account-security",
            5,
            "أمان حساب سناب شات: مصادقتان وتصيد وإدارة جلسات بلا مفاجآت سيئة",
            "أفضل العادات اليومية لحماية الدخول ومراجعة نشاط حساب وتجنب المواقع الموعودة برفع نقاط ومستوى فوراً بثمن مخفَّض خارج القنوات الرسمية.",
            "account-security.html",
        ),
        (
            "third-party-missions",
            6,
            "مهام ومواقع طرف ثالث ومكافآت قصيرة الأمد: لماذا قد تصبح أكبر من مشكلتها",
            "تحليل لأدوات المهمات الخارجية وإغراء الأرقام والمؤشرات الظّاهرة وبدائل تفاعل عضوية مع التزام SNAPAT بعدم طلب كلمة المرور.",
            "third-party-missions.html",
        ),
        (
            "black-star",
            7,
            "النجم الأسود في سناب شات: دلالات شائعة وحدهم حقيقة تجربتك اليومية",
            "قراءة رصينة لرمز ظهور مختلف في السياقات العامّة وحول صانعي المحتوى وعدم الانجرار خلف وعود بتفعيل ظاهر خارج الإطار الرسمي وبثمن طرف ثالث.",
            "black-star.html",
        ),
        (
            "gold-star",
            8,
            "نجم ذهبي وحدود التحقق في سناب: تواضع قبل الفهم ثم تجربك على أرض الواقع",
            "ما الذي يمكن أن تعنيه بعض إشارات التحقق وفق ظهورك في التطبيق ومتى تشك في من يعرض ذلك كسلعة قابلة للشراء ومضمونة بعيداً عن قنوات سناب المعتادة.",
            "gold-star.html",
        ),
        (
            "snap-groups",
            9,
            "مجتمعات وأكواز على سناب: بناء مجموعات قصصية قوّية داخل التطبيق وبهدوء خارجه أيضاً",
            "قواعد قيادة مجموعة مهتمّة وحفظ وقت الأعضاء وربط مجموعات خارج المنصّة دون تهديد حسابكم بأدوات مهام طرف ثالث مع وعود تأثير مضاعف ومزيفة.",
            "snap-groups.html",
        ),
        (
            "snap-score-level",
            10,
            "نقاط وأرقام ظاهرة في سناب: كيف تقرأها دون الانزلاق لسلاسل احتيالية",
            "تفسير واقعي لمؤشرات النشاط بما يتلاءم وتجربتك المتكررة وحمايتك أمام مهام طرف ثالث تعد بتعجيل مضاعفات ليست وفق الآليات الرسمية مهما ادّعت واجهتهم ذلك.",
            "snap-score-level.html",
        ),
    ]

    for slug, order, title, description, fname in specs:
        body_path = SRC_DIR / fname
        
        emit(slug, order, title, description, body_path.read_text(encoding="utf-8"))


if __name__ == "__main__":
    main()
