Add one failing test :)
This commit is contained in:
parent
faff343baf
commit
3e8ea9f577
49
src/lib.rs
49
src/lib.rs
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue