Skip to content

Commit e25e4a1

Browse files
committed
refactor field name out parse list
1 parent 28c6397 commit e25e4a1

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

arrow-schema/src/datatype_parse.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,25 +93,31 @@ impl<'a> Parser<'a> {
9393
}
9494
}
9595

96+
/// Parses list field name: `field: 'field_name'`
97+
fn parse_list_field_name(&mut self, context: &str) -> ArrowResult<String> {
98+
self.expect_token(Token::Field)?;
99+
self.expect_token(Token::Colon)?;
100+
let field_name = self.parse_single_quoted_string(context)?;
101+
Ok(field_name)
102+
}
103+
96104
/// Parses the List type
97105
fn parse_list(&mut self) -> ArrowResult<DataType> {
98106
self.expect_token(Token::LParen)?;
99107
let nullable = self.nullable();
100108
let data_type = self.parse_next_type()?;
101109

102110
match self.next_token()? {
103-
// default field name
111+
// list with default field name
104112
Token::RParen => Ok(DataType::List(Arc::new(Field::new_list_field(
105113
data_type, nullable,
106114
)))),
107-
// expects: field: 'field_name'
115+
// list with field name
108116
Token::Comma => {
109-
self.expect_token(Token::Field)?;
110-
self.expect_token(Token::Colon)?;
111-
let field_name = self.parse_single_quoted_string("List's field")?;
117+
let field = self.parse_list_field_name("List's field")?;
112118
self.expect_token(Token::RParen)?;
113119
Ok(DataType::List(Arc::new(Field::new(
114-
field_name, data_type, nullable,
120+
field, data_type, nullable,
115121
))))
116122
}
117123
tok => Err(make_error(

0 commit comments

Comments
 (0)