MCPcopy Create free account
hub / github.com/andreiverse/gorilla / tokenize_format_string

Function tokenize_format_string

src/pattern.rs:97–153  ·  view source on GitHub ↗
(input: &str)

Source from the content-addressed store, hash-verified

95}
96
97pub fn tokenize_format_string(input: &str) -> Vec<Token> {
98 let mut result: Vec<Token> = vec![];
99 let mut inside_brackets = false;
100
101 let mut cur = String::new();
102
103 for character in input.chars() {
104 if character == '{' {
105 if inside_brackets {
106 cur.push('{');
107 }
108 if !cur.is_empty() {
109 if let Some(Token::String(s)) = result.last_mut() {
110 s.push_str(&cur);
111 } else {
112 result.push(Token::String(cur.clone()));
113 }
114 cur.clear();
115 }
116 inside_brackets = true;
117 } else if character == '}' {
118 if !inside_brackets {
119 cur.push('}');
120 continue;
121 }
122
123 inside_brackets = false;
124
125 // if the contains for the brackets aren't valid we will just consider
126 // the contents including the brackets to be a string
127 if let Some(token) = parse_inner_brackets(&cur) {
128 result.push(token);
129 } else if let Some(Token::String(s)) = result.last_mut() {
130 s.push_str(&format!("{{{}}}", cur));
131 } else {
132 result.push(Token::String(format!("{{{}}}", cur)));
133 }
134 cur.clear();
135 } else {
136 cur.push(character)
137 };
138 }
139
140 if inside_brackets {
141 cur.push('{');
142 }
143
144 if let Some(Token::String(s)) = result.last_mut() {
145 s.push_str(&cur);
146 } else {
147 result.push(Token::String(cur));
148 }
149
150 // for token in &result{ println!("(debug) tokenized: {}", token) }
151
152 result
153}
154

Callers 12

mainFunction · 0.85
from_stringMethod · 0.85
tokenize_string_repeatFunction · 0.85
tokenize_string_stringFunction · 0.85
tokenize_execute_lettersFunction · 0.85
tokenize_execute_asciiFunction · 0.85
sample_size_calculationFunction · 0.85
tokenize_edge_casesFunction · 0.85

Calls 1

parse_inner_bracketsFunction · 0.85