ftml/parsing/rule/impls/block/blocks/
superscript.rs1use super::prelude::*;
22
23pub const BLOCK_SUPERSCRIPT: BlockRule = BlockRule {
24 name: "block-superscript",
25 accepts_names: &["sup", "super", "superscript"],
26 accepts_star: false,
27 accepts_score: false,
28 accepts_newlines: false,
29 parse_fn,
30};
31
32fn parse_fn<'r, 't>(
33 parser: &mut Parser<'r, 't>,
34 name: &'t str,
35 flag_star: bool,
36 flag_score: bool,
37 in_head: bool,
38) -> ParseResult<'r, 't, Elements<'t>> {
39 debug!("Parsing superscript block (name '{name}', in-head {in_head})");
40 assert!(!flag_star, "Superscript doesn't allow star flag");
41 assert!(!flag_score, "Superscript doesn't allow score flag");
42 assert_block_name(&BLOCK_SUPERSCRIPT, name);
43
44 let arguments = parser.get_head_map(&BLOCK_SUPERSCRIPT, in_head)?;
45
46 let (elements, errors, paragraph_safe) =
48 parser.get_body_elements(&BLOCK_SUPERSCRIPT, false)?.into();
49
50 let element = Element::Container(Container::new(
51 ContainerType::Superscript,
52 elements,
53 arguments.to_attribute_map(parser.settings()),
54 ));
55
56 ok!(paragraph_safe; element, errors)
57}