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