diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2018-05-15 14:26:59 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-05-15 14:26:59 +0200 |
| commit | 934e37aeb4c3dfd220e044827b91dcc106dd331b (patch) | |
| tree | 6a3d46248ee900492ef497569bbc6e6ab2c3b349 /src/librustdoc/html | |
| parent | 91c648b9c1ea2a12882d0e1a643586c71f71bb11 (diff) | |
| parent | e2db0a5630a39fc1725cae1e804120cff75dc1cb (diff) | |
| download | rust-934e37aeb4c3dfd220e044827b91dcc106dd331b.tar.gz rust-934e37aeb4c3dfd220e044827b91dcc106dd331b.zip | |
Rollup merge of #50632 - GuillaumeGomez:minification, r=ollie27
Add minification process r? @QuietMisdreavus
Diffstat (limited to 'src/librustdoc/html')
| -rw-r--r-- | src/librustdoc/html/render.rs | 36 | ||||
| -rw-r--r-- | src/librustdoc/html/static/main.js | 4 |
2 files changed, 28 insertions, 12 deletions
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 32cfb05bbe4..ab3af73cf17 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -76,6 +76,8 @@ use html::item_type::ItemType; use html::markdown::{self, Markdown, MarkdownHtml, MarkdownSummaryLine}; use html::{highlight, layout}; +use minifier; + /// A pair of name and its optional document. pub type NameDoc = (String, Option<String>); @@ -513,7 +515,8 @@ pub fn run(mut krate: clean::Crate, css_file_extension: Option<PathBuf>, renderinfo: RenderInfo, sort_modules_alphabetically: bool, - themes: Vec<PathBuf>) -> Result<(), Error> { + themes: Vec<PathBuf>, + enable_minification: bool) -> Result<(), Error> { let src_root = match krate.src { FileName::Real(ref p) => match p.parent() { Some(p) => p.to_path_buf(), @@ -665,7 +668,7 @@ pub fn run(mut krate: clean::Crate, CACHE_KEY.with(|v| *v.borrow_mut() = cache.clone()); CURRENT_LOCATION_KEY.with(|s| s.borrow_mut().clear()); - write_shared(&cx, &krate, &*cache, index)?; + write_shared(&cx, &krate, &*cache, index, enable_minification)?; // And finally render the whole crate's documentation cx.krate(krate) @@ -744,7 +747,8 @@ fn build_index(krate: &clean::Crate, cache: &mut Cache) -> String { fn write_shared(cx: &Context, krate: &clean::Crate, cache: &Cache, - search_index: String) -> Result<(), Error> { + search_index: String, + enable_minification: bool) -> Result<(), Error> { // Write out the shared files. Note that these are shared among all rustdoc // docs placed in the output directory, so this needs to be a synchronized // operation with respect to all other rustdocs running around. @@ -836,16 +840,20 @@ themePicker.onblur = handleThemeButtonsBlur; .join(",")).as_bytes(), )?; - write(cx.dst.join(&format!("main{}.js", cx.shared.resource_suffix)), - include_bytes!("static/main.js"))?; - write(cx.dst.join(&format!("settings{}.js", cx.shared.resource_suffix)), - include_bytes!("static/settings.js"))?; + write_minify(cx.dst.join(&format!("main{}.js", cx.shared.resource_suffix)), + include_str!("static/main.js"), + enable_minification)?; + write_minify(cx.dst.join(&format!("settings{}.js", cx.shared.resource_suffix)), + include_str!("static/settings.js"), + enable_minification)?; { let mut data = format!("var resourcesSuffix = \"{}\";\n", - cx.shared.resource_suffix).into_bytes(); - data.extend_from_slice(include_bytes!("static/storage.js")); - write(cx.dst.join(&format!("storage{}.js", cx.shared.resource_suffix)), &data)?; + cx.shared.resource_suffix); + data.push_str(include_str!("static/storage.js")); + write_minify(cx.dst.join(&format!("storage{}.js", cx.shared.resource_suffix)), + &data, + enable_minification)?; } if let Some(ref css) = cx.shared.css_file_extension { @@ -1042,6 +1050,14 @@ fn write(dst: PathBuf, contents: &[u8]) -> Result<(), Error> { Ok(try_err!(fs::write(&dst, contents), &dst)) } +fn write_minify(dst: PathBuf, contents: &str, enable_minification: bool) -> Result<(), Error> { + if enable_minification { + write(dst, minifier::js::minify(contents).as_bytes()) + } else { + write(dst, contents.as_bytes()) + } +} + /// Takes a path to a source file and cleans the path to it. This canonicalizes /// things like ".." to components which preserve the "top down" hierarchy of a /// static HTML tree. Each component in the cleaned path will be passed as an diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index 9224bd1c508..e0235bfc694 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -202,7 +202,7 @@ onEach(e.getElementsByTagName('span'), function(i_e) { removeClass(i_e, 'line-highlighted'); }); - }) + }); for (i = from; i <= to; ++i) { addClass(document.getElementById(i), 'line-highlighted'); } @@ -1972,7 +1972,7 @@ hasClass(next.nextElementSibling, 'docblock')))) { insertAfter(toggle.cloneNode(true), e.childNodes[e.childNodes.length - 1]); } - } + }; onEach(document.getElementsByClassName('method'), func); onEach(document.getElementsByClassName('impl'), func); onEach(document.getElementsByClassName('impl-items'), function(e) { |
