windjammer_ui/components/generated/
codeeditor.rs

1#![allow(clippy::all)]
2#![allow(noop_method_call)]
3use super::traits::Renderable;
4
5pub struct CodeEditor {
6    code: String,
7    language: String,
8    theme: String,
9    line_numbers: bool,
10    readonly: bool,
11}
12
13impl CodeEditor {
14    #[inline]
15    pub fn new(code: String) -> CodeEditor {
16        CodeEditor {
17            code,
18            language: "rust".to_string(),
19            theme: "dark".to_string(),
20            line_numbers: true,
21            readonly: false,
22        }
23    }
24    #[inline]
25    pub fn language(mut self, language: String) -> CodeEditor {
26        self.language = language;
27        self
28    }
29    #[inline]
30    pub fn theme(mut self, theme: String) -> CodeEditor {
31        self.theme = theme;
32        self
33    }
34    #[inline]
35    pub fn line_numbers(mut self, show: bool) -> CodeEditor {
36        self.line_numbers = show;
37        self
38    }
39    #[inline]
40    pub fn readonly(mut self, readonly: bool) -> CodeEditor {
41        self.readonly = readonly;
42        self
43    }
44}
45
46impl Renderable for CodeEditor {
47    #[inline]
48    fn render(self) -> String {
49        let readonly_attr = {
50            if self.readonly {
51                " readonly"
52            } else {
53                ""
54            }
55        };
56        let line_numbers_class = {
57            if self.line_numbers {
58                " wj-editor-with-lines"
59            } else {
60                ""
61            }
62        };
63        format!(
64            "<div class='wj-code-editor wj-editor-{} wj-editor-theme-{}{}'>
65  <textarea{}>
66{}</textarea>
67</div>",
68            self.language, self.theme, line_numbers_class, readonly_attr, self.code
69        )
70    }
71}