tokens: add a more advanced tokens parser

Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
William Casarin
2025-01-21 13:12:07 -08:00
parent efa5b7e32f
commit 00ef3082f3
3 changed files with 304 additions and 12 deletions

View File

@@ -104,20 +104,23 @@ impl AddColumnRoute {
Self::ExternalIndividual => &["column", "external_individual_selection"],
Self::Hashtag => &["column", "hashtag"],
Self::Algo(AddAlgoRoute::Base) => &["column", "algo_selection"],
Self::Algo(AddAlgoRoute::LastPerPubkey) => &["column", "algo_selection", "last_per_pubkey"],
// NOTE!!! When adding to this, update the parser for TokenSerializable below
Self::Algo(AddAlgoRoute::LastPerPubkey) => {
&["column", "algo_selection", "last_per_pubkey"]
} // NOTE!!! When adding to this, update the parser for TokenSerializable below
}
}
}
impl TokenSerializable for AddColumnRoute {
fn serialize(&self, writer: &mut TokenWriter) {
fn serialize_tokens(&self, writer: &mut TokenWriter) {
for token in self.tokens() {
writer.write_token(token);
}
}
fn parse<'a>(parser: &mut TokenParser<'a>) -> Result<Self, ParseError<'a>> {
fn parse_from_tokens<'a>(parser: &mut TokenParser<'a>) -> Result<Self, ParseError<'a>> {
parser.peek_parse_token("column")?;
TokenParser::alt(
parser,
&[