freya-code-editor 0.4.0-rc.21

Composable Code Editor APIs for Freya
use std::fmt::Display;

#[derive(Default, Clone, Debug, PartialEq, Copy)]
pub enum LanguageId {
    Rust,
    Python,
    JavaScript,
    TypeScript,
    Markdown,
    Toml,
    Json,
    SQL,
    #[default]
    Unknown,
}

impl Display for LanguageId {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            Self::Rust => f.write_str("Rust"),
            Self::Python => f.write_str("Python"),
            Self::JavaScript => f.write_str("JavaScript"),
            Self::TypeScript => f.write_str("TypeScript"),
            Self::Markdown => f.write_str("Markdown"),
            Self::Toml => f.write_str("TOML"),
            Self::Json => f.write_str("JSON"),
            Self::SQL => f.write_str("SQL"),
            Self::Unknown => f.write_str("Unknown"),
        }
    }
}

impl LanguageId {
    pub fn parse(id: &str) -> Self {
        match id {
            "rs" => LanguageId::Rust,
            "py" => LanguageId::Python,
            "js" => LanguageId::JavaScript,
            "ts" => LanguageId::TypeScript,
            "md" => LanguageId::Markdown,
            "toml" => LanguageId::Toml,
            "json" => LanguageId::Json,
            "sql" => LanguageId::SQL,
            _ => LanguageId::Unknown,
        }
    }
}