Guest User

Untitled

a guest
Apr 25th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width">
  6. <title>JS Bin</title>
  7. <style id="jsbin-css">
  8. <>
  9. </style>
  10. </head>
  11. <body>
  12. <div id="Test"></div>
  13. <script id="jsbin-javascript">
  14. const input = ['# a', '## b', '## c', '### e', '# d', '# e', '## f', '### g']
  15.  
  16. const generateHeadingNumber = (titlesArray) => {
  17. let state = [1, 0, 0, 0, 0, 0];// 维护六级标号的状态
  18. let pre;
  19. let cur;
  20. const notZero = value => value > 0;
  21. let ret = [];
  22. // TODO: process titles array and generate coressponding heading number
  23. let level = 1;
  24. for (let i = 0; i < titlesArray.length; i++) {
  25. let [hn, title] = titlesArray[i].split(" ");
  26. cur = hn.length;
  27. // #号超过六个按六个算
  28. if (cur > 6) {
  29. cur = 6;
  30. }
  31. if (cur == pre) {
  32. state[cur - 1] += 1;
  33. }
  34. else if (cur > pre) {
  35. state[cur - 1] += 1;
  36. }
  37. else if (cur < pre) {
  38. for (let i = cur; i < 6; i++)
  39. state[i] = 0;
  40. state[cur - 1] += 1;
  41. }
  42. // 根据 state 生成标号
  43. let Headstate = state.filter(notZero).join(".")
  44.  
  45. // 生成结构化的titles
  46. let ht = {
  47. hn: Headstate,
  48. title: title
  49. }
  50.  
  51. // push进ret
  52. ret.push(ht);
  53. pre = cur; // 把当前的current作为下一级的preCurrent
  54. }
  55.  
  56. return ret;
  57. }
  58.  
  59. console.log(generateHeadingNumber(input))
  60. const generateToc = (titlesArray, domNode) => {
  61. // TODO: implement TOC(Table Of Contents) generation
  62. for(let i = 0; i < titlesArray.length; i++) {
  63. if(titlesArray[i].hn.length == 1){
  64. var UL = document.createElement("ul");
  65. }
  66. var LI = document.createElement("li");
  67. LI.innerHTML = titlesArray[i].hn + " " +titlesArray[i].title;
  68. UL.appendChild(LI);
  69. domNode.appendChild(UL);
  70. }
  71. }
  72. var div = document.createElement("div");
  73. generateToc(generateHeadingNumber(input), div);
  74. document.getElementById("Test").appendChild(div)
  75. </script>
  76.  
  77.  
  78. <script id="jsbin-source-css" type="text/css"><></script>
  79.  
  80. <script id="jsbin-source-javascript" type="text/javascript">const input = ['# a', '## b', '## c', '### e', '# d', '# e', '## f', '### g']
  81.  
  82. const generateHeadingNumber = (titlesArray) => {
  83. let state = [1, 0, 0, 0, 0, 0];// 维护六级标号的状态
  84. let pre;
  85. let cur;
  86. const notZero = value => value > 0;
  87. let ret = [];
  88. // TODO: process titles array and generate coressponding heading number
  89. let level = 1;
  90. for (let i = 0; i < titlesArray.length; i++) {
  91. let [hn, title] = titlesArray[i].split(" ");
  92. cur = hn.length;
  93. // #号超过六个按六个算
  94. if (cur > 6) {
  95. cur = 6;
  96. }
  97. if (cur == pre) {
  98. state[cur - 1] += 1;
  99. }
  100. else if (cur > pre) {
  101. state[cur - 1] += 1;
  102. }
  103. else if (cur < pre) {
  104. for (let i = cur; i < 6; i++)
  105. state[i] = 0;
  106. state[cur - 1] += 1;
  107. }
  108. // 根据 state 生成标号
  109. let Headstate = state.filter(notZero).join(".")
  110.  
  111. // 生成结构化的titles
  112. let ht = {
  113. hn: Headstate,
  114. title: title
  115. }
  116.  
  117. // push进ret
  118. ret.push(ht);
  119. pre = cur; // 把当前的current作为下一级的preCurrent
  120. }
  121.  
  122. return ret;
  123. }
  124.  
  125. console.log(generateHeadingNumber(input))
  126. const generateToc = (titlesArray, domNode) => {
  127. // TODO: implement TOC(Table Of Contents) generation
  128. for(let i = 0; i < titlesArray.length; i++) {
  129. if(titlesArray[i].hn.length == 1){
  130. var UL = document.createElement("ul");
  131. }
  132. var LI = document.createElement("li");
  133. LI.innerHTML = titlesArray[i].hn + " " +titlesArray[i].title;
  134. UL.appendChild(LI);
  135. domNode.appendChild(UL);
  136. }
  137. }
  138. var div = document.createElement("div");
  139. generateToc(generateHeadingNumber(input), div);
  140. document.getElementById("Test").appendChild(div)</script></body>
  141. </html>
Add Comment
Please, Sign In to add comment