Skip to main content

partiql/parser/
values.rs

1use nom::character::complete::multispace0;
2use nom::{
3    character::complete::{char, digit1},
4    combinator::cut,
5    error::context,
6    multi::separated_list0,
7    sequence::{preceded, terminated},
8    IResult,
9};
10
11pub fn array<'a>(input: &'a str) -> IResult<&'a str, Vec<u64>> {
12    let (input, res) = context(
13        "array",
14        preceded(
15            char('['),
16            preceded(
17                multispace0,
18                cut(terminated(
19                    separated_list0(char(','), preceded(multispace0, digit1)),
20                    preceded(multispace0, char(']')),
21                )),
22            ),
23        ),
24    )(input)?;
25
26    let r = res
27        .iter()
28        .map(|s| s.parse::<u64>().unwrap())
29        .collect::<Vec<_>>();
30
31    Ok((input, r))
32}