# manual_agregator/parser/handlers/bool_key.py
from .base import FieldHandler
from ..utils import resolve_missing_bool

class BoolKeyHandler(FieldHandler):
    def parse(self, field_name, config, soup, main_values, selectors, extracted):
        if "rawOverride" in config:
            content = (config["rawOverride"] or "").lower()
        else:
            sel = config.get("selector")
            el = soup.select_one(sel) if sel else None
            if not el:
                return resolve_missing_bool(config)
            content = el.get_text(" ", strip=True).lower()

        if any(opt.lower() in content for opt in config.get("trueOptions", [])):
            return True
        if any(opt.lower() in content for opt in config.get("falseOptions", [])):
            return False
        return resolve_missing_bool(config)
