diff options
Diffstat (limited to 'src/content')
-rw-r--r-- | src/content/flow.rs | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/content/flow.rs b/src/content/flow.rs index 546712f..0d3ede0 100644 --- a/src/content/flow.rs +++ b/src/content/flow.rs @@ -33,12 +33,13 @@ use crate::util::{ normalize_identifier::normalize_identifier, span::{from_exit_event, serialize}, }; +use std::collections::HashSet; /// Turn `codes` as the flow content type into events. -pub fn flow(parse_state: &ParseState, point: Point, index: usize) -> Vec<Event> { +pub fn flow(parse_state: &mut ParseState, point: Point, index: usize) -> Vec<Event> { let mut tokenizer = Tokenizer::new(point, index, parse_state); - tokenizer.push(&parse_state.codes, Box::new(start), true); + let mut next_definitions: HashSet<String> = HashSet::new(); let mut index = 0; @@ -48,15 +49,14 @@ pub fn flow(parse_state: &ParseState, point: Point, index: usize) -> Vec<Event> if event.event_type == EventType::Exit && event.token_type == TokenType::DefinitionLabelString { - let id = normalize_identifier( + next_definitions.insert(normalize_identifier( serialize( &parse_state.codes, &from_exit_event(&tokenizer.events, index), false, ) .as_str(), - ); - println!("to do: use definition identifier {:?}", id); + )); } index += 1; @@ -64,6 +64,8 @@ pub fn flow(parse_state: &ParseState, point: Point, index: usize) -> Vec<Event> let mut result = (tokenizer.events, false); + parse_state.definitions = next_definitions; + while !result.1 { result = subtokenize(result.0, parse_state); } |