Enum jomini::TextToken[][src]

pub enum TextToken<'a> {
    Array(usize),
    Object(usize),
    HiddenObject(usize),
    Unquoted(Scalar<'a>),
    Quoted(Scalar<'a>),
    Parameter(Scalar<'a>),
    UndefinedParameter(Scalar<'a>),
    Operator(Operator),
    End(usize),
    Header(Scalar<'a>),
}
Expand description

Represents a valid text value

Variants

Array(usize)

Index of the TextToken::End that signifies this array’s termination

Object(usize)

Index of the TextToken::End that signifies this objects’s termination

Typically in the tape the value immediately follows a key token. However, this is not guaranteed so always check if the end has been reached before trying to decode a value. There are two main situations where this is not guaranteed:

  • A non-equal operator (eg: a > b will be parsed to 3 instead of 2 tokens)
  • Array trailers (eg: a = {10} 0 1 2)
HiddenObject(usize)

Index of the TextToken::End that signifies this objects’s termination

A hidden object occurs where the first element is part of an array:

a = { 10 a=b c=d}

In the above example, a and c would be part of the hidden object

Unquoted(Scalar<'a>)

Extracted unquoted scalar value

Quoted(Scalar<'a>)

Extracted quoted scalar value

Parameter(Scalar<'a>)

A parameter scalar

Only seen so far in EU4. From the patch notes:

Scripted triggers or effects now support conditional compilation on arguments provided to them. You can now check for if an argument is defined or not and make the script look entirely different based on that. Syntax is [[var_name] code here ] for if variable is defined

generate_advisor = { [[scaled_skill] if = { } ] }
UndefinedParameter(Scalar<'a>)

An undefined parameter, see Parameter variant for more info.

Syntax for undefined variable:

[[!var_name] code here ]
Operator(Operator)

A present, but non-equal operator token

End(usize)

Index of the start of this object

Header(Scalar<'a>)

The header token of the subsequent scalar. For instance, given

color = rgb { 100 200 50 }

rgb would be a the header followed by a 3 element array

Implementations

Returns the scalar if the token contains a scalar

use jomini::{Scalar, TextToken};
assert_eq!(TextToken::Unquoted(Scalar::new(b"abc")).as_scalar(), Some(Scalar::new(b"abc")));
assert_eq!(TextToken::Quoted(Scalar::new(b"abc")).as_scalar(), Some(Scalar::new(b"abc")));
assert_eq!(TextToken::Header(Scalar::new(b"rgb")).as_scalar(), Some(Scalar::new(b"rgb")));
assert_eq!(TextToken::Object(2).as_scalar(), None);

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.