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
//! Parsing lines of `Ink` content.
//!
//! While [`InternalLine`][crate::line::InternalLine] and
//! [`InternalChoice`][crate::line::InternalChoice] are the basic data of all lines in a story,
//! the main focus of this module is the [`ParsedLineKind`][crate::line::ParsedLineKind] object.
//!
//! This is because to construct the branching tree of story content we require information
//! about which nested level every choice and gather point is found at. `ParsedLineKind` is
//! marked up with this information along with the regular internal choice and line data.
//!
//! After constructing the node tree the information about levels is discarded.
//! Thus `ParsedLineKind` is a temporary object, used only while parsing an `Ink` story.

mod alternative;
mod choice;
mod condition;
mod gather;
mod kind;
mod line;
mod utils;
mod variable;

pub(self) use alternative::parse_alternative;
pub(self) use choice::parse_choice;
pub(self) use condition::{parse_choice_condition, parse_line_condition};
pub(self) use gather::parse_gather;
pub use kind::{parse_line, ParsedLineKind};
pub(self) use kind::{parse_markers_and_text, split_at_divert_marker};
pub use line::{parse_chunk, parse_internal_line, validate_address};
pub(self) use utils::{
    split_line_at_separator_braces, split_line_at_separator_parenthesis,
    split_line_into_groups_braces, LinePart,
};
pub use variable::parse_variable;