diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:02:58 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:02:58 +0000 |
commit | 698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch) | |
tree | 173a775858bd501c378080a10dca74132f05bc50 /src/librustdoc/html/templates | |
parent | Initial commit. (diff) | |
download | rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip |
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/librustdoc/html/templates')
-rw-r--r-- | src/librustdoc/html/templates/STYLE.md | 37 | ||||
-rw-r--r-- | src/librustdoc/html/templates/page.html | 148 | ||||
-rw-r--r-- | src/librustdoc/html/templates/print_item.html | 30 |
3 files changed, 215 insertions, 0 deletions
diff --git a/src/librustdoc/html/templates/STYLE.md b/src/librustdoc/html/templates/STYLE.md new file mode 100644 index 000000000..fff65e3b5 --- /dev/null +++ b/src/librustdoc/html/templates/STYLE.md @@ -0,0 +1,37 @@ +# Style for Templates + +This directory has templates in the [Tera templating language](teradoc), which is very +similar to [Jinja2](jinjadoc) and [Django](djangodoc) templates, and also to [Askama](askamadoc). + +[teradoc]: https://tera.netlify.app/docs/#templates +[jinjadoc]: https://jinja.palletsprojects.com/en/3.0.x/templates/ +[djangodoc]: https://docs.djangoproject.com/en/3.2/topics/templates/ +[askamadoc]: https://docs.rs/askama/0.10.5/askama/ + +We want our rendered output to have as little unnecessary whitespace as +possible, so that pages load quickly. To achieve that we use Tera's +[whitespace control] features. At the end of most lines, we put an empty comment +tag with the whitespace control characters: `{#- -#}`. This causes all +whitespace between the end of the line and the beginning of the next, including +indentation, to be omitted on render. Sometimes we want to preserve a single +space. In those cases we put the space at the end of the line, followed by +`{# -#}`, which is a directive to remove following whitespace but not preceding. +We also use the whitespace control characters in most instances of tags with +control flow, for example `{%- if foo -%}`. + +[whitespace control]: https://tera.netlify.app/docs/#whitespace-control + +We want our templates to be readable, so we use indentation and newlines +liberally. We indent by four spaces after opening an HTML tag _or_ a Tera +tag. In most cases an HTML tag should be followed by a newline, but if the +tag has simple contents and fits with its close tag on a single line, the +contents don't necessarily need a new line. + +Tera templates support quite sophisticated control flow. To keep our templates +simple and understandable, we use only a subset: `if` and `for`. In particular +we avoid [assignments in the template logic](assignments) and [Tera +macros](macros). This also may make things easier if we switch to a different +Jinja-style template system, like Askama, in the future. + +[assignments]: https://tera.netlify.app/docs/#assignments +[macros]: https://tera.netlify.app/docs/#macros diff --git a/src/librustdoc/html/templates/page.html b/src/librustdoc/html/templates/page.html new file mode 100644 index 000000000..8e25f6764 --- /dev/null +++ b/src/librustdoc/html/templates/page.html @@ -0,0 +1,148 @@ +<!DOCTYPE html> {#- -#} +<html lang="en"> {#- -#} +<head> {#- -#} + <meta charset="utf-8"> {#- -#} + <meta name="viewport" content="width=device-width, initial-scale=1.0"> {#- -#} + <meta name="generator" content="rustdoc"> {#- -#} + <meta name="description" content="{{page.description}}"> {#- -#} + <meta name="keywords" content="{{page.keywords}}"> {#- -#} + <title>{{page.title}}</title> {#- -#} + <link rel="preload" as="font" type="font/woff2" crossorigin href="{{static_root_path|safe}}SourceSerif4-Regular.ttf.woff2"> {#- -#} + <link rel="preload" as="font" type="font/woff2" crossorigin href="{{static_root_path|safe}}FiraSans-Regular.woff2"> {#- -#} + <link rel="preload" as="font" type="font/woff2" crossorigin href="{{static_root_path|safe}}FiraSans-Medium.woff2"> {#- -#} + <link rel="preload" as="font" type="font/woff2" crossorigin href="{{static_root_path|safe}}SourceCodePro-Regular.ttf.woff2"> {#- -#} + <link rel="preload" as="font" type="font/woff2" crossorigin href="{{static_root_path|safe}}SourceSerif4-Bold.ttf.woff2"> {#- -#} + <link rel="preload" as="font" type="font/woff2" crossorigin href="{{static_root_path|safe}}SourceCodePro-Semibold.ttf.woff2"> {#- -#} + <link rel="stylesheet" type="text/css" {# -#} + href="{{static_root_path|safe}}normalize{{page.resource_suffix}}.css"> {#- -#} + <link rel="stylesheet" type="text/css" {# -#} + href="{{static_root_path|safe}}rustdoc{{page.resource_suffix}}.css" {# -#} + id="mainThemeStyle"> {#- -#} + {%- for theme in themes -%} + <link rel="stylesheet" type="text/css" {# -#} + href="{{static_root_path|safe}}{{theme}}{{page.resource_suffix}}.css" {# -#} + {%- if theme == "light" -%} + id="themeStyle" + {%- else -%} + disabled + {%- endif -%} + > + {%- endfor -%} + <script id="default-settings" {# -#} + {% for (k, v) in layout.default_settings %} + data-{{k}}="{{v}}" + {%- endfor -%} + ></script> {#- -#} + <script src="{{static_root_path|safe}}storage{{page.resource_suffix}}.js"></script> {#- -#} + {%- if page.css_class.contains("crate") -%} + <script defer src="{{page.root_path|safe}}crates{{page.resource_suffix}}.js"></script> {#- -#} + {%- else if page.css_class == "source" -%} + <script defer src="{{static_root_path|safe}}source-script{{page.resource_suffix}}.js"></script> {#- -#} + <script defer src="{{page.root_path|safe}}source-files{{page.resource_suffix}}.js"></script> {#- -#} + {%- else if !page.css_class.contains("mod") -%} + <script defer src="sidebar-items{{page.resource_suffix}}.js"></script> {#- -#} + {%- endif -%} + <script defer src="{{static_root_path|safe}}main{{page.resource_suffix}}.js"></script> {#- -#} + {%- if layout.scrape_examples_extension -%} + <script defer src="{{page.root_path|safe}}scrape-examples{{page.resource_suffix}}.js"></script> {#- -#} + {%- endif -%} + <noscript> {#- -#} + <link rel="stylesheet" {# -#} + href="{{static_root_path|safe}}noscript{{page.resource_suffix}}.css"> {#- -#} + </noscript> {#- -#} + {%- if layout.css_file_extension.is_some() -%} + <link rel="stylesheet" type="text/css" {# -#} + href="{{static_root_path|safe}}theme{{page.resource_suffix}}.css"> {#- -#} + {%- endif -%} + {%- if !layout.favicon.is_empty() -%} + <link rel="icon" href="{{layout.favicon}}"> {#- -#} + {%- else -%} + <link rel="alternate icon" type="image/png" {# -#} + href="{{static_root_path|safe}}favicon-16x16{{page.resource_suffix}}.png"> {#- -#} + <link rel="alternate icon" type="image/png" {# -#} + href="{{static_root_path|safe}}favicon-32x32{{page.resource_suffix}}.png"> {#- -#} + <link rel="icon" type="image/svg+xml" {# -#} + href="{{static_root_path|safe}}favicon{{page.resource_suffix}}.svg"> {#- -#} + {%- endif -%} + {{- layout.external_html.in_header|safe -}} +</head> {#- -#} +<body class="rustdoc {{page.css_class}}"> {#- -#} + <!--[if lte IE 11]> {#- -#} + <div class="warning"> {#- -#} + This old browser is unsupported and will most likely display funky things. {#- -#} + </div> {#- -#} + <![endif]--> {#- -#} + {{- layout.external_html.before_content|safe -}} + <nav class="mobile-topbar"> {#- -#} + <button class="sidebar-menu-toggle">☰</button> {#- -#} + <a class="sidebar-logo" href="{{page.root_path|safe}}{{krate_with_trailing_slash|safe}}index.html"> {#- -#} + <div class="logo-container"> {#- -#} + {%- if !layout.logo.is_empty() -%} + <img src="{{layout.logo}}" alt="logo"> {#- -#} + {%- else -%} + <img class="rust-logo" src="{{static_root_path|safe}}rust-logo{{page.resource_suffix}}.svg" alt="logo"> {#- -#} + {%- endif -%} + </div> {#- -#} + </a> {#- -#} + <h2 class="location"></h2> {#- -#} + </nav> {#- -#} + <nav class="sidebar"> {#- -#} + <a class="sidebar-logo" href="{{page.root_path|safe}}{{krate_with_trailing_slash|safe}}index.html"> {#- -#} + <div class="logo-container"> {#- -#} + {%- if !layout.logo.is_empty() %} + <img src="{{layout.logo}}" alt="logo"> {#- -#} + {%- else -%} + <img class="rust-logo" src="{{static_root_path|safe}}rust-logo{{page.resource_suffix}}.svg" alt="logo"> {#- -#} + {%- endif -%} + </div> {#- -#} + </a> {#- -#} + {{- sidebar|safe -}} + </nav> {#- -#} + <main> {#- -#} + <div class="width-limiter"> {#- -#} + <div class="sub-container"> {#- -#} + <a class="sub-logo-container" href="{{page.root_path|safe}}{{krate_with_trailing_slash|safe}}index.html"> {#- -#} + {%- if !layout.logo.is_empty() %} + <img src="{{layout.logo}}" alt="logo"> {#- -#} + {%- else -%} + <img class="rust-logo" src="{{static_root_path|safe}}rust-logo{{page.resource_suffix}}.svg" alt="logo"> {#- -#} + {%- endif -%} + </a> {#- -#} + <nav class="sub"> {#- -#} + <form class="search-form"> {#- -#} + <div class="search-container"> {#- -#} + <span></span> {#- This empty span is a hacky fix for Safari - See #93184 -#} + <input {# -#} + class="search-input" {# -#} + name="search" {# -#} + autocomplete="off" {# -#} + spellcheck="false" {# -#} + placeholder="Click or press ‘S’ to search, ‘?’ for more options…" {# -#} + type="search"> {#- -#} + <div id="help-button" title="help" tabindex="-1"> {#- -#} + <button type="button">?</button> {#- -#} + </div> {#- -#} + <div id="settings-menu" tabindex="-1"> {#- -#} + <a href="{{page.root_path|safe}}settings.html" title="settings"> {#- -#} + <img width="22" height="22" alt="Change settings" {# -#} + src="{{static_root_path|safe}}wheel{{page.resource_suffix}}.svg"> {#- -#} + </a> {#- -#} + </div> {#- -#} + </div> {#- -#} + </form> {#- -#} + </nav> {#- -#} + </div> {#- -#} + <section id="main-content" class="content">{{- content|safe -}}</section> {#- -#} + </div> {#- -#} + </main> {#- -#} + {{- layout.external_html.after_content|safe -}} + <div id="rustdoc-vars" {# -#} + data-root-path="{{page.root_path|safe}}" {# -#} + data-current-crate="{{layout.krate}}" {# -#} + data-themes="{{themes|join(",") }}" {# -#} + data-resource-suffix="{{page.resource_suffix}}" {# -#} + data-rustdoc-version="{{rustdoc_version}}" {# -#} + > {#- -#} + </div> {#- -#} +</body> {#- -#} +</html> {#- -#} diff --git a/src/librustdoc/html/templates/print_item.html b/src/librustdoc/html/templates/print_item.html new file mode 100644 index 000000000..c755157d2 --- /dev/null +++ b/src/librustdoc/html/templates/print_item.html @@ -0,0 +1,30 @@ +<div class="main-heading"> {#- -#} + <h1 class="fqn"> {#- -#} + <span class="in-band"> {#- -#} + {{-typ-}} + {#- The breadcrumbs of the item path, like std::string -#} + {%- for component in path_components -%} + <a href="{{component.path|safe}}index.html">{{component.name}}</a>::<wbr> + {%- endfor -%} + <a class="{{item_type}}" href="#">{{name}}</a> {#- -#} + <button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"> {#- -#} + <img src="{{static_root_path|safe}}clipboard{{page.resource_suffix}}.svg" {# -#} + width="19" height="18" {# -#} + alt="Copy item path"> {#- -#} + </button> {#- -#} + </span> {#- -#} + </h1> {#- -#} + <span class="out-of-band"> {#- -#} + {% if !stability_since_raw.is_empty() %} + {{- stability_since_raw|safe }} · {# -#} + {% endif %} + {%- match src_href -%} + {%- when Some with (href) -%} + <a class="srclink" href="{{href|safe}}">source</a> · {# -#} + {%- else -%} + {%- endmatch -%} + <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs"> {#- -#} + [<span class="inner">−</span>] {#- -#} + </a> {#- -#} + </span> {#- -#} +</div> {#- -#} |