Skip to main content

theme_css

Function theme_css 

Source
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}