libhanzzok/core/plugin/list/
unordered_list.rs1use serde_hzdata::HzdataValue;
2
3use crate::{
4 api::BlockConstructorRule,
5 codegen::{Context, HtmlNode, Walker},
6 core::ast::{BlockConstructorForm, InlineObjectNode},
7};
8
9pub struct UnorderedListBlockConstructorRule;
10
11impl BlockConstructorRule for UnorderedListBlockConstructorRule {
12 fn name(&self) -> String {
13 "-".to_owned()
14 }
15
16 fn form(&self) -> crate::core::ast::BlockConstructorForm {
17 BlockConstructorForm::Leading
18 }
19
20 fn apply(
21 &self,
22 context: &mut Context,
23 _: Vec<InlineObjectNode>,
24 _: Option<HzdataValue>,
25 multiline_text: Vec<Vec<InlineObjectNode>>,
26 ) -> HtmlNode {
27 HtmlNode::create_tag(
28 "ul",
29 &multiline_text
30 .iter()
31 .map(|line| HtmlNode::create_tag("li", &context.walk(line)))
32 .collect::<Vec<_>>(),
33 )
34 }
35}