X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=index.js;h=d3326803fedcbd42455f5cebdc2654caf3197a16;hb=d3e33e708a783c634a3f8f5db634a7f03f8520f4;hp=2f6577266773498967a13dae88b859d087342a1d;hpb=66028830117ba6dd4e14a69580ed4b3e858a5241;p=mdref%2Fmdref diff --git a/index.js b/index.js index 2f65772..d332680 100644 --- a/index.js +++ b/index.js @@ -1,14 +1,16 @@ function is_constant(s) { - return s.length > 3 && s.toUpperCase(s) === s; + return s.length > 1 && s.toUpperCase(s) === s; } function is_variable(s) { return s.substring(0,1) === "$"; } +var is_in_string = false; + function type(s) { var i, j, t; - + console.log("type", s); // nothing if (!s.match(/[a-zA-Z]/)) { return; @@ -39,6 +41,8 @@ function type(s) { case "static": case "final": case "abstract": + case "self": + case "parent": // phrases case "Optional": case "optional": @@ -75,6 +79,7 @@ function type(s) { return ""; } } + function node(s) { //console.log("node", s); @@ -89,45 +94,60 @@ function wrap(n) { var $n = $(n) var a = []; - $n.text().split(/([^a-zA-Z_\\\$:]+)/).forEach(function(v) { + $n.text().split(/([^a-zA-Z0-9_\\\$:]+)/).forEach(function(v) { a.push(node(v)); }); $n.replaceWith(a); } function walk(i, e) { - //console.log("walk", i, e); + console.log("walk", i, e); - e && $.each(e.childNodes, function(i, n) { - //console.log(n.nodeName); + $.each($.makeArray(e.childNodes), function(i, n) { switch (n.nodeName) { case "A": + case "BR": + case "HR": break; case "#text": wrap(n); break; default: - walk(n); + walk(-1, n); + break; } }); } +function blink(c) { + var $c = $(c); + + $c.fadeOut("slow").queue(function(next) { + this.style.color = "red"; + next(); + }).fadeIn("fast").fadeOut("fast").queue(function(next) { + this.style.color = ""; + next(); + }).fadeIn("slow"); +} + function hashchange() { if (location.hash.length > 1) { var hash = location.hash.substring(1); + var name = is_variable(hash) ? ".var" : ".constant"; + var scrolled = false; - $(is_variable(hash) ? ".var" : ".constant").each(function(i, c) { - + $(name).each(hash.substring(hash.length-1) === "_" ? function(i, c) { + if (c.textContent.substring(0, hash.length) === hash) { + if (!scrolled) { + $(window).scrollTop($(c).offset().top - 100); + scrolled = true; + } + blink(c); + } + } : function(i, c) { if (c.textContent === hash) { - var $c = $(c); - - $(window).scrollTop($c.offset().top - 100); - $c.fadeOut("slow").queue(function(next) { - this.style.color = "red"; - next(); - }).fadeIn("fast").fadeOut("fast").queue(function(next) { - this.style.color = ""; - next(); - }).fadeIn("slow"); + $(window).scrollTop($(c).offset().top - 100); + blink(c); return false; } });