summaryrefslogtreecommitdiff
path: root/support/texlab/src/syntax/mod.rs
blob: c92aa995f974daea30bc03077139a23afab7b26e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
mod bibtex;
mod language;
mod latex;
mod text;

pub use self::bibtex::*;
pub use self::language::*;
pub use self::latex::*;
pub use self::text::*;

use crate::workspace::Uri;
use tex::Language;

#[derive(Debug, PartialEq, Eq, Clone)]
pub enum SyntaxTree {
    Latex(Box<LatexSyntaxTree>),
    Bibtex(Box<BibtexSyntaxTree>),
}

impl SyntaxTree {
    pub fn parse(uri: &Uri, text: &str, language: Language) -> Self {
        match language {
            Language::Latex => SyntaxTree::Latex(Box::new(LatexSyntaxTree::parse(uri, text))),
            Language::Bibtex => SyntaxTree::Bibtex(Box::new(text.into())),
        }
    }
}