diff --git a/src/lib.rs b/src/lib.rs index 67da32d..4853460 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -18,7 +18,7 @@ pub enum Content { } pub fn parse_content(c: &str) -> Vec{ - process_content(itemize_content(c)).into_iter().map(|i| { + process_content(&itemize_content(c)).into_iter().map(|i| { match i { Content::Markdown(s) => { Content::MarkdownParsed(markdown::parse(&s).collect()) @@ -151,10 +151,10 @@ fn media_content(item: &Item) -> Content{ } -fn process_content(items: Vec) -> Vec { +fn process_content(items: &Vec) -> Vec { let mut result: Vec = Vec::new(); //println!("Converting {} items into Content",items.len()); - for i in &items { + for i in items { match i { Item::Title(_,_) => { result.push(markdown_content(i)); @@ -192,6 +192,12 @@ fn process_content(items: Vec) -> Vec { Item::Audio(_) => { result.push(media_content(i)); } + Item::Container(children) => { + //should actually plan to contain things + for c in process_content(children){ + result.push(c); + } + } _ => { result.push(Content::Ignore); } @@ -218,7 +224,8 @@ enum Item { UnorderedList(Vec), OrderedList(Vec), ListItem(Vec), - Paragraph(Vec),//gotta replace this with specific items, needlessly flexible + Paragraph(Vec), + Container(Vec), Link(String,Vec), Table(Vec) } @@ -293,6 +300,9 @@ fn parse_items(n: ego_tree::NodeRef<'_,Node>) -> Item{ "li" => { return Item::ListItem(get_children(&el)) } + "div" => { + return Item::Container(get_children(&el)) + } _ => {} }; diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 94d135d..d8d2b37 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -11,7 +11,7 @@ fn fragments() { for f in FRAGMENTS { println!("Processing Fragment:{}",f); let items = itemize_content(f); - let content = process_content(items); + let content = process_content(&items); println!("Content:\n{:#?}",content); } } @@ -20,15 +20,15 @@ fn fragments() { fn content_test() { let example_text = Item::Text("Example.com".to_owned()); let example_link = Item::Link("https://example.com".to_owned(), [example_text].to_vec()); - let result = process_content([example_link].to_vec()); + let result = process_content(&[example_link].to_vec()); println!("Items to content parse result:\n{:#?}", result); } #[test] fn content_display() { let feed = get_feed(example_data::GABE_ROCKS); - let content: Vec<_> = process_content(itemize_content( - feed.items.first().unwrap().content().unwrap(), + let content: &Vec = &process_content(&itemize_content( + feed.items.get(4).unwrap().content().unwrap(), )); println!("Content: {:#?}", content) } @@ -59,7 +59,7 @@ fn markdownify_feeds() { .items .into_iter() .map(|item| { - process_content(itemize_content(&item.content.unwrap())); + process_content(&itemize_content(&item.content.unwrap())); }) .collect(); println!("Processed {} items without errors", results.len())