Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// holhashtags.js
- (function() {
- let traad = [];
- const hht_find_svar = (id) => {
- for (let i in traad) if (traad[i].id === id) return traad[i];
- return null;
- };
- const hht_find_ref = (svar, ref, put) => {
- for (let ri in svar.ref) if (svar.ref[ri] === ref) return ri;
- if (put) return svar.ref.push(ref) - 1;
- return -1;
- };
- const hht_tjek_svar = (svar) => {
- let tc = 0;
- let ti = 0;
- while ((tc < 10) && (ti < svar.text.childNodes.length)) {
- let te = svar.text.childNodes[ti];
- if (te.nodeType === 3) {
- let tp = te.nodeValue.indexOf('#');
- while (tp >= 0) {
- let tpe = tp + 1;
- while ((tpe < te.nodeValue.length) && ('0123456789'.indexOf(te.nodeValue.charAt(tpe)) >= 0)) tpe++;
- let val = parseInt(te.nodeValue.substring(tp+1, tpe));
- let ref = hht_find_svar(val);
- if (ref) {
- hht_find_ref(ref, svar.id, true);
- let foer = document.createTextNode(te.nodeValue.substring(0, tp));
- let link = document.createElement('a');
- link.href = '#' + (val === 0 ? 'traadstart' : val);
- link.innerText = '#' + val;
- link.className = 'hht_lnk';
- let efter = document.createTextNode(te.nodeValue.substring(tpe, te.nodeValue.length));
- svar.text.insertBefore(foer, te);
- svar.text.insertBefore(link, te);
- svar.text.insertBefore(efter, te);
- svar.text.removeChild(te);
- te = efter;
- tp = te.nodeValue.indexOf('#');
- tc++;
- } else tp = te.nodeValue.indexOf('#', tp + 1);
- }
- }
- ti++;
- }
- };
- const hht_lav_ref = (svar) => {
- if (svar.ref.length > 0) {
- let div = document.createElement('div');
- div.className = 'hht_div';
- let hdr = document.createElement('span');
- hdr.className = 'hht_hdr';
- hdr.innerText = 'Refereret: ';
- div.appendChild(hdr);
- for (let rfi in svar.ref) {
- let ref = document.createElement('a');
- ref.className = 'hht_ref';
- ref.innerText = '#' + svar.ref[rfi];
- ref.href = ref.innerText;
- div.appendChild(ref);
- }
- svar.text.appendChild(div);
- }
- };
- const hht_indlaes = () => {
- let desc = document.getElementById('ContentPlaceHolder_ContentPlaceHolder_traaddesc');
- let svar = document.getElementById('ContentPlaceHolder_ContentPlaceHolder_svar');
- if (desc && svar) {
- let css = document.createElement('style');
- css.setAttribute('type', 'text/css');
- css.innerText = 'div.hht_div { font-size:smaller; margin-top:.5em; padding-top:.5em; border-top:1px solid #eeeeee; }\n' +
- 'span.hht_hdr { color:gray; font-weight:bold; }\n' +
- 'a.hht_lnk { }\n' +
- 'a.hht_ref { margin-right:.25em; }';
- document.head.appendChild(css);
- traad.push({text:desc,id:0,ref:[]});
- for (let svi in svar.children) {
- let sve = svar.children[svi];
- let svo = {text:null,id:0,ref:[]};
- for (let chi in sve.children) {
- let che = sve.children[chi];
- if (che.className === 't47-svar-top') {
- let a = che.getElementsByTagName('a');
- if (a.length > 0) {
- let sid = parseInt(a[0].name);
- if ((!isNaN(sid)) && (sid > 0)) svo.id = sid;
- }
- } else if (che.className === 't47-svar-content') svo.text = che;
- }
- if (svo.text && (svo.id > 0)) traad.push(svo);
- }
- console.log('Scriptlet injection = ' + traad.length);
- for (let svi = 1; svi < traad.length; svi++) hht_tjek_svar(traad[svi]);
- for (let svi in traad) hht_lav_ref(traad[svi]);
- }
- };
- if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', hht_indlaes);
- else hht_indlaes();
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement