yarnspinner_runtime 0.8.0

Runtime / VM for Yarn Spinner for Rust, the friendly tool for writing game dialogue
Documentation
use crate::markup::TRIM_WHITESPACE_PROPERTY;
use crate::prelude::*;
use core::error::Error;
use core::fmt;

#[allow(missing_docs)]
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "bevy", derive(Reflect))]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "bevy", reflect(Debug, PartialEq, Hash))]
#[cfg_attr(
    all(feature = "bevy", feature = "serde"),
    reflect(Serialize, Deserialize)
)]
pub enum MarkupParseError {
    TrimWhitespaceAttributeIsNotBoolean {
        input: String,
        name: Option<String>,
        position: usize,
        type_: String,
    },
    UnexpectedWhitespaceEnd {
        input: String,
    },
    UnexpectedEndOfLine {
        input: String,
    },
    UnexpectedCharacter {
        input: String,
        character: char,
    },
    UnmatchedCloseMarker {
        input: String,
        name: String,
        position: usize,
    },
    NoIdentifierFound {
        input: String,
    },
    NoStringFound {
        input: String,
    },
    InvalidEscapeSequence {
        input: String,
    },
    UnterminatedMarker {
        input: String,
        name: String,
        position: usize,
    },
}

impl Error for MarkupParseError {}

impl fmt::Display for MarkupParseError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        use MarkupParseError::*;
        match self {
            TrimWhitespaceAttributeIsNotBoolean {
                input,
                name,
                position,
                type_,
            } => write!(
                f,
                "Error parsing line {input}: attribute {name:?} at position {position} has a {type_} property \"{TRIM_WHITESPACE_PROPERTY}\" - this property is required to be a boolean value."
            ),
            UnexpectedWhitespaceEnd { input } => write!(
                f,
                "Line ended when expecting whitespace instead: \"{input}\""
            ),
            UnexpectedEndOfLine { input } => write!(
                f,
                "Unexpected end of line inside markup in line \"{input}\""
            ),
            UnexpectedCharacter { input, character } => write!(
                f,
                "Expected a {character} inside markup in line \"{input}\""
            ),
            UnmatchedCloseMarker {
                input,
                name,
                position,
            } => write!(
                f,
                "Unexpected close marker {name} at position {position} in line {input}"
            ),
            NoIdentifierFound { input } => write!(
                f,
                "Expected an identifier inside markup in line \"{input}\""
            ),
            NoStringFound { input } => {
                write!(f, "Expected a string inside markup in line \"{input}\"")
            }
            InvalidEscapeSequence { input } => {
                write!(f, "Invalid escaped character in line \"{input}\"")
            }
            UnterminatedMarker {
                input,
                name,
                position,
            } => write!(
                f,
                "Unterminated marker {name} in line {input} at position {position}"
            ),
        }
    }
}