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>),
}

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

impl<'a> TextToken<'a>[src]

pub fn as_scalar(&self) -> Option<Scalar<'a>>[src]

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

impl<'a> Clone for TextToken<'a>[src]

impl<'a> Debug for TextToken<'a>[src]

impl<'a> PartialEq<TextToken<'a>> for TextToken<'a>[src]

impl<'a> StructuralPartialEq for TextToken<'a>[src]

Auto Trait Implementations

impl<'a> RefUnwindSafe for TextToken<'a>

impl<'a> Send for TextToken<'a>

impl<'a> Sync for TextToken<'a>

impl<'a> Unpin for TextToken<'a>

impl<'a> UnwindSafe for TextToken<'a>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.