codeblock-script.html 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <script>
  2. 'use strict';
  3. // ====================== markdown code block ======================
  4. function wrap(el, wrapper) {
  5. el.parentNode.insertBefore(wrapper, el);
  6. wrapper.appendChild(el);
  7. }
  8. (function () {
  9. var singleContentsElem = document.querySelector('.single__contents');
  10. singleContentsElem ?
  11. singleContentsElem.querySelectorAll('pre > code').forEach(function(elem) {
  12. var dataLang = elem.getAttribute('data-lang');
  13. var dataLangWrapper = document.createElement('div');
  14. var code = null;
  15. var codeTitle = null;
  16. if (dataLang && dataLang.includes(':')) {
  17. code = dataLang.split(':')[0];
  18. codeTitle = dataLang.split(':')[1];
  19. dataLangWrapper.className = 'language-' + code;
  20. dataLangWrapper.setAttribute('data-lang', codeTitle);
  21. elem.className = 'language-' + code;
  22. elem.setAttribute('data-lang', codeTitle);
  23. elem.setAttribute('id', codeTitle);
  24. }
  25. if (!dataLang || codeTitle) {
  26. wrap(elem.parentNode, dataLangWrapper);
  27. }
  28. }) : null;
  29. })();
  30. // =================================================================
  31. // ================ codeblock line number to symbol ================
  32. var dollarCodeElem = document.querySelectorAll('div.language-\\$');
  33. var gtCodeElem = document.querySelectorAll('div.language-\\>');
  34. dollarCodeElem ?
  35. dollarCodeElem.forEach(function(elem) {
  36. var lnts = elem.parentNode.parentNode ? elem.parentNode.parentNode.querySelectorAll('.lnt') : null;
  37. lnts ?
  38. lnts.forEach(function(lnt) {
  39. lnt.innerHTML = '$<br/>';
  40. }) : null;
  41. }) : null;
  42. gtCodeElem ?
  43. gtCodeElem.forEach(function(elem) {
  44. var lnts = elem.parentNode.parentNode ? elem.parentNode.parentNode.querySelectorAll('.lnt') : null;
  45. lnts ?
  46. lnts.forEach(function(lnt) {
  47. lnt.innerHTML = '><br/>';
  48. }) : null;
  49. }) : null;
  50. // =================================================================
  51. </script>