pub static JS: &'static [u8] =
b"$( document ).ready(function() {\n\n // url\n var url = window.location.pathname;\n\n // Fix back button cache problem\n window.onunload = function(){};\n\n // Set theme\n var theme = localStorage.getItem(\'theme\');\n if (theme === null) { theme = \'light\'; }\n\n set_theme(theme);\n\n\n // Syntax highlighting Configuration\n hljs.configure({\n tabReplace: \' \', // 4 spaces\n languages: [], // Languages used for auto-detection\n });\n\n $(\'code\').each(function(i, block) {\n hljs.highlightBlock(block);\n });\n \n // Adding the hljs class gives code blocks the color css\n // even if highlighting doesn\'t apply\n $(\'code\').addClass(\'hljs\');\n\n var KEY_CODES = {\n PREVIOUS_KEY: 37,\n NEXT_KEY: 39\n };\n\n $(document).on(\'keydown\', function (e) {\n if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; }\n switch (e.keyCode) {\n case KEY_CODES.NEXT_KEY:\n e.preventDefault();\n if($(\'.nav-chapters.next\').length) {\n window.location.href = $(\'.nav-chapters.next\').attr(\'href\');\n }\n break;\n case KEY_CODES.PREVIOUS_KEY:\n e.preventDefault();\n if($(\'.nav-chapters.previous\').length) {\n window.location.href = $(\'.nav-chapters.previous\').attr(\'href\');\n }\n break;\n }\n });\n\n // Interesting DOM Elements\n var html = $(\"html\");\n var sidebar = $(\"#sidebar\");\n var page_wrapper = $(\"#page-wrapper\");\n var content = $(\"#content\");\n\n // Toggle sidebar\n $(\"#sidebar-toggle\").click(function(event){\n if ( html.hasClass(\"sidebar-hidden\") ) {\n html.removeClass(\"sidebar-hidden\").addClass(\"sidebar-visible\");\n localStorage.setItem(\'sidebar\', \'visible\');\n } else if ( html.hasClass(\"sidebar-visible\") ) {\n html.removeClass(\"sidebar-visible\").addClass(\"sidebar-hidden\");\n localStorage.setItem(\'sidebar\', \'hidden\');\n } else {\n if(sidebar.position().left === 0){\n html.addClass(\"sidebar-hidden\");\n localStorage.setItem(\'sidebar\', \'hidden\');\n } else {\n html.addClass(\"sidebar-visible\");\n localStorage.setItem(\'sidebar\', \'visible\');\n }\n }\n });\n\n\n // Scroll sidebar to current active section\n var activeSection = sidebar.find(\".active\");\n if(activeSection.length) {\n sidebar.scrollTop(activeSection.offset().top);\n }\n\n\n // Print button\n $(\"#print-button\").click(function(){\n var printWindow = window.open(\"print.html\");\n });\n\n if( url.substring(url.lastIndexOf(\'/\')+1) == \"print.html\" ) {\n window.print();\n }\n\n\n // Theme button\n $(\"#theme-toggle\").click(function(){\n if($(\'.theme-popup\').length) {\n $(\'.theme-popup\').remove();\n } else {\n var popup = $(\'<div class=\"theme-popup\"></div>\')\n .append($(\'<div class=\"theme\" id=\"light\">Light <span class=\"default\">(default)</span><div>\'))\n .append($(\'<div class=\"theme\" id=\"rust\">Rust</div>\'))\n .append($(\'<div class=\"theme\" id=\"coal\">Coal</div>\'))\n .append($(\'<div class=\"theme\" id=\"navy\">Navy</div>\'));\n\n\n popup.insertAfter(this);\n\n $(\'.theme\').click(function(){\n var theme = $(this).attr(\'id\');\n\n set_theme(theme);\n });\n }\n\n });\n\n function set_theme(theme) {\n if (theme == \'coal\' || theme == \'navy\') {\n $(\"[href=\'tomorrow-night.css\']\").prop(\'disabled\', false);\n $(\"[href=\'highlight.css\']\").prop(\'disabled\', true);\n } else {\n $(\"[href=\'tomorrow-night.css\']\").prop(\'disabled\', true);\n $(\"[href=\'highlight.css\']\").prop(\'disabled\', false);\n }\n\n localStorage.setItem(\'theme\', theme);\n\n $(\'body\').removeClass().addClass(theme);\n }\n\n\n // Hide Rust code lines prepended with a specific character\n var hiding_character = \"#\";\n\n $(\"code.language-rust\").each(function(i, block){\n\n var code_block = $(this);\n var pre_block = $(this).parent();\n // hide lines\n var lines = code_block.html().split(\"\\n\");\n var first_non_hidden_line = false;\n var lines_hidden = false;\n\n for(var n = 0; n < lines.length; n++){\n if($.trim(lines[n])[0] == hiding_character){\n if(first_non_hidden_line){\n lines[n] = \"<span class=\\\"hidden\\\">\" + \"\\n\" + lines[n].replace(/(\\s*)# ?/, \"$1\") + \"</span>\";\n }\n else {\n lines[n] = \"<span class=\\\"hidden\\\">\" + lines[n].replace(/(\\s*)# ?/, \"$1\") + \"\\n\" + \"</span>\";\n }\n lines_hidden = true;\n }\n else if(first_non_hidden_line) {\n lines[n] = \"\\n\" + lines[n];\n }\n else {\n first_non_hidden_line = true;\n }\n }\n code_block.html(lines.join(\"\"));\n\n // If no lines were hidden, return\n if(!lines_hidden) { return; }\n\n // add expand button\n pre_block.prepend(\"<div class=\\\"buttons\\\"><i class=\\\"fa fa-expand\\\"></i></div>\");\n\n pre_block.find(\"i\").click(function(e){\n if( $(this).hasClass(\"fa-expand\") ) {\n $(this).removeClass(\"fa-expand\").addClass(\"fa-compress\");\n pre_block.find(\"span.hidden\").removeClass(\"hidden\").addClass(\"unhidden\");\n }\n else {\n $(this).removeClass(\"fa-compress\").addClass(\"fa-expand\");\n pre_block.find(\"span.unhidden\").removeClass(\"unhidden\").addClass(\"hidden\");\n }\n });\n });\n\n\n // Process playpen code blocks\n $(\".playpen\").each(function(block){\n var pre_block = $(this);\n // Add play button\n var buttons = pre_block.find(\".buttons\");\n if( buttons.length === 0 ) {\n pre_block.prepend(\"<div class=\\\"buttons\\\"></div>\");\n buttons = pre_block.find(\".buttons\");\n }\n buttons.prepend(\"<i class=\\\"fa fa-play play-button\\\"></i>\");\n\n buttons.find(\".play-button\").click(function(e){\n run_rust_code(pre_block);\n });\n });\n\n\n});\n\n\nfunction run_rust_code(code_block) {\n var result_block = code_block.find(\".result\");\n if(result_block.length === 0) {\n code_block.append(\"<code class=\\\"result hljs language-bash\\\"></code>\");\n result_block = code_block.find(\".result\");\n }\n\n let text = code_block.find(\".language-rust\").text();\n\n let params = {\n version: \"stable\",\n optimize: \"0\",\n code: text,\n };\n\n if(text.includes(\"#![feature\")) {\n params.version = \"nightly\";\n }\n\n result_block.text(\"Running...\");\n\n $.ajax({\n url: \"https://play.rust-lang.org/evaluate.json\",\n method: \"POST\",\n crossDomain: true,\n dataType: \"json\",\n contentType: \"application/json\",\n data: JSON.stringify(params),\n success: function(response){\n result_block.text(response.result);\n }\n });\n}\n"