use super::{Builder, Refusal, Tag};
use crate::markup::Profile;
impl<P: Profile> Builder<'_, '_, P> {
pub(super) fn select_start(&mut self, tag: &Tag) -> Result<(), Refusal> {
if !self.in_scope(&["select"], &[]) {
return Ok(());
}
match tag.name {
"select" => Err(Refusal::IgnoredTag(tag.span)),
"input" => Err(Refusal::ImpliedEnd(tag.span)),
"option" => {
self.implied_ends(Some("optgroup"), tag.event)?;
if self.in_scope(&["option"], &[]) {
return Err(Refusal::ImpliedEnd(tag.span));
}
Ok(())
}
"optgroup" | "hr" => {
self.implied_ends(None, tag.event)?;
if self.in_scope(&["option", "optgroup"], &[]) {
return Err(Refusal::ImpliedEnd(tag.span));
}
Ok(())
}
_ => Err(Refusal::UnsupportedSelectContent(tag.span)),
}
}
}