use std::sync::OnceLock;
use regex::Regex;
use crate::detail::token::{is_free_token, Token};
use crate::element::{Element, ElementKind};
fn pattern() -> &'static Regex {
static RE: OnceLock<Regex> = OnceLock::new();
RE.get_or_init(|| {
crate::detail::regex_util::compile(
r"^[★☆◆◇■□▲△●○※\*]*(?:(?:[0-9]{1,2}|[一二三四五六七八九十]{1,3})月)?新番[★☆◆◇■□▲△●○※\*]*$",
)
})
}
pub(super) fn parse_broadcast(tokens: &mut [Token]) -> Vec<Element> {
let mut elements = Vec::new();
for token in tokens
.iter_mut()
.filter(|t| is_free_token(t) && pattern().is_match(t.value))
{
token.element_kind = Some(ElementKind::Other);
elements.push(Element {
kind: ElementKind::Other,
value: token.value.to_string(),
position: token.position,
});
}
elements
}