Add one failing test :)

issue1
Alex Bethel 2021-11-27 21:01:38 -07:00
parent 263582bd7e
commit c242eace21
1 changed files with 48 additions and 1 deletions

View File

@ -1,5 +1,7 @@
#[derive(Debug, PartialEq)]
pub struct Url;
#[derive(Debug, PartialEq)]
pub struct RGBA {
red: u8,
green: u8,
@ -7,16 +9,19 @@ pub struct RGBA {
alpha: u8,
}
#[derive(Debug, PartialEq)]
pub struct Header {
label: String,
level: u8,
}
#[derive(Debug, PartialEq)]
pub struct CodeBlock {
language: String,
text: String,
}
#[derive(Debug, PartialEq)]
pub struct StyledText {
italic: bool,
bold: bool,
@ -25,29 +30,35 @@ pub struct StyledText {
text: String,
}
#[derive(Debug, PartialEq)]
pub struct Blockquote {
level: u8,
text: String,
}
#[derive(Debug, PartialEq)]
pub struct Link {
text: String,
url: Url,
title: Option<String>,
}
#[derive(Debug, PartialEq)]
pub struct Image {
text: String,
image: Url,
title: Option<String>,
link: Option<Link>,
}
#[derive(Debug, PartialEq)]
pub enum Node {
Header(Header),
Paragraph(Vec<StyledText>),
HRule,
}
#[derive(Debug, PartialEq)]
pub struct Document(Vec<Node>);
// TODO: able take care of lists i am too drunk for this tonight
@ -59,4 +70,40 @@ pub enum ListType {
pub struct List {}
pub fn parse() {}
pub fn parse(source: &str) -> Document {
let lines = source.lines().collect::<Vec<_>>();
let mut document = vec![];
let mut paragraph = vec![];
for line in lines {
if line.starts_with('#') {
todo!()
} else if line.is_empty() {
document.push(paragraph.join(" "));
} else {
paragraph.push(line);
}
}
todo!()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn basic_text() {
let text = "Hello World!";
let doc = parse(text);
let doc_ref = Document(vec![Node::Paragraph(vec![StyledText {
italic: false,
bold: false,
underline: false,
color: None,
text: "Hello World!".to_string(),
}])]);
assert_eq!(doc, doc_ref);
}
}