@@ -59,16 +59,16 @@ impl StyleCollector {
59 let mut css = String::new();
59 let mut css = String::new();
60 for e in &self.entries {
60 for e in &self.entries {
61 if !e.base.is_empty() {
61 if !e.base.is_empty() {
62− css.push_str(&format!(".{}{{{}}}\n", e.class_name, e.base));
62+ css.push_str(&format!(".{}{{{}}}", e.class_name, e.base));
64 if !e.hover.is_empty() {
64 if !e.hover.is_empty() {
65− css.push_str(&format!(".{}:hover{{{}}}\n", e.class_name, e.hover));
65+ css.push_str(&format!(".{}:hover{{{}}}", e.class_name, e.hover));
67 if !e.active.is_empty() {
67 if !e.active.is_empty() {
68− css.push_str(&format!(".{}:active{{{}}}\n", e.class_name, e.active));
68+ css.push_str(&format!(".{}:active{{{}}}", e.class_name, e.active));
70 if !e.focus.is_empty() {
70 if !e.focus.is_empty() {
71− css.push_str(&format!(".{}:focus{{{}}}\n", e.class_name, e.focus));
71+ css.push_str(&format!(".{}:focus{{{}}}", e.class_name, e.focus));
@@ -91,25 +91,7 @@ pub fn generate(doc: &Document) -> String {
92 match &doc.page_title {
92 match &doc.page_title {
93 Some(title) => format!(
93 Some(title) => format!(
94− "\
94+ "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><title>{title}</title><style>*,*::before,*::after{{box-sizing:border-box}}body{{margin:0;font-family:system-ui,-apple-system,sans-serif}}img{{display:block}}{element_css}</style></head><body>{body}</body></html>",
98−<meta charset=\"utf-8\">
99−<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">
100−<title>{title}</title>
102−*, *::before, *::after {{ box-sizing: border-box; }}
103−body {{ margin: 0; font-family: system-ui, -apple-system, sans-serif; }}
104−img {{ display: block; }}
113 title = html_escape(title),
95 title = html_escape(title),
114 element_css = element_css,
96 element_css = element_css,
115 body = body,
97 body = body,
@@ -118,7 +100,7 @@ img {{ display: block; }}
118 if element_css.is_empty() {
100 if element_css.is_empty() {
121− format!("<style>\n{}</style>\n{}", element_css, body)
103+ format!("<style>{}</style>{}", element_css, body)
@@ -151,7 +133,6 @@ fn generate_node(
152 Node::Raw(content) => {
134 Node::Raw(content) => {
153 out.push_str(content);
135 out.push_str(content);
@@ -214,13 +195,13 @@ fn generate_element(
214 for (i, child) in elem.children.iter().enumerate() {
195 for (i, child) in elem.children.iter().enumerate() {
215 generate_node(child, Some(&elem.kind), out, styles);
196 generate_node(child, Some(&elem.kind), out, styles);
216 if is_paragraph && i < elem.children.len() - 1 {
197 if is_paragraph && i < elem.children.len() - 1 {
217− out.push('\n');
198+ out.push(' ');
221 out.push_str("</");
202 out.push_str("</");
222 out.push_str(tag);
203 out.push_str(tag);
223− out.push_str(">\n");
204+ out.push('>');
226fn generate_image(
207fn generate_image(
@@ -244,7 +225,7 @@ fn generate_image(
244 out.push_str(&html_escape(&id));
225 out.push_str(&html_escape(&id));
245 out.push('"');
226 out.push('"');
247− out.push_str(">\n");
228+ out.push('>');
250fn generate_text_segments(
231fn generate_text_segments(