teo_parser/
lib.rs

1pub mod r#type;
2pub mod ast;
3pub mod parser;
4mod builtin;
5pub(crate) mod resolver;
6pub mod diagnostics;
7pub mod utils;
8pub(crate) mod completion;
9pub(crate) mod definition;
10pub mod search;
11pub mod traits;
12pub mod availability;
13pub mod expr;
14pub mod format;
15pub mod value;
16#[macro_use]
17pub mod macros;
18
19use std::collections::BTreeMap;
20use crate::ast::schema::Schema;
21use crate::completion::completion_item::CompletionItem;
22use crate::definition::definition::Definition;
23use crate::diagnostics::diagnostics::Diagnostics;
24use crate::diagnostics::formatter::format_to_json;
25use crate::utils::path::FileUtility;
26
27pub fn parse(
28    main: impl AsRef<str>,
29    mut file_util: Option<FileUtility>,
30    unsaved_files: Option<BTreeMap<String, String>>,
31) -> (Schema, Diagnostics) {
32    if file_util.is_none() {
33        file_util = Some(FileUtility::default());
34    }
35    let (schema, mut diagnostics) = parser::parse::parse(
36        main,
37        file_util.unwrap(),
38        unsaved_files,
39    );
40    resolver::resolve::resolve(&schema, &mut diagnostics);
41    (schema, diagnostics)
42}
43
44pub fn print_to_terminal(diagnostics: &Diagnostics) {
45    diagnostics::printer::print_diagnostics(diagnostics, true);
46}
47
48pub fn generate_json_diagnostics(diagnostics: &Diagnostics, include_warnings: bool) -> String {
49    format_to_json(diagnostics, include_warnings)
50}
51
52pub fn jump_to_definition(schema: &Schema, file_path: &str, line_col: (usize, usize)) -> Vec<Definition> {
53    definition::jump_to_definition::jump_to_definition(schema, file_path, line_col)
54}
55
56pub fn auto_complete_items(schema: &Schema, file_path: &str, line_col: (usize, usize)) -> Vec<CompletionItem> {
57    completion::find_completion::find_completion(schema, file_path, line_col)
58}
59
60pub fn format_document(schema: &Schema, file_path: &str) -> String {
61    format::format::format_document(schema, file_path)
62}