Advertisement
Guest User

hol-hashtags

a guest
Apr 14th, 2023
1,777
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /// holhashtags.js
  2. (function() {
  3.   let traad = [];
  4.   const hht_find_svar = (id) => {
  5.     for (let i in traad) if (traad[i].id === id) return traad[i];
  6.     return null;
  7.   };
  8.   const hht_find_ref = (svar, ref, put) => {
  9.     for (let ri in svar.ref) if (svar.ref[ri] === ref) return ri;
  10.     if (put) return svar.ref.push(ref) - 1;
  11.     return -1;
  12.   };
  13.   const hht_tjek_svar = (svar) => {
  14.     let tc = 0;
  15.     let ti = 0;
  16.     while ((tc < 10) && (ti < svar.text.childNodes.length)) {
  17.       let te = svar.text.childNodes[ti];
  18.       if (te.nodeType === 3) {
  19.         let tp = te.nodeValue.indexOf('#');
  20.         while (tp >= 0) {
  21.           let tpe = tp + 1;
  22.           while ((tpe < te.nodeValue.length) && ('0123456789'.indexOf(te.nodeValue.charAt(tpe)) >= 0)) tpe++;
  23.           let val = parseInt(te.nodeValue.substring(tp+1, tpe));
  24.           let ref = hht_find_svar(val);
  25.           if (ref) {
  26.             hht_find_ref(ref, svar.id, true);
  27.             let foer = document.createTextNode(te.nodeValue.substring(0, tp));
  28.             let link = document.createElement('a');
  29.             link.href = '#' + (val === 0 ? 'traadstart' : val);
  30.             link.innerText = '#' + val;
  31.             link.className = 'hht_lnk';
  32.             let efter = document.createTextNode(te.nodeValue.substring(tpe, te.nodeValue.length));
  33.             svar.text.insertBefore(foer, te);
  34.             svar.text.insertBefore(link, te);
  35.             svar.text.insertBefore(efter, te);
  36.             svar.text.removeChild(te);
  37.             te = efter;
  38.             tp = te.nodeValue.indexOf('#');
  39.             tc++;
  40.           } else tp = te.nodeValue.indexOf('#', tp + 1);
  41.         }
  42.       }
  43.       ti++;
  44.     }
  45.   };
  46.   const hht_lav_ref = (svar) => {
  47.     if (svar.ref.length > 0) {
  48.       let div = document.createElement('div');
  49.       div.className = 'hht_div';
  50.       let hdr = document.createElement('span');
  51.       hdr.className = 'hht_hdr';
  52.       hdr.innerText = 'Refereret: ';
  53.       div.appendChild(hdr);
  54.       for (let rfi in svar.ref) {
  55.         let ref = document.createElement('a');
  56.         ref.className = 'hht_ref';
  57.         ref.innerText = '#' + svar.ref[rfi];
  58.         ref.href = ref.innerText;
  59.         div.appendChild(ref);
  60.       }
  61.       svar.text.appendChild(div);
  62.     }
  63.   };
  64.   const hht_indlaes = () => {
  65.     let desc = document.getElementById('ContentPlaceHolder_ContentPlaceHolder_traaddesc');
  66.     let svar = document.getElementById('ContentPlaceHolder_ContentPlaceHolder_svar');
  67.     if (desc && svar) {
  68.       let css = document.createElement('style');
  69.       css.setAttribute('type', 'text/css');
  70.       css.innerText = 'div.hht_div { font-size:smaller; margin-top:.5em; padding-top:.5em; border-top:1px solid #eeeeee; }\n' +
  71.                       'span.hht_hdr { color:gray; font-weight:bold; }\n' +
  72.                       'a.hht_lnk {  }\n' +
  73.                       'a.hht_ref { margin-right:.25em; }';
  74.       document.head.appendChild(css);
  75.       traad.push({text:desc,id:0,ref:[]});
  76.       for (let svi in svar.children) {
  77.         let sve = svar.children[svi];
  78.         let svo = {text:null,id:0,ref:[]};
  79.         for (let chi in sve.children) {
  80.           let che = sve.children[chi];
  81.           if (che.className === 't47-svar-top') {
  82.             let a = che.getElementsByTagName('a');
  83.             if (a.length > 0) {
  84.               let sid = parseInt(a[0].name);
  85.               if ((!isNaN(sid)) && (sid > 0)) svo.id = sid;
  86.             }
  87.           } else if (che.className === 't47-svar-content') svo.text = che;
  88.         }
  89.         if (svo.text && (svo.id > 0)) traad.push(svo);
  90.       }
  91.       console.log('Scriptlet injection = ' + traad.length);
  92.       for (let svi = 1; svi < traad.length; svi++) hht_tjek_svar(traad[svi]);
  93.       for (let svi in traad) hht_lav_ref(traad[svi]);
  94.     }
  95.   };
  96.   if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', hht_indlaes);
  97.   else hht_indlaes();
  98. })();
  99.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement