aboutsummaryrefslogtreecommitdiff
path: root/content/sstallman.org/stallman.org.js
diff options
context:
space:
mode:
Diffstat (limited to 'content/sstallman.org/stallman.org.js')
-rw-r--r--content/sstallman.org/stallman.org.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/content/sstallman.org/stallman.org.js b/content/sstallman.org/stallman.org.js
new file mode 100644
index 0000000..f9f0e6b
--- /dev/null
+++ b/content/sstallman.org/stallman.org.js
@@ -0,0 +1,91 @@
+/*
+ Copyright © 2021 jahoti (jahoti@tilde.team)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+var div1 = document.querySelector('.column1'),
+ div2 = document.querySelector('.column2'),
+ div3 = document.querySelector('.column3'),
+ rest = document.querySelector('.rest'),
+ head = document.body;
+
+head.removeChild(div1);
+head.removeChild(div2);
+head.removeChild(div3);
+head.removeChild(rest);
+
+var wrapper, chaseHeader = div1.querySelector('#urgent');
+var urgent = chaseHeader.parentNode.nextElementSibling;
+chaseHeader.parentNode.removeChild(chaseHeader);
+urgent.parentNode.removeChild(urgent);
+
+var chaseHeader = div1.querySelector('#oughttobe');
+var oughttobe = chaseHeader.parentNode.nextElementSibling;
+var oughttobe_more = oughttobe.nextElementSibling;
+chaseHeader.parentNode.removeChild(chaseHeader);
+oughttobe.parentNode.removeChild(oughttobe)
+oughttobe_more.parentNode.removeChild(oughttobe_more)
+
+div1.style.width = '100%';
+
+var polnotes = div2.querySelector('iframe');
+polnotes.parentNode.removeChild(polnotes);
+
+var trailing = ['More'];
+var current, text, node;
+for (var child of rest.children) if (child.tagName === 'HR') chaseHeader = child;
+while (node = rest.firstChild) {
+ rest.removeChild(node);
+
+ if (node === chaseHeader) text = 'Footer';
+ else if (node.tagName === 'HR') continue;
+ else if (/H\d/.test(node.tagName)) text = '* ' + node.textContent.trim();
+
+ if (text) {
+ if (current && !current.children.length) trailing[trailing.length - 1].splice(1, 1);
+
+ if (text === '* Media/Press/Bios') {
+ text = current = undefined;
+ continue;
+ }
+
+ current = document.createElement('div');
+ if (node.children.length && node.firstElementChild.tagName === 'A' && !node.firstElementChild.href.startsWith('#')) {
+ trailing.push([text, current, node.firstElementChild.href]);
+ }
+ else trailing.push([text, current]);
+
+ text = undefined;
+ }
+ else current && current.append(node);
+}
+
+
+// Build the nav index, and then render the page
+
+Sparse([
+ 'stallman.org',
+ ['Home', urgent, polnotes],
+ ['* Urgent action items', urgent],
+ ['* Political Notes', polnotes, div2.firstElementChild.querySelector('a').href],
+ ['There Ought to Be a Law', oughttobe, oughttobe_more.href],
+ ['Media/Press/Bios', 'https://stallman.org/media.html']
+].concat(
+ trailing
+).concat([
+ ['Miscellaneous', div1, div2],
+ 'Miscellaneous',
+ ['* Misc. 1', div3],
+ ['* Misc. 2', head]
+])); \ No newline at end of file