finitio 0.1.0

Finitio data language
Documentation
#[cfg(test)]
use crate::fio::common::assert_parse;

use crate::{
    common::FilePosition,
    fio::common::{parse_identifier, Span},
};
use nom::{combinator::map, IResult};
use serde::{Serialize, Deserialize};

#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
pub struct RefType {
    pub name: String,
    pub position: FilePosition,
}

pub fn parse_ref(input: Span) -> IResult<Span, RefType> {
    map(parse_identifier, |name| RefType {
        name: String::from(name),
        position: input.into(),
    })(input)
}

#[test]
fn test_parse_ref() {
    assert_parse(
        parse_ref(Span::new("Number")),
        RefType {
            name: String::from("Number"),
            position: FilePosition { line: 1, column: 1 },
        },
    );
}