commit
5f00625c14
|
@ -26,6 +26,16 @@ code {
|
||||||
font-size: 0.875em; /* please adjust the ace font size accordingly in editor.js */
|
font-size: 0.875em; /* please adjust the ace font size accordingly in editor.js */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* make long words/inline code not x overflow */
|
||||||
|
main {
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* make wide tables scroll if they overflow */
|
||||||
|
.table-wrapper {
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
/* Don't change font size in headers. */
|
/* Don't change font size in headers. */
|
||||||
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
|
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
|
||||||
font-size: unset;
|
font-size: unset;
|
||||||
|
|
|
@ -200,12 +200,28 @@ pub fn render_markdown_with_path(text: &str, curly_quotes: bool, path: Option<&P
|
||||||
let p = new_cmark_parser(text, curly_quotes);
|
let p = new_cmark_parser(text, curly_quotes);
|
||||||
let events = p
|
let events = p
|
||||||
.map(clean_codeblock_headers)
|
.map(clean_codeblock_headers)
|
||||||
.map(|event| adjust_links(event, path));
|
.map(|event| adjust_links(event, path))
|
||||||
|
.flat_map(|event| {
|
||||||
|
let (a, b) = wrap_tables(event);
|
||||||
|
a.into_iter().chain(b)
|
||||||
|
});
|
||||||
|
|
||||||
html::push_html(&mut s, events);
|
html::push_html(&mut s, events);
|
||||||
s
|
s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Wraps tables in a `.table-wrapper` class to apply overflow-x rules to.
|
||||||
|
fn wrap_tables(event: Event<'_>) -> (Option<Event<'_>>, Option<Event<'_>>) {
|
||||||
|
match event {
|
||||||
|
Event::Start(Tag::Table(_)) => (
|
||||||
|
Some(Event::Html(r#"<div class="table-wrapper">"#.into())),
|
||||||
|
Some(event),
|
||||||
|
),
|
||||||
|
Event::End(Tag::Table(_)) => (Some(event), Some(Event::Html(r#"</div>"#.into()))),
|
||||||
|
_ => (Some(event), None),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn clean_codeblock_headers(event: Event<'_>) -> Event<'_> {
|
fn clean_codeblock_headers(event: Event<'_>) -> Event<'_> {
|
||||||
match event {
|
match event {
|
||||||
Event::Start(Tag::CodeBlock(CodeBlockKind::Fenced(ref info))) => {
|
Event::Start(Tag::CodeBlock(CodeBlockKind::Fenced(ref info))) => {
|
||||||
|
@ -282,6 +298,22 @@ mod tests {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_can_wrap_tables() {
|
||||||
|
let src = r#"
|
||||||
|
| Original | Punycode | Punycode + Encoding |
|
||||||
|
|-----------------|-----------------|---------------------|
|
||||||
|
| føø | f-5gaa | f_5gaa |
|
||||||
|
"#;
|
||||||
|
let out = r#"
|
||||||
|
<div class="table-wrapper"><table><thead><tr><th>Original</th><th>Punycode</th><th>Punycode + Encoding</th></tr></thead><tbody>
|
||||||
|
<tr><td>føø</td><td>f-5gaa</td><td>f_5gaa</td></tr>
|
||||||
|
</tbody></table>
|
||||||
|
</div>
|
||||||
|
"#.trim();
|
||||||
|
assert_eq!(render_markdown(src, false), out);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn it_can_keep_quotes_straight() {
|
fn it_can_keep_quotes_straight() {
|
||||||
assert_eq!(render_markdown("'one'", false), "<p>'one'</p>\n");
|
assert_eq!(render_markdown("'one'", false), "<p>'one'</p>\n");
|
||||||
|
|
Loading…
Reference in New Issue