Skip to main content

runmat_parser/
options.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
4pub enum CompatMode {
5    #[serde(rename = "runmat")]
6    RunMat,
7    #[default]
8    #[serde(rename = "matlab")]
9    Matlab,
10    #[serde(rename = "strict")]
11    Strict,
12}
13
14#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
15pub struct ParserOptions {
16    #[serde(default)]
17    pub compat_mode: CompatMode,
18}
19
20impl Default for ParserOptions {
21    fn default() -> Self {
22        Self {
23            compat_mode: CompatMode::Matlab,
24        }
25    }
26}
27
28impl ParserOptions {
29    pub fn new(compat_mode: CompatMode) -> Self {
30        Self { compat_mode }
31    }
32}
33
34impl CompatMode {
35    /// Whether semantic lowering should allow RunMat-only extension syntax.
36    pub fn allows_runmat_extensions(self) -> bool {
37        !matches!(self, Self::Strict)
38    }
39}