"""Sentimento balas (-1 .. 1).

VADER puikiai veikia anglų k.; kitoms kalboms naudojam TextBlob (kuris
viduje gali bandyti vertimą) arba paprasčiausiai grąžinam None.
"""

from __future__ import annotations

from typing import Optional

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer

from .text_cleaner import detect_language

_vader = SentimentIntensityAnalyzer()


def score_sentiment(text: str, language: Optional[str] = None) -> Optional[float]:
    if not text or len(text.strip()) < 2:
        return None

    lang = language or detect_language(text)

    if lang and lang.startswith("en"):
        return float(_vader.polarity_scores(text)["compound"])

    # Bandysim TextBlob (turi ribotą daugiakalbį palaikymą per Google translate
    # – jei neveikia, gražiai gražinam None)
    try:
        from textblob import TextBlob  # noqa: WPS433
        tb = TextBlob(text)
        return float(tb.sentiment.polarity)
    except Exception:
        return None
