pub fn theme_css(md: &MarkdownIt) -> Option<String>Expand description
Generate CSS for selected built-in theme
ยงPanics
Panics if the configured theme not found in built-in themes
Examples found in repository?
examples/syntect/main.rs (line 86)
1fn main() {
2 #[cfg(not(feature = "syntect"))]
3 {
4 eprintln!("Run this example with the `syntect` feature enabled.");
5 eprintln!("such as: cargo run --example syntect --features syntect");
6 return;
7 }
8
9 let mut md_inline = markdown_it::MarkdownIt::new();
10 markdown_it::plugins::cmark::add(&mut md_inline);
11 markdown_it::plugins::extra::syntect::add(&mut md_inline);
12
13 let mut md_classed = markdown_it::MarkdownIt::new();
14 markdown_it::plugins::cmark::add(&mut md_classed);
15 markdown_it::plugins::extra::syntect::add(&mut md_classed);
16 markdown_it::plugins::extra::syntect::set_to_classed(&mut md_classed);
17
18 let input_inline = r#"
19parse with inline mode:
20
21```rust {2}
22fn main() {
23 println!("Ciallo world!");
24}
25```
26"#;
27 let input_classed = r#"
28parse with classed mode:
29
30```rust {2}
31fn main() {
32 println!("Ciallo world!");
33}
34```
35"#;
36
37 let highlighted_line_css = r#"
38.syntect-line-highlighted {
39 background-color: #fffbdd;
40 border-left: 4px solid #f9c513;
41 padding-left: 12px;
42}
43"#;
44
45 let html = format!(
46 r#"<!DOCTYPE html>
47<html>
48<head>
49 <meta charset="utf-8">
50 <title>Code highlight example</title>
51 <style>
52 body {{
53 font-family: sans-serif;
54 max-width: 800px;
55 margin: 40px auto;
56 padding: 20px;
57 }}
58 h2 {{
59 margin-top: 40px;
60 }}
61 pre {{
62 background-color: #f6f8fa;
63 padding: 16px 0;
64 border-radius: 6px;
65 font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
66 font-size: 14px;
67 line-height: 1.5;
68 overflow: auto;
69 }}
70 .syntect-line {{
71 display: block;
72 padding: 0 16px;
73 }}
74 {}
75 {}
76 </style>
77</head>
78<body>
79 <h2>Inline Mode</h2>
80 {}
81 <h2>Classed Mode</h2>
82 {}
83</body>
84</html>
85"#,
86 markdown_it::plugins::extra::syntect::theme_css(&md_classed).unwrap_or_default(),
87 highlighted_line_css,
88 md_inline.parse(input_inline).render(),
89 md_classed.parse(input_classed).render(),
90 );
91
92 let path = "examples/syntect/demo.html";
93 std::fs::write(path, html).expect("write file failed");
94 println!("success write to '{}'", path);
95}