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
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