diff options
Diffstat (limited to 'src/librustdoc/html/layout.rs')
| -rw-r--r-- | src/librustdoc/html/layout.rs | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/src/librustdoc/html/layout.rs b/src/librustdoc/html/layout.rs new file mode 100644 index 00000000000..fcf13779389 --- /dev/null +++ b/src/librustdoc/html/layout.rs @@ -0,0 +1,130 @@ +// Copyright 2013 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use std::fmt; +use std::rt::io; + +#[deriving(Clone)] +pub struct Layout { + logo: ~str, + favicon: ~str, + crate: ~str, +} + +pub struct Page<'self> { + title: &'self str, + ty: &'self str, + root_path: &'self str, +} + +pub fn render<T: fmt::Default, S: fmt::Default>( + dst: &mut io::Writer, layout: &Layout, page: &Page, sidebar: &S, t: &T) +{ + write!(dst, " +<!DOCTYPE html> +<html lang=\"en\"> +<head> + <meta charset=\"utf-8\" /> + <title>{title}</title> + + <link href='http://fonts.googleapis.com/css?family=Oswald:700|Inconsolata:400' + rel='stylesheet' type='text/css'> + <link rel=\"stylesheet\" type=\"text/css\" href=\"{root_path}main.css\"> + + {favicon, select, none{} other{ + <link rel=\"icon\" href=\"#\" sizes=\"16x16\" + type=\"image/vnd.microsoft.icon\" />}} +</head> +<body> + <!--[if lte IE 8]> + <div class=\"warning\"> + This old browser is unsupported and will most likely display funky + things + </div> + <![endif]--> + + <section class=\"sidebar\"> + {logo, select, none{} other{ + <a href='{root_path}index.html'><img src='#' alt=''/></a> + }} + + {sidebar} + </section> + + <nav class=\"sub\"> + <form class=\"search-form js-only\"> + <input class=\"search-input\" name=\"search\" + autocomplete=\"off\" /> + <button class=\"do-search\">Search</button> + </form> + </nav> + + <section class=\"content {ty}\">{content}</section> + + <section class=\"footer\"></section> + + <script> + var rootPath = \"{root_path}\"; + </script> + <script src=\"{root_path}jquery.js\"></script> + <script src=\"{root_path}{crate}/search-index.js\"></script> + <script src=\"{root_path}main.js\"></script> + + <div id=\"help\" class=\"hidden\"> + <div class=\"shortcuts\"> + <h1>Keyboard shortcuts</h1> + <dl> + <dt>?</dt> + <dd>Show this help dialog</dd> + <dt>S</dt> + <dd>Focus the search field</dd> + <dt>↑</dt> + <dd>Move up in search results</dd> + <dt>↓</dt> + <dd>Move down in search results</dd> + <dt>&\\#9166;</dt> + <dd>Go to active search result</dd> + </dl> + </div> + <div class=\"infos\"> + <h1>Search tricks</h1> + <p> + Prefix searches with a type followed by a colon (e.g. + <code>fn:</code>) to restrict the search to a given type. + </p> + <p> + Accepted types are: <code>fn</code>, <code>mod</code>, + <code>struct</code> (or <code>str</code>), <code>enum</code>, + <code>trait</code>, <code>typedef</code> (or + <code>tdef</code>). + </p> + </div> + </div> +</body> +</html> +", + content = *t, + root_path = page.root_path, + ty = page.ty, + logo = nonestr(layout.logo), + title = page.title, + favicon = nonestr(layout.favicon), + sidebar = *sidebar, + crate = layout.crate, + ); +} + +fn boolstr(b: bool) -> &'static str { + if b { "true" } else { "false" } +} + +fn nonestr<'a>(s: &'a str) -> &'a str { + if s == "" { "none" } else { s } +} |
