# manual_agregator/parser/handlers/bool.py
from .base import FieldHandler
from ..utils import resolve_missing_bool, resolve_missing_text

class BoolHandler(FieldHandler):
    def parse(self, field_name, config, soup, main_values, selectors, extracted):
        if "rawOverride" in config:
            raw = config["rawOverride"]
        else:
            sel = config.get("selector")
            el = soup.select_one(sel) if sel else None
            raw = el.get_text(strip=True) if el else resolve_missing_text(config)

        val = (raw or "").strip().lower()
        true_opts = [o.lower() for o in config.get("trueOptions", ["tak","yes","true","1"])]
        false_opts = [o.lower() for o in config.get("falseOptions", ["nie","no","false","0"])]
        if val in true_opts: 
            return True
        if val in false_opts: 
            return False
        return resolve_missing_bool(config)
