windjammer-ui 0.3.6

Cross-platform UI framework for Windjammer (Web, Desktop, Mobile)
Documentation

use super::traits::Renderable
pub struct AdvancedCodeEditor {
    code: string,
    language: string,
    theme: string,
    line_numbers: bool,
    minimap: bool,
    autocomplete: bool,
}

impl AdvancedCodeEditor {
    pub fn new(code: string) -> AdvancedCodeEditor {
        AdvancedCodeEditor {
            code,
            language: "rust".to_string(),
            theme: "monokai".to_string(),
            line_numbers: true,
            minimap: true,
            autocomplete: true,
        }
    }

    pub fn language(self, language: string) -> AdvancedCodeEditor {
        self.language = language
        self
    }

    pub fn theme(self, theme: string) -> AdvancedCodeEditor {
        self.theme = theme
        self
    }

    pub fn line_numbers(self, show: bool) -> AdvancedCodeEditor {
        self.line_numbers = show
        self
    }

    pub fn minimap(self, show: bool) -> AdvancedCodeEditor {
        self.minimap = show
        self
    }

    pub fn autocomplete(self, enable: bool) -> AdvancedCodeEditor {
        self.autocomplete = enable
        self
    }


}

impl Renderable for AdvancedCodeEditor {
pub fn render(self) -> string {
        let features_class = if self.minimap { " wj-editor-with-minimap" } else { "" }
        let line_class = if self.line_numbers { " wj-editor-with-lines" } else { "" }

        format!("<div class='wj-advanced-editor wj-editor-{} wj-editor-theme-{}{}{}'>
  <div class='wj-editor-toolbar'>
    <span>Language: {}</span>
    <span>Theme: {}</span>
  </div>
  <div class='wj-editor-main'>
    <textarea class='wj-editor-textarea'>
{}</textarea>
    {}
  </div>
</div>", self.language, self.theme, features_class, line_class, self.language, self.theme, self.code,
    if self.minimap { "<div class='wj-editor-minimap'></div>" } else { "" })
    }
}

fn main() {
    let editor = AdvancedCodeEditor::new("fn main() {\n    println!(\"Hello, Windjammer!\");\n}".to_string())
        .language("rust".to_string())
        .theme("monokai".to_string())
        .minimap(true)

    println!("{}", editor.render())
}