edgeparse_core/models/
list.rs1use serde::{Deserialize, Serialize};
4
5use super::bbox::BoundingBox;
6use super::content::ContentElement;
7use super::enums::SemanticType;
8use super::table::TableTokenRow;
9
10#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct PDFList {
13 pub bbox: BoundingBox,
15 pub index: Option<u32>,
17 pub level: Option<String>,
19 pub list_items: Vec<ListItem>,
21 pub numbering_style: Option<String>,
23 pub common_prefix: Option<String>,
25 pub previous_list_id: Option<u64>,
27 pub next_list_id: Option<u64>,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct ListItem {
34 pub bbox: BoundingBox,
36 pub index: Option<u32>,
38 pub level: Option<String>,
40 pub label: ListLabel,
42 pub body: ListBody,
44 pub label_length: usize,
46 pub contents: Vec<ContentElement>,
48 pub semantic_type: Option<SemanticType>,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct ListLabel {
55 pub bbox: BoundingBox,
57 pub content: Vec<TableTokenRow>,
59 pub semantic_type: Option<SemanticType>,
61}
62
63#[derive(Debug, Clone, Serialize, Deserialize)]
65pub struct ListBody {
66 pub bbox: BoundingBox,
68 pub content: Vec<TableTokenRow>,
70 pub semantic_type: Option<SemanticType>,
72}
73
74#[derive(Debug, Clone)]
76pub struct ListInterval {
77 pub list_indexes: Vec<usize>,
79 pub list_item_infos: Vec<ListItemInfo>,
81 pub numbering_style: Option<String>,
83 pub number_of_columns: Option<usize>,
85}
86
87#[derive(Debug, Clone)]
89pub struct ListItemInfo {
90 pub label_text: String,
92 pub sequence_value: i64,
94}