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
Auto Trait Implementations
impl<'a> RefUnwindSafe for TextToken<'a>
impl<'a> UnwindSafe for TextToken<'a>
Blanket Implementations
Mutably borrows from an owned value. Read more