teo-parser 0.3.0

Parser for Teo schema language
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use std::borrow::Cow;
use crate::ast::source::Source;
use crate::parser::parse_source::parse_source;
use crate::parser::parser_context::ParserContext;

pub(super) fn parse_source_file(path: impl AsRef<str>, base_path: &str, context: &ParserContext) -> Source {
    let path_str = path.as_ref();
    let abs_path = if (context.file_util.path_is_absolute)(path_str) {
        Cow::Borrowed(path_str)
    } else {
        Cow::Owned((context.file_util.path_join)(base_path, path_str))
    };
    let content = match context.read_file(abs_path.as_ref()) {
        Some(content) => content,
        None => panic!("cannot read schema file content at '{}'", abs_path)
    };
    parse_source(&content, abs_path.as_ref(), false, context)
}