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

Tuple Fields of Array

0: usize
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)

Tuple Fields of Object

0: usize
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

Tuple Fields of HiddenObject

0: usize
Unquoted(Scalar<'a>)

Extracted unquoted scalar value

Tuple Fields of Unquoted

0: Scalar<'a>
Quoted(Scalar<'a>)

Extracted quoted scalar value

Tuple Fields of Quoted

0: Scalar<'a>
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 = { } ] }

Tuple Fields of Parameter

0: Scalar<'a>
UndefinedParameter(Scalar<'a>)

An undefined parameter, see Parameter variant for more info.

Syntax for undefined variable:

[[!var_name] code here ]

Tuple Fields of UndefinedParameter

0: Scalar<'a>
Operator(Operator)

A present, but non-equal operator token

Tuple Fields of Operator

0: Operator
End(usize)

Index of the start of this object

Tuple Fields of End

0: usize
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

Tuple Fields of Header

0: Scalar<'a>

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.