texlang/parse/
variable.rs1use crate::prelude as txl;
2use crate::traits::*;
3use crate::*;
4
5pub struct OptionalEquals;
7
8impl Parsable for OptionalEquals {
9 fn parse_impl<S: TexlangState>(input: &mut vm::ExpandedStream<S>) -> txl::Result<Self> {
10 parse_optional_equals(input)?;
12 Ok(OptionalEquals {})
13 }
14}
15
16pub struct OptionalEqualsUnexpanded;
18
19impl Parsable for OptionalEqualsUnexpanded {
20 fn parse_impl<S: TexlangState>(input: &mut vm::ExpandedStream<S>) -> txl::Result<Self> {
21 parse_optional_equals(input.unexpanded())?;
22 Ok(OptionalEqualsUnexpanded {})
23 }
24}
25
26fn parse_optional_equals<S: TexlangState, I: TokenStream<S = S>>(input: &mut I) -> txl::Result<()> {
28 while let Some(found_equals) = get_optional_element![
29 input,
30 token::Value::Other('=') => true,
31 token::Value::Space(_) => false,
32 ] {
33 if found_equals {
34 break;
35 }
36 }
37 while get_optional_element![
41 input,
42 token::Value::Space(_) => (),
43 ]
44 .is_some()
45 {}
46 Ok(())
47}