#!/usr/bin/env python3
"""TSLaw: potong bagian-bagian blok dari halaman lain (hero, kartu, penutup) untuk menyusun ulang beranda.
Hasil disimpan ke berkas supaya bisa ditinjau dulu sebelum ditulis."""
import json, os, re

BASE = "/home/mantapman/.hermes/profiles/atun/workspace/tslaw_pemulihan/salinan"
tentang = open(f"{BASE}/834_tentang.txt").read()


def potong_blok(teks, mulai, tipe):
    """Ambil satu blok lengkap (termasuk anaknya) dari posisi 'mulai'."""
    pola = re.compile(rf"<!-- (/?)({re.escape(tipe)})(\s[^>]*?)?\s*(/?)-->", re.S)
    kedalaman = 0
    pos = mulai
    while True:
        m = pola.search(teks, pos)
        if not m:
            return teks[mulai:]
        # pastikan hanya blok dengan tipe yang sama yang dihitung
        tag = m.group(2)
        if tag != tipe:
            pos = m.end()
            continue
        if m.group(1):  # penutup
            kedalaman -= 1
            if kedalaman == 0:
                return teks[mulai:m.end()]
        elif m.group(4):  # self-closing
            if kedalaman == 0:
                return teks[mulai:m.end()]
        else:
            kedalaman += 1
        pos = m.end()


# ── hero = container pertama
i = tentang.find("<!-- wp:spectra/container")
hero = potong_blok(tentang, i, "wp:spectra/container")
print(f"hero: {len(hero)} char")

# ── bagian setelah hero = container kedua (Tentang Kami + Visi/Misi/Value)
i2 = tentang.find("<!-- wp:spectra/container", i + len(hero))
sec2 = potong_blok(tentang, i2, "wp:spectra/container")
print(f"bagian 2 (Tentang Kami + Visi/Misi/Value): {len(sec2)} char")

# ── kartu Visi (satu kolom) sebagai pola kartu
i3 = sec2.find("<!-- wp:spectra/container", sec2.find("Visi") - 400)
kartu = potong_blok(sec2, i3, "wp:spectra/container") if i3 > 0 else ""
print(f"kartu (pola kolom Visi): {len(kartu)} char")

os.makedirs(f"{BASE}/potongan", exist_ok=True)
open(f"{BASE}/potongan/hero.txt", "w").write(hero)
open(f"{BASE}/potongan/bagian2.txt", "w").write(sec2)
open(f"{BASE}/potongan/kartu.txt", "w").write(kartu)

print("\n=== isi teks hero ===")
for m in re.finditer(r'"text":"([^"]{3,200})"', hero):
    print("   -", m.group(1)[:150])
print("\n=== isi teks bagian 2 ===")
for m in re.finditer(r'"text":"([^"]{3,200})"', sec2):
    print("   -", m.group(1)[:150])
print("\n=== isi teks kartu ===")
for m in re.finditer(r'"text":"([^"]{3,200})"', kartu):
    print("   -", m.group(1)[:150])
print("\n=== atribut penting hero ===")
print("   tagName:", re.findall(r'"tagName":"([a-z0-9]+)"', hero))
print("   gambar  :", re.findall(r'"url":"([^"]+)"', hero)[:3])
print("   tombol  :", re.findall(r'"text":"([^"]*)"[^}]*"url":"([^"]*)"', hero)[:3])
