Mercurial > hatta
annotate examples/scripts.js @ 2491:c7b397a38422 default tip
Make it work with newer pygments
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sun, 10 Mar 2019 19:33:33 +0100 |
| parents | 9c9c0c032ae8 |
| children |
| rev | line source |
|---|---|
| 691 | 1 function hatta_dates() { |
|
488
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
2 /* Scan whole document for UTC dates and replace them with localtime versions */ |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
3 var parse_date = function (text) { |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
4 var m = /^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})Z$/.exec(text); |
| 649 | 5 return new Date(Date.UTC(+m[1], +m[2]-1, +m[3], +m[4], +m[5], +m[6])); |
|
488
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
6 } |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
7 var format_date = function (d) { |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
8 var p = function(n) {return ('00'+n).slice(-2); }; |
| 690 | 9 var tz = -d.getTimezoneOffset()/60; |
| 10 if (tz>=0) { tz = "+"+tz; } | |
| 649 | 11 return ""+d.getFullYear()+"-"+p(d.getMonth()+1)+"-"+p(d.getDate())+" "+p(d.getHours())+":"+p(d.getMinutes())+" GMT"+tz; |
|
488
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
12 } |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
13 var nodes = document.getElementsByTagName('abbr'); |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
14 for (var i=0; i<nodes.length; ++i) { |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
15 var node = nodes[i]; |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
16 if (node.className === 'date') { |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
17 var d = parse_date(node.getAttribute('title')); |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
18 if (d) { |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
19 node.textContent = format_date(d); |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
20 } |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
21 } |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
22 } |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
23 } |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
24 |
| 691 | 25 function hatta_editor() { |
|
489
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
26 var textBox = document.getElementById('editortext'); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
27 if (textBox) { |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
28 var jumpLine = 0+document.location.hash.substring(1); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
29 var textLines = textBox.textContent.match(/(.*\n)/g); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
30 var scrolledText = ''; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
31 for (var i = 0; i < textLines.length && i < jumpLine; ++i) { |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
32 scrolledText += textLines[i]; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
33 } |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
34 textBox.focus(); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
35 if (textBox.setSelectionRange) { |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
36 textBox.setSelectionRange(scrolledText.length, scrolledText.length); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
37 } else if (textBox.createTextRange) { |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
38 var range = textBox.createTextRange(); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
39 range.collapse(true); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
40 range.moveEnd('character', scrolledText.length); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
41 range.moveStart('character', scrolledText.length); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
42 range.select(); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
43 } |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
44 var scrollPre = document.createElement('pre'); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
45 textBox.parentNode.appendChild(scrollPre); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
46 var style = window.getComputedStyle(textBox, ''); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
47 scrollPre.style.font = style.font; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
48 scrollPre.style.border = style.border; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
49 scrollPre.style.outline = style.outline; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
50 scrollPre.style.lineHeight = style.lineHeight; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
51 scrollPre.style.letterSpacing = style.letterSpacing; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
52 scrollPre.style.fontFamily = style.fontFamily; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
53 scrollPre.style.fontSize = style.fontSize; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
54 scrollPre.style.padding = 0; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
55 scrollPre.style.overflow = 'scroll'; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
56 try { scrollPre.style.whiteSpace = "-moz-pre-wrap" } catch(e) {}; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
57 try { scrollPre.style.whiteSpace = "-o-pre-wrap" } catch(e) {}; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
58 try { scrollPre.style.whiteSpace = "-pre-wrap" } catch(e) {}; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
59 try { scrollPre.style.whiteSpace = "pre-wrap" } catch(e) {}; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
60 scrollPre.textContent = scrolledText; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
61 textBox.scrollTop = scrollPre.scrollHeight; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
62 scrollPre.parentNode.removeChild(scrollPre); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
63 } else { |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
64 var baseUrl = ''; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
65 var tags = document.getElementsByTagName('link'); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
66 for (var i = 0; i < tags.length; ++i) { |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
67 var tag = tags[i]; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
68 if (tag.getAttribute('type')==='application/wiki') { |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
69 baseUrl = tag.getAttribute('href'); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
70 } |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
71 } |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
72 if (baseUrl==='') { |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
73 return; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
74 } |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
75 var tagList = ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'pre', 'ul', 'div']; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
76 for (var j = 0; j < tagList.length; ++j) { |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
77 var tags = document.getElementsByTagName(tagList[j]); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
78 for (var i = 0; i < tags.length; ++i) { |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
79 var tag = tags[i]; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
80 if (tag.id && tag.id.match(/^line_\d+$/)) { |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
81 tag.ondblclick = function () { |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
82 var url = baseUrl+'#'+this.id.replace('line_', ''); |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
83 document.location.href = url; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
84 }; |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
85 } |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
86 } |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
87 } |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
88 } |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
89 } |
|
ae0c6bfd4372
move js_editor to external javascript file, get rid of js_editor option
sheep@ghostwheel
parents:
488
diff
changeset
|
90 |
|
488
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
91 window.onload = function () { |
| 691 | 92 hatta_dates(); |
| 93 hatta_editor(); | |
|
488
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
94 } |
|
eb6c3163e69c
example javascript for converting dates to localtime
sheep@ghostwheel
parents:
diff
changeset
|
95 |
