1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
#[cfg(test)] #[macro_use] mod test_macros; pub mod blocks; pub mod html; pub mod inlines; pub mod macros; mod input; mod parse; mod parsing_mode; mod utils; use crate::blocks::{Context, ParseBlock}; use crate::input::Input; use crate::parse::{Parse, ParseInfallible}; use crate::utils::Indents; pub use detached_str::{Str, StrSlice, StrSliceIndex}; use unidok_repr::ir::blocks::AnnBlockIr; use unidok_repr::ir::IrState; use unidok_repr::IntoIR; pub struct DocIr<'a> { pub blocks: Vec<AnnBlockIr<'a>>, pub state: IrState<'a>, } pub fn parse(s: &str) -> DocIr { let mut input = Input::new(s); let parsed = input.parse(ParseBlock::new_global()).unwrap(); debug_assert!(input.is_empty()); let blocks = parsed.into_ir(s, input.state_mut()); let state = IrState::new(s, input.into_state()); DocIr { blocks, state } }