prism_wasmbind/options/
mod.rs

1use crate::{prism_render};
2use std::fmt::{Display, Formatter};
3
4/// A Rust struct that represents the options for the Prism Wasm library.
5#[derive(Debug, Copy, Clone)]
6pub enum PrismLanguage {
7    /// The Rust language.
8    HTML,
9    /// The JavaScript language.
10    JavaScript,
11    /// The TypeScript language.
12    Rust,
13    /// The Python language.
14    Css,
15}
16
17impl Display for PrismLanguage {
18    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
19        match self {
20            PrismLanguage::HTML => write!(f, "markup"),
21            PrismLanguage::JavaScript => write!(f, "javascript"),
22            PrismLanguage::Rust => write!(f, "rust"),
23            PrismLanguage::Css => write!(f, "css"),
24        }
25    }
26}
27
28/// Read <https://katex.org/docs/options.html> for more information.
29#[derive(Debug, Clone)]
30pub struct PrismOptions {
31    /// Whether to render the math in the display mode.
32    pub language: PrismLanguage,
33
34}
35
36impl Default for PrismOptions {
37    fn default() -> Self {
38        Self {
39            language: PrismLanguage::Rust,
40        }
41    }
42}
43
44impl PrismOptions {
45    /// Render code as rust
46    pub fn css() -> PrismOptions {
47        PrismOptions { language: PrismLanguage::Css, ..PrismOptions::default() }
48    }
49    /// Render code as rust
50    pub fn rust() -> PrismOptions {
51        PrismOptions { language: PrismLanguage::Rust, ..PrismOptions::default() }
52    }
53    /// Render formulas to html string.
54    pub fn render(&self, input: &str) -> String {
55        prism_render(input, &self.language.to_string())
56    }
57}
58
59impl PrismOptions {}