+/* This file is part of NIT ( http://www.nitlanguage.org ).\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+\r
+ Documentation generator for the nit language.\r
+ Generate API documentation in HTML format from nit source code.\r
+*/\r
+\r
+var Nitdoc = Nitdoc || {};\r
+\r
+/*\r
+ * Nitdoc UI module\r
+ *\r
+ * Enhance nitdoc usability with JS features\r
+ */\r
+\r
+Nitdoc.UI = function() {\r
+\r
+ // Allow user to fold sidebar nav elements on click\r
+ var enableFolding = function(containerSelector) {\r
+ var container = $(containerSelector);\r
+ var foldLink = $(document.createElement("a"))\r
+ .addClass("nitdoc-ui-fold")\r
+ .html("-");\r
+\r
+ container.find("nav h3")\r
+ .prepend(foldLink)\r
+ .css("cursor", "pointer")\r
+ .toggle(\r
+ function() {\r
+ $(this).find("a.nitdoc-ui-fold").html("+");\r
+ $(this).nextAll().toggle();\r
+ },\r
+ function() {\r
+ $(this).find("a.nitdoc-ui-fold").html("-");\r
+ $(this).nextAll().toggle();\r
+ }\r
+ );\r
+ }\r
+\r
+ // Allow user to copy signatures to clipboard with ZeroClipboard flahs plugin\r
+ // See: https://github.com/zeroclipboard/ZeroClipboard\r
+ var enableCopyToClipboard = function(copySelector) {\r
+ $(copySelector).each(function() {\r
+ var btn = $(document.createElement("button"))\r
+ .addClass("nitdoc-ui-copy")\r
+ .attr("data-clipboard-text", $(this).attr("data-untyped-signature"))\r
+ .append(\r
+ $(document.createElement("img"))\r
+ .attr("src", './resources/icons/copy.png')\r
+ );\r
+ $(this).append(btn);\r
+ });\r
+\r
+ var clip = new ZeroClipboard($("button.nitdoc-ui-copy"), {\r
+ moviePath: "./ZeroClipboard.swf"\r
+ });\r
+ }\r
+\r
+ // Allow user to filter sidebar box entries by name\r
+ var enableSidebarTextFilters = function(filterSelector) {\r
+ var div = $(document.createElement("div"))\r
+ .addClass("nitdoc-ui-filter")\r
+ .append(\r
+ $(document.createElement("input"))\r
+ .addClass("nitdoc-ui-notused")\r
+ .attr("type", "text")\r
+ .attr("value", "filter...")\r
+ .keyup(function() {\r
+ var box = $(this).parents("nav.filterable");\r
+ var value = $(this).val();\r
+ box.find("ul li:not(:icontains('" + value + "'))").hide();\r
+ box.find("ul li:icontains('" + value + "')").show();\r
+ })\r
+ .focusout(function() {\r
+ if($(this).val() == "") {\r
+ $(this).addClass("nitdoc-ui-notused");\r
+ $(this).val("filter...");\r
+ }\r
+ })\r
+ .focusin(function() {\r
+ if($(this).val() == "filter...") {\r
+ $(this).removeClass("nitdoc-ui-notused");\r
+ $(this).val("");\r
+ }\r
+ })\r
+ );\r
+ $(filterSelector).after(div);\r
+ preloadSidebarTextFilters();\r
+ }\r
+\r
+ // Prealod filters using search query\r
+ var preloadSidebarTextFilters = function() {\r
+ var anchor = Nitdoc.Utils.extractAnchor(document.location.hash);\r
+ if(!anchor || anchor.indexOf("q=") == -1) return;\r
+\r
+ var query = anchor.substring(2);\r
+ if(!query) return;\r
+\r
+ $(".nitdoc-ui-filter input:text")\r
+ .val(query)\r
+ .removeClass("nitdoc-ui-notused")\r
+ .trigger("keyup");\r
+ }\r
+\r
+ // Allow user to filter side bar box entries by Introduced/Refined/inHerited type\r
+ var enableSidebarTypeFilters = function(filterSelector) {\r
+ var box = $(filterSelector);\r
+ var types = {};\r
+\r
+ box.find("li").each(function() {\r
+ var span = $(this).find("span:first");\r
+ if(!types[span.html()]) types[span.html()] = {\r
+ title: span.attr("title"),\r
+ class: $(this).attr("class")\r
+ }\r
+ });\r
+\r
+ for(var type in types) {\r
+ var a = $(document.createElement("a"))\r
+ .addClass("nitdoc-ui-filter-link")\r
+ .html(type)\r
+ .attr("title", "Hide " + types[type].title)\r
+ .attr("data-filter-class", types[type].class)\r
+ .toggle(\r
+ function() {\r
+ var hclass = $(this).attr("data-filter-class");\r
+ $(this).parents(filterSelector).find("li." + hclass).hide();\r
+ $(this).addClass("nitdoc-ui-filter-hidden")\r
+ },\r
+ function() {\r
+ var hclass = $(this).attr("data-filter-class");\r
+ $(this).parents(filterSelector).find("li." + hclass).show();\r
+ $(this).removeClass("nitdoc-ui-filter-hidden")\r
+ }\r
+ )\r
+ $(filterSelector).find(".nitdoc-ui-filter").append(a);\r
+ }\r
+ }\r
+\r
+ // Public interface\r
+ var ui = {\r
+ enableFolding: enableFolding,\r
+ enableCopyToClipboard: enableCopyToClipboard,\r
+ enableSidebarTextFilters: enableSidebarTextFilters,\r
+ enableSidebarTypeFilters: enableSidebarTypeFilters\r
+ };\r
+\r
+ return ui;\r
+}();\r
+\r
+// Init UI on page load\r
+$(document).ready(function() {\r
+ Nitdoc.UI.enableFolding(".sidebar");\r
+ Nitdoc.UI.enableCopyToClipboard(".signature");\r
+ Nitdoc.UI.enableSidebarTextFilters("nav.filterable h3");\r
+ Nitdoc.UI.enableSidebarTypeFilters("nav.filterable");\r
+});\r
+\r
+/*\r
+ * Utils module\r
+ *\r
+ * Utility functions\r
+ */\r
+\r
+Nitdoc.Utils = function() {\r
+\r
+ // Extract anchor part (after #) from URL string\r
+ var extractAnchor = function(url) {\r
+ var index = url.indexOf("#");\r
+ if (index >= 0) {\r
+ return url.substring(index + 1);\r
+ }\r
+ return null;\r
+ }\r
+\r
+ // Public interface\r
+ var utils = {\r
+ extractAnchor: extractAnchor\r
+ };\r
+\r
+ return utils;\r
+}();\r
+\r
+// JQuery Case Insensitive :icontains selector\r
+$.expr[':'].icontains = function(obj, index, meta, stack){\r
+ return (obj.textContent.replace(/\[[0-9]+\]/g, "") || obj.innerText.replace(/\[[0-9]+\]/g, "") || jQuery(obj).text().replace(/\[[0-9]+\]/g, "") || '').toLowerCase().indexOf(meta[3].toLowerCase()) >= 0;\r
+};\r
+\r
+//rename file\r
+//commit\r