From 46d22e77d458b1e5cd9a9b17df67c63849574a95 Mon Sep 17 00:00:00 2001 From: Aaditya Dhruv Date: Thu, 5 Jun 2025 16:51:33 -0500 Subject: Barebones rendering framework --- src/types/elements.rs | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 src/types/elements.rs (limited to 'src/types/elements.rs') diff --git a/src/types/elements.rs b/src/types/elements.rs new file mode 100644 index 0000000..0f766e4 --- /dev/null +++ b/src/types/elements.rs @@ -0,0 +1,125 @@ +pub trait Renderable { + fn render(&self) -> String; +} + +//Body +pub struct Body { + items: Vec>, +} + +impl Body { + pub fn new() -> Self { + let _vec = Vec::>::new(); + Body { items: _vec } + } +} +impl Renderable for Body { + fn render(&self) -> String { + let mut master = String::new(); + let start_tag = ""; + let end_tag = ""; + + master.push_str(&start_tag); + for child in &self.items { + let text = child.render(); + master.push_str(text.as_str()); + } + master.push_str(&end_tag); + master + } +} + +//Paragraph +pub struct Paragraph { + text: String, +} + +impl Paragraph { + pub fn new() -> Self { + Paragraph { text: String::new() } + } +} +impl Renderable for Paragraph { + fn render(&self) -> String { + let mut master = String::new(); + let start_tag = "

"; + let end_tag = "

"; + + master.push_str(&start_tag); + master.push_str(&self.text); + master.push_str(&end_tag); + master + } +} +//Head +pub struct Head { + text: String, +} + +impl Head { + pub fn new() -> Self { + Head { text: String::new() } + } +} +impl Renderable for Head { + fn render(&self) -> String { + let mut master = String::new(); + let start_tag = ""; + let end_tag = ""; + + master.push_str(&start_tag); + master.push_str(&self.text); + master.push_str(&end_tag); + master + } +} +// Heading +pub struct Heading { + text: String, + level: u8, +} + +impl Heading { + pub fn new() -> Self { + Heading { text: String::new(), level: 1 } + } +} +impl Renderable for Heading { + fn render(&self) -> String { + let mut master = String::new(); + let start_tag = format!("", self.level); + let end_tag = format!("", self.level); + + master.push_str(&start_tag); + master.push_str(&self.text); + master.push_str(&end_tag); + master + } +} + +// Heading +pub struct HTML { + items: Vec>, +} + +impl HTML { + pub fn new() -> Self { + let _vec = Vec::>::new(); + HTML { items: _vec } + } +} +impl Renderable for HTML { + fn render(&self) -> String { + let mut master = String::new(); + let start_tag = ""; + let end_tag = ""; + + master.push_str(&start_tag); + for child in &self.items { + let text = child.render(); + master.push_str(text.as_str()); + } + master.push_str(&end_tag); + master + } +} -- cgit