spatialos-codegen 0.2.2

Codegen tool used with spatialos-macro and spatialos-sdk
Documentation
use nom::{
    bytes::complete::tag,
    character::complete::{char, multispace0, multispace1},
    multi::separated_list1,
    sequence::{delimited, pair},
    IResult,
};

use crate::parser::utils::snake_case;

pub fn parse_package_components(input: &[u8]) -> IResult<&[u8], Vec<String>> {
    separated_list1(char('.'), snake_case)(input)
}

pub fn parse_package_name(input: &[u8]) -> IResult<&[u8], Vec<String>> {
    delimited(
        pair(tag("package"), multispace1),
        parse_package_components,
        pair(multispace0, char(';')),
    )(input)
}

#[cfg(test)]
mod tests {

    use super::*;

    #[test]
    fn test_parse_package_name() {
        assert_eq!(
            parse_package_name(b"package io.nebulis;"),
            Ok((&b""[..], vec!["io".to_string(), "nebulis".to_string()]))
        )
    }
}