windjammer_ui/components/generated/
codeeditor.rs1#![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}