use crate::ast::TableAlign;
use crate::block::ir::{Ir, IrItem, IrRow, IrSeg};
use crate::pos::{Segment, Span};
pub(super) enum OpenContainer {
Quote {
children: Vec<Ir>,
start: u32,
end: u32,
},
List {
items: Vec<IrItem>,
ordered: bool,
marker: u8,
start: u32,
},
Item {
children: Vec<Ir>,
marker: Span,
padding: u8,
content_indent: usize,
start: u32,
end: u32,
},
Footnote {
children: Vec<Ir>,
label: Span,
content_indent: usize,
start: u32,
end: u32,
},
Directive {
children: Vec<Ir>,
fence_len: u32,
content_indent: usize,
opening: Span,
closing: Option<Span>,
end: u32,
},
}
pub(super) enum Leaf {
Paragraph {
segments: Vec<IrSeg>,
last_deep: bool,
},
IndentedCode {
lines: Vec<Segment>,
pending: Vec<Segment>,
start: u32,
end: u32,
},
FencedCode {
fence: u8,
len: u32,
indent: usize,
info: Option<Span>,
lines: Vec<Segment>,
start: u32,
end: u32,
},
Html {
kind: u8,
lines: Vec<Segment>,
trailing_newline: bool,
start: u32,
end: u32,
},
Table {
align: Vec<TableAlign>,
rows: Vec<IrRow>,
start: u32,
end: u32,
},
}
pub(super) enum StackMatch {
Prefixes(usize),
DirectiveClose { index: usize, fence: Span },
}
pub(super) enum Continuation {
Consumed,
Open,
}
#[derive(Default)]
pub struct BlankLines {
pub all: Vec<Span>,
pub loosening: Vec<Span>,
}