use somedoc::model::block::{HasBlockContent, Heading, List, Paragraph}; use somedoc::model::document::Document; use somedoc::model::inline::{HasInlineContent, Image, Span}; use somedoc::write::markdown::MarkdownFlavor; use somedoc::write::write_document_to_string; fn main() { let doc = readme_maker( "somedoc", "johnstonskj", "rust-somedoc", "A very simple document model and markup generator.", ); let md = write_document_to_string(&doc, MarkdownFlavor::default().into()).unwrap(); println!("{}", md); } fn readme_maker(crate_name: &str, repo_owner: &str, repo_name: &str, headline: &str) -> Document { let tbd = Paragraph::plain_str("TBD"); let mut doc = Document::default(); doc.add_heading(Heading::section(&format!("Crate {}", crate_name))) .add_paragraph(Paragraph::plain_str(headline)); let mut para = Paragraph::default(); para.add_image(Image::with_alt_text( "https://img.shields.io/badge/license-mit-118811.svg", "MIT License", )) .add_image(Image::with_alt_text( "https://img.shields.io/badge/Min%20Rust-1.40-green.svg", "Build", )) .add_image(Image::with_alt_text( &format!( "https://github.com/{}/{}/workflows/Rust/badge.svg", repo_owner, repo_name ), "Minimum Rust Version", )) .add_image(Image::with_alt_text( &format!( "https://github.com/{}/{}/workflows/Security%20audit/badge.svg", repo_owner, repo_name ), "Audit", )); doc.add_paragraph(para) .add_thematic_break() .add_paragraph(tbd.clone()) .add_heading(Heading::sub_section("Example")) .add_paragraph(tbd.clone()) .add_heading(Heading::sub_section("Features")) .add_paragraph(tbd.clone()) .add_thematic_break() .add_heading(Heading::sub_section("Changes")) .add_paragraph(Paragraph::bold_str("Version 0.1.0")); let mut list = List::default(); list.add_item_from(Span::plain_str("Initial release.").into()); doc.add_list(list) .add_heading(Heading::sub_section("Issues")) .add_paragraph(tbd.clone()); doc }