Skip to content

Commit b93e53f

Browse files
cynecxJoshua Nelson
authored and
Joshua Nelson
committed
Rewrite rustdoc pages so that our vendored stylesheet file is put before the first rustdoc stylesheet
1 parent 445dbeb commit b93e53f

File tree

2 files changed

+30
-9
lines changed

2 files changed

+30
-9
lines changed

src/utils/html.rs

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@ pub(crate) fn rewrite_lol(
1919

2020
let templates = templates.templates.load();
2121
let tera_head = templates.render("rustdoc/head.html", &ctx).unwrap();
22+
let tera_vendored_css = templates.render("rustdoc/vendored.html", &ctx).unwrap();
2223
let tera_body = templates.render("rustdoc/body.html", &ctx).unwrap();
2324
let tera_rustdoc_header = templates.render("rustdoc/header.html", &ctx).unwrap();
2425

26+
// Append `style.css` stylesheet after all head elements.
2527
let head_handler = |head: &mut Element| {
2628
head.append(&tera_head, ContentType::Html);
2729

@@ -62,17 +64,34 @@ pub(crate) fn rewrite_lol(
6264
Ok(())
6365
};
6466

65-
let (head_selector, body_selector) = ("head".parse().unwrap(), "body".parse().unwrap());
66-
let head = (
67-
&head_selector,
68-
ElementContentHandlers::default().element(head_handler),
69-
);
70-
let body = (
71-
&body_selector,
72-
ElementContentHandlers::default().element(body_handler),
67+
// Append `vendored.css` before the first stylesheet (rustdoc's first stylesheet is `normalize.css`).
68+
let first_stylesheet_handler = |head: &mut Element| {
69+
head.before(&tera_vendored_css, ContentType::Html);
70+
71+
Ok(())
72+
};
73+
74+
let (head_selector, body_selector, first_stylesheet_selector) = (
75+
"head".parse().unwrap(),
76+
"body".parse().unwrap(),
77+
"link[type='text/css'][href*='normalize']".parse().unwrap(),
7378
);
79+
let element_content_handlers = vec![
80+
(
81+
&head_selector,
82+
ElementContentHandlers::default().element(head_handler),
83+
),
84+
(
85+
&body_selector,
86+
ElementContentHandlers::default().element(body_handler),
87+
),
88+
(
89+
&first_stylesheet_selector,
90+
ElementContentHandlers::default().element(first_stylesheet_handler),
91+
),
92+
];
7493
let settings = Settings {
75-
element_content_handlers: vec![head, body],
94+
element_content_handlers,
7695
memory_settings: MemorySettings {
7796
max_allowed_memory_usage,
7897
..MemorySettings::default()

templates/rustdoc/vendored.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<link rel="stylesheet" href="/-/static/vendored.css?{{ docsrs_version() | slugify }}" type="text/css" media="all" />
2+

0 commit comments

Comments
 (0)