(&mut self)
| 2155 | } |
| 2156 | |
| 2157 | fn parse_format(&mut self) -> Result<Format<Raw>, ParserError> { |
| 2158 | let format = if self.parse_keyword(AVRO) { |
| 2159 | self.expect_keyword(USING)?; |
| 2160 | Format::Avro(self.parse_avro_schema()?) |
| 2161 | } else if self.parse_keyword(PROTOBUF) { |
| 2162 | Format::Protobuf(self.parse_protobuf_schema()?) |
| 2163 | } else if self.parse_keyword(REGEX) { |
| 2164 | let regex = self.parse_literal_string()?; |
| 2165 | Format::Regex(regex) |
| 2166 | } else if self.parse_keyword(CSV) { |
| 2167 | self.expect_keyword(WITH)?; |
| 2168 | let columns = if self.parse_keyword(HEADER) || self.parse_keyword(HEADERS) { |
| 2169 | CsvColumns::Header { |
| 2170 | names: self.parse_parenthesized_column_list(Mandatory)?, |
| 2171 | } |
| 2172 | } else { |
| 2173 | let n_cols = self.parse_literal_uint()?; |
| 2174 | self.expect_keyword(COLUMNS)?; |
| 2175 | CsvColumns::Count(n_cols) |
| 2176 | }; |
| 2177 | let delimiter = if self.parse_keywords(&[DELIMITED, BY]) { |
| 2178 | let s = self.parse_literal_string()?; |
| 2179 | match s.len() { |
| 2180 | 1 => Ok(s.chars().next().unwrap()), |
| 2181 | _ => self.expected(self.peek_pos(), "one-character string", self.peek_token()), |
| 2182 | }? |
| 2183 | } else { |
| 2184 | ',' |
| 2185 | }; |
| 2186 | Format::Csv { columns, delimiter } |
| 2187 | } else if self.parse_keyword(JSON) { |
| 2188 | let array = self.parse_keyword(ARRAY); |
| 2189 | Format::Json { array } |
| 2190 | } else if self.parse_keyword(TEXT) { |
| 2191 | Format::Text |
| 2192 | } else if self.parse_keyword(BYTES) { |
| 2193 | Format::Bytes |
| 2194 | } else { |
| 2195 | return self.expected( |
| 2196 | self.peek_pos(), |
| 2197 | "AVRO, PROTOBUF, REGEX, CSV, JSON, TEXT, or BYTES", |
| 2198 | self.peek_token(), |
| 2199 | ); |
| 2200 | }; |
| 2201 | Ok(format) |
| 2202 | } |
| 2203 | |
| 2204 | fn parse_avro_schema(&mut self) -> Result<AvroSchema<Raw>, ParserError> { |
| 2205 | let avro_schema = if self.parse_keywords(&[CONFLUENT, SCHEMA, REGISTRY]) { |
no test coverage detected