tm_language/
lib.rs

1mod errors;
2
3use std::collections::BTreeMap;
4pub use errors::{Error, Result};
5use serde::{Deserialize, Serialize};
6
7mod der;
8mod ser;
9
10#[derive(Debug, Default, Serialize, Deserialize)]
11pub struct TmLanguage {
12    #[serde(default)]
13    pub information_for_contributors: Vec<String>,
14    #[serde(default)]
15    pub version: String,
16    #[serde(default)]
17    pub name: String,
18    #[serde(rename = "scopeName")]
19    pub scope_name: String,
20    #[serde(default)]
21    pub patterns: Vec<TmPattern>,
22    #[serde(default)]
23    pub repository: BTreeMap<String, TmPattern>,
24}
25
26#[derive(Debug)]
27pub enum TmPattern {
28    Include {
29        include: String,
30    },
31    Complete {
32        name: String,
33        comment: String,
34        begin: String,
35        begin_captures: TmCaptures,
36        end: String,
37        end_captures: TmCaptures,
38        matches: String,
39        captures: TmCaptures,
40        patterns: Vec<TmPattern>,
41    },
42}
43
44#[derive(Debug, Default)]
45pub struct TmCaptures {
46    pub inner: BTreeMap<usize, TmPattern>,
47}