diff --git a/dip3.js b/dip3.js index d6b929c..ce4a4d1 100644 --- a/dip3.js +++ b/dip3.js @@ -1,127 +1,105 @@ -/* -var LANGS = {'python2': 'Python 2', 'java': 'Java', 'perl5': 'Perl 5', 'clang': 'C'}; -*/ //google.load("jquery", "1.3"); //google.setOnLoadCallback(function() { $(document).ready(function() { - hideTOC(); - - /* "hide", "open in new window", and (optionally) "download" widgets on code & screen blocks */ - var HS = {'visible': 'hide', 'hidden': 'show'}; - $("pre > code").each(function(i) { - var pre = $(this.parentNode); - if (pre.parents("table").length == 0) { - pre.addClass("code"); - } - }); - $("pre.code, pre.screen").each(function(i) { - this.id = "autopre" + i; - $(this).wrapInner('
'); - $(this).prepend('
[' + HS['visible'] + '] [open in new window]
'); - - $(this).prev("p.d").each(function(i) { - $(this).next("pre").find("div.w").append(" " + $(this).html()); - this.parentNode.removeChild(this); - }); - - /* create skip links */ - var postelm = $(this).next().get(0); - var postid = postelm.id || ("postautopre" + i); - postelm.id = postid; - $(this).before('

skip over this code listing'); - }); - - /* make skip links disappear until you tab to them */ - $(".skip a").blur(function() { - $(this).css({'position':'absolute','left':'0px','top':'-500px','width':'1px','height':'1px','overflow':'hidden'}); - }); - $(".skip a").blur(); - $(".skip a").focus(function() { - $(this).css({'position':'static','width':'auto','height':'auto'}); - }); - - // synchronized highlighting on callouts and their associated lines within code & screen blocks - var hip = {'background-color':'#eee','cursor':'default'}; - var unhip = {'background-color':'inherit','cursor':'inherit'}; - $("pre.code, pre.screen").each(function() { - $(this).find("a:not([href])").each(function(i) { - var a = $(this); - var li = a.parents("pre").next("ol").find("li:nth-child(" + (i+1) + ")"); - li.add(a).hover(function() { a.css(hip); li.css(hip); }, - function() { a.css(unhip); li.css(unhip); }); - }); - }); - - // synchronized highlighting on callouts and their associated table rows - $("table").each(function() { - $(this).find("tr:gt(0)").each(function(i) { - var tr = $(this); - var li = tr.parents("table").next("ol").find("li:nth-child(" + (i+1) + ")"); - if (li.length > 0) { - li.add(tr).hover(function() { tr.addClass("h"); li.addClass("h"); }, - function() { tr.removeClass("h"); li.removeClass("h"); }); - } - }); - }); - -/* - // toggle-able language comparisons - for (var lang in LANGS) { - $("blockquote.compare").filter("blockquote." + lang).each(function(i) { - $(this).wrapInner('

'); - $(this).prepend('
[ hide ' + LANGS[lang] + ' notes ]
'); - }); - } -*/ - -}); /* document.ready */ + hideTOC(); + + /* "hide", "open in new window", and (optionally) "download" widgets on code & screen blocks */ + var HS = {'visible': 'hide', 'hidden': 'show'}; + $("pre > code").each(function(i) { + var pre = $(this.parentNode); + if (pre.parents("table").length == 0) { + pre.addClass("code"); + } + }); + $("pre.code, pre.screen").each(function(i) { + this.id = "autopre" + i; + $(this).wrapInner('
'); + $(this).prepend('
[' + HS['visible'] + '] [open in new window]
'); + + $(this).prev("p.d").each(function(i) { + $(this).next("pre").find("div.w").append(" " + $(this).html()); + this.parentNode.removeChild(this); + }); + + /* create skip links */ + var postelm = $(this).next().get(0); + var postid = postelm.id || ("postautopre" + i); + postelm.id = postid; + $(this).before('

skip over this code listing'); + }); + + /* make skip links disappear until you tab to them */ + $(".skip a").blur(function() { + $(this).css({'position':'absolute','left':'0px','top':'-500px','width':'1px','height':'1px','overflow':'hidden'}); + }); + $(".skip a").blur(); + $(".skip a").focus(function() { + $(this).css({'position':'static','width':'auto','height':'auto'}); + }); + + // synchronized highlighting on callouts and their associated lines within code & screen blocks + var hip = {'background-color':'#eee','cursor':'default'}; + var unhip = {'background-color':'inherit','cursor':'inherit'}; + $("pre.code, pre.screen").each(function() { + $(this).find("a:not([href])").each(function(i) { + var a = $(this); + var li = a.parents("pre").next("ol").find("li:nth-child(" + (i+1) + ")"); + li.add(a).hover(function() { a.css(hip); li.css(hip); }, + function() { a.css(unhip); li.css(unhip); }); + }); + }); + + // synchronized highlighting on callouts and their associated table rows + $("table").each(function() { + $(this).find("tr:gt(0)").each(function(i) { + var tr = $(this); + var li = tr.parents("table").next("ol").find("li:nth-child(" + (i+1) + ")"); + if (li.length > 0) { + li.add(tr).hover(function() { tr.css(hip); li.css(hip); }, + function() { tr.css(unhip); li.css(unhip); }); + } + }); + }); + }); /* document.ready */ //}); /* google.setOnLoadCallback */ -/* -function toggleComparisonNotes(lang) { - // FIXME: save state in cookie, pass state to toggle(), reset text accordingly - $("blockquote." + lang + " div.block").toggle(false); - $("blockquote." + lang + " div.w a.toggle").text("show " + LANGS[lang] + " notes"); -} -*/ - function toggleCodeBlock(id) { - $("#" + id).find("div.b").toggle(); - var a = $("#" + id).find("a.toggle"); - a.text(a.text() == HS['visible'] ? HS['hidden'] : HS['visible']); + $("#" + id).find("div.b").toggle(); + var a = $("#" + id).find("a.toggle"); + a.text(a.text() == HS['visible'] ? HS['hidden'] : HS['visible']); } function plainTextOnClick(id) { - var clone = $("#" + id).clone(); - clone.find("div.w, span").remove(); - var win = window.open("about:blank", "plaintext", "toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=600,height=400,left=35,top=75"); - win.document.open(); - win.document.write('

' + clone.html());
-  win.document.close();
+    var clone = $("#" + id).clone();
+    clone.find("div.w, span").remove();
+    var win = window.open("about:blank", "plaintext", "toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=600,height=400,left=35,top=75");
+    win.document.open();
+    win.document.write('
' + clone.html());
+    win.document.close();
 }
 
 function hideTOC() {
-  var toc = ' show table of contents';
-  $("#toc").html(toc);
+    var toc = ' show table of contents';
+    $("#toc").html(toc);
 }
 
 function showTOC() {
-  var toc = '';
-  var old_level = 1;
-  $('h2,h3').each(function(i, h) {
-    level = parseInt(h.tagName.substring(1));
-    if (level < old_level) {
-      toc += '';
-    } else if (level > old_level) {
-      toc += '
    '; + var toc = ''; + var old_level = 1; + $('h2,h3').each(function(i, h) { + level = parseInt(h.tagName.substring(1)); + if (level < old_level) { + toc += '
'; + } else if (level > old_level) { + toc += '
    '; + } + toc += '
  1. ' + h.innerHTML + ''; + old_level = level; + }); + while (level > 1) { + toc += '
'; + level -= 1; } - toc += '
  • ' + h.innerHTML + ''; - old_level = level; - }); - while (level > 1) { - toc += ''; - level -= 1; - } - toc = ' hide table of contents' + toc; - $("#toc").html(toc); + toc = ' hide table of contents' + toc; + $("#toc").html(toc); } diff --git a/strings.html b/strings.html index 7130a58..75ce490 100644 --- a/strings.html +++ b/strings.html @@ -187,7 +187,7 @@ def approximate_size(size, a_kilobyte_is_1024_bytes=True):
    • The sys module holds information about the currently running Python instance. Since you just imported it, you can pass the sys module itself as an argument to the format() method. So the format specifier {0} refers to the sys module.
    • sys.modules is a dictionary of all the modules that have been imported in this Python instance. The keys are the module names as strings; the values are the module objects themselves. So the format specifier {0.modules} refers to the dictionary of imported modules. -
    • sys.modules["humansize"] is the humansize module which you just imported. The format specifier {0.modules[humansize]} refers the humansize module. Note the slight difference in syntax here. In real Python code, the keys of the sys.modules dictionary are strings; to refer to them, you need to put quotes around the module name (e.g. "humansize"). But within a format specifier, you skip the quotes around the dictionary key name (e.g. humansize). +
    • sys.modules["humansize"] is the humansize module which you just imported. The format specifier {0.modules[humansize]} refers to the humansize module. Note the slight difference in syntax here. In real Python code, the keys of the sys.modules dictionary are strings; to refer to them, you need to put quotes around the module name (e.g. "humansize"). But within a format specifier, you skip the quotes around the dictionary key name (e.g. humansize).
    • sys.modules["humansize"].SUFFIXES is the dictionary defined at the top of the humansize module. The format specifier {0.modules[humansize].SUFFIXES} refers to that dictionary.
    • sys.modules["humansize"].SUFFIXES[1000] is a list of SI suffixes: ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']. So the format specifier {0.modules[humansize].SUFFIXES[1000]} refers to that list.
    • sys.modules["humansize"].SUFFIXES[1000][0] is the first item of the list of SI suffixes: 'KB'. Therefore, the complete format specifier {0.modules[humansize].SUFFIXES[1000][0]} is replaced by the two-character string KB.