Skip to main content

oak_dot/language/
mod.rs

1#![doc = include_str!("readme.md")]
2use oak_core::{Language, LanguageCategory};
3#[cfg(feature = "serde")]
4use serde::{Deserialize, Serialize};
5
6/// DOT language configuration (Graphviz).
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
8#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
9pub struct DotLanguage {
10    /// Whether to enable strict mode.
11    pub strict_mode: bool,
12    /// Whether to allow directed graphs.
13    pub allow_digraph: bool,
14}
15
16impl DotLanguage {
17    /// Creates a new DOT language configuration.
18    pub fn new() -> Self {
19        Self::default()
20    }
21}
22
23impl Default for DotLanguage {
24    fn default() -> Self {
25        Self { strict_mode: false, allow_digraph: true }
26    }
27}
28
29impl Language for DotLanguage {
30    const NAME: &'static str = "dot";
31    const CATEGORY: LanguageCategory = LanguageCategory::Programming;
32
33    type TokenType = crate::lexer::token_type::DotTokenType;
34    type ElementType = crate::parser::element_type::DotElementType;
35    type TypedRoot = ();
36}