libhanzzok/core/plugin/list/
unordered_list.rs

1use 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}