--- /dev/null
+/* 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
+/*\r
+ * Nitdoc UI module\r
+ *\r
+ * Enhance nitdoc usability with JS features\r
+ */\r
+define([\r
+ "jquery",\r
+ "ZeroClipboard",\r
+ "plugins/utils"\r
+], function($, ZeroClipboard, utils) {\r
+\r
+ var UI = {\r
+\r
+ // Allow user to fold sidebar nav elements on click\r
+ 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
+ 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
+ enableSidebarTextFilters: function(filterSelector) {\r
+ var div = $(document.createElement("div"))\r
+ .addClass("nitdoc-ui-filter")\r
+ .append(\r
+ $(document.createElement("input"))\r
+ .addClass("nitdoc-ui-filter-field")\r
+ .addClass("nitdoc-ui-filter-field-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-filter-field-notused");\r
+ $(this).val("filter...");\r
+ }\r
+ })\r
+ .focusin(function() {\r
+ if($(this).val() == "filter...") {\r
+ $(this).removeClass("nitdoc-ui-filter-field-notused");\r
+ $(this).val("");\r
+ }\r
+ })\r
+ );\r
+ $(filterSelector).after(div);\r
+ this.preloadSidebarTextFilters();\r
+ },\r
+\r
+ // Prealod filters using search query\r
+ preloadSidebarTextFilters: function() {\r
+ var anchor = 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
+ 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
+ // Allow user to filter sidebar box entries by name\r
+ enableSearchPageField: function(filterSelector) {\r
+ var div = $(document.createElement("div"))\r
+ .addClass("nitdoc-ui-searchpage-filter")\r
+ .append(\r
+ $(document.createElement("input"))\r
+ .addClass("nitdoc-ui-searchpage-field")\r
+ .addClass("nitdoc-ui-filter-field-notused")\r
+ .attr("type", "text")\r
+ .attr("value", "filter...")\r
+ .keyup(function() {\r
+ var box = $(this).parents(".content.fullpage").find("article.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-filter-field-notused");\r
+ $(this).val("filter...");\r
+ }\r
+ })\r
+ .focusin(function() {\r
+ if($(this).val() == "filter...") {\r
+ $(this).removeClass("nitdoc-ui-filter-field-notused");\r
+ $(this).val("");\r
+ }\r
+ })\r
+ );\r
+ $(filterSelector).after(div);\r
+ this.preloadSearchPageField();\r
+ },\r
+\r
+ // Prealod filter using search query\r
+ preloadSearchPageField: function() {\r
+ var anchor = 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-searchpage-field")\r
+ .val(query)\r
+ .removeClass("nitdoc-ui-notused")\r
+ .trigger("keyup");\r
+ }\r
+ };\r
+\r
+ UI.enableFolding(".sidebar");\r
+ UI.enableCopyToClipboard(".signature");\r
+ UI.enableSidebarTextFilters("nav.filterable h3");\r
+ UI.enableSidebarTypeFilters("nav.filterable");\r
+ UI.enableSearchPageField(".content.fullpage h1:contains('Search')");\r
+});\r
+++ /dev/null
-/* 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-filter-field")\r
- .addClass("nitdoc-ui-filter-field-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-filter-field-notused");\r
- $(this).val("filter...");\r
- }\r
- })\r
- .focusin(function() {\r
- if($(this).val() == "filter...") {\r
- $(this).removeClass("nitdoc-ui-filter-field-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
- // Allow user to filter sidebar box entries by name\r
- var enableSearchPageField = function(filterSelector) {\r
- var div = $(document.createElement("div"))\r
- .addClass("nitdoc-ui-searchpage-filter")\r
- .append(\r
- $(document.createElement("input"))\r
- .addClass("nitdoc-ui-searchpage-field")\r
- .addClass("nitdoc-ui-filter-field-notused")\r
- .attr("type", "text")\r
- .attr("value", "filter...")\r
- .keyup(function() {\r
- var box = $(this).parents(".content.fullpage").find("article.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-filter-field-notused");\r
- $(this).val("filter...");\r
- }\r
- })\r
- .focusin(function() {\r
- if($(this).val() == "filter...") {\r
- $(this).removeClass("nitdoc-ui-filter-field-notused");\r
- $(this).val("");\r
- }\r
- })\r
- );\r
- $(filterSelector).after(div);\r
- preloadSearchPageField();\r
- }\r
-\r
- // Prealod filter using search query\r
- var preloadSearchPageField = 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-searchpage-field")\r
- .val(query)\r
- .removeClass("nitdoc-ui-notused")\r
- .trigger("keyup");\r
- }\r
-\r
- // Public interface\r
- var ui = {\r
- enableFolding: enableFolding,\r
- enableCopyToClipboard: enableCopyToClipboard,\r
- enableSidebarTextFilters: enableSidebarTextFilters,\r
- enableSidebarTypeFilters: enableSidebarTypeFilters,\r
- enableSearchPageField: enableSearchPageField\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
- Nitdoc.UI.enableSearchPageField(".content.fullpage h1:contains('Search')");\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