aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorAaditya Dhruv <[email protected]>2025-08-10 22:10:11 -0500
committerAaditya Dhruv <[email protected]>2025-08-10 22:10:11 -0500
commitd862b84ce868353e3482b380d0b68495de12eb6b (patch)
treed114c4b44460b9d1eaf689ea2ffed10c21943ecc /src/main.rs
parent63dbc54db1c33e341f2e843a6c71807e51a4dd7b (diff)
Add Parser support
- Parser is able to take Lexer tokens and generate AST with Text (Paragraph) and Headings - Scanner has been renamed to Lexer - main.rs has been updated to use the Lexer and Parser
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs
index 5d2610d..3ca140c 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -3,11 +3,28 @@ mod parser;
use std::fs::File;
use std::io::prelude::*;
+use parser::lexer::Lexer;
+use parser::parser::{Parser, AST};
+
use crate::types::elements;
use crate::types::elements::Renderable;
fn main() {
- let doc = elements::HTML::new();
+ // let doc = elements::HTML::new();
+ // let doc = doc.render();
+ // let mut file = File::create("out.html").unwrap();
+ // file.write_all(doc.as_bytes()).unwrap();
+ let md = "## Title\nText of a paragraph\n\n##### Second heading\nSome more text";
+ let mut lexer = Lexer::new(md);
+ lexer.scan();
+ let mut parser = Parser::new(lexer);
+ parser.parse();
+ let root = parser.tree;
+ let mut doc = elements::HTML::new();
+ for child in root.children {
+ let ast = child.item;
+ doc.items.push(ast.convert_to_renderable());
+ }
let doc = doc.render();
let mut file = File::create("out.html").unwrap();
file.write_all(doc.as_bytes()).unwrap();