Parses (key value) style options into a map of String --> [`Value`]. This method supports keywords as key names as well as multiple value types such as Numbers as well as Strings.
(&mut self)
| 1158 | /// This method supports keywords as key names as well as multiple |
| 1159 | /// value types such as Numbers as well as Strings. |
| 1160 | fn parse_value_options(&mut self) -> Result<Vec<(String, Value)>, DataFusionError> { |
| 1161 | let mut options = vec![]; |
| 1162 | self.parser.expect_token(&Token::LParen)?; |
| 1163 | |
| 1164 | loop { |
| 1165 | let key = self.parse_option_key()?; |
| 1166 | let value = self.parse_option_value()?; |
| 1167 | options.push((key, value)); |
| 1168 | let comma = self.parser.consume_token(&Token::Comma); |
| 1169 | if self.parser.consume_token(&Token::RParen) { |
| 1170 | // Allow a trailing comma, even though it's not in standard |
| 1171 | break; |
| 1172 | } else if !comma { |
| 1173 | return self.expected( |
| 1174 | "',' or ')' after option definition", |
| 1175 | &self.parser.peek_token(), |
| 1176 | ); |
| 1177 | } |
| 1178 | } |
| 1179 | Ok(options) |
| 1180 | } |
| 1181 | } |
| 1182 | |
| 1183 | #[cfg(test)] |
no test coverage detected