Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width">
- <title>JS Bin</title>
- <style id="jsbin-css">
- <>
- </style>
- </head>
- <body>
- <div id="Test"></div>
- <script id="jsbin-javascript">
- const input = ['# a', '## b', '## c', '### e', '# d', '# e', '## f', '### g']
- const generateHeadingNumber = (titlesArray) => {
- let state = [1, 0, 0, 0, 0, 0];// 维护六级标号的状态
- let pre;
- let cur;
- const notZero = value => value > 0;
- let ret = [];
- // TODO: process titles array and generate coressponding heading number
- let level = 1;
- for (let i = 0; i < titlesArray.length; i++) {
- let [hn, title] = titlesArray[i].split(" ");
- cur = hn.length;
- // #号超过六个按六个算
- if (cur > 6) {
- cur = 6;
- }
- if (cur == pre) {
- state[cur - 1] += 1;
- }
- else if (cur > pre) {
- state[cur - 1] += 1;
- }
- else if (cur < pre) {
- for (let i = cur; i < 6; i++)
- state[i] = 0;
- state[cur - 1] += 1;
- }
- // 根据 state 生成标号
- let Headstate = state.filter(notZero).join(".")
- // 生成结构化的titles
- let ht = {
- hn: Headstate,
- title: title
- }
- // push进ret
- ret.push(ht);
- pre = cur; // 把当前的current作为下一级的preCurrent
- }
- return ret;
- }
- console.log(generateHeadingNumber(input))
- const generateToc = (titlesArray, domNode) => {
- // TODO: implement TOC(Table Of Contents) generation
- for(let i = 0; i < titlesArray.length; i++) {
- if(titlesArray[i].hn.length == 1){
- var UL = document.createElement("ul");
- }
- var LI = document.createElement("li");
- LI.innerHTML = titlesArray[i].hn + " " +titlesArray[i].title;
- UL.appendChild(LI);
- domNode.appendChild(UL);
- }
- }
- var div = document.createElement("div");
- generateToc(generateHeadingNumber(input), div);
- document.getElementById("Test").appendChild(div)
- </script>
- <script id="jsbin-source-css" type="text/css"><></script>
- <script id="jsbin-source-javascript" type="text/javascript">const input = ['# a', '## b', '## c', '### e', '# d', '# e', '## f', '### g']
- const generateHeadingNumber = (titlesArray) => {
- let state = [1, 0, 0, 0, 0, 0];// 维护六级标号的状态
- let pre;
- let cur;
- const notZero = value => value > 0;
- let ret = [];
- // TODO: process titles array and generate coressponding heading number
- let level = 1;
- for (let i = 0; i < titlesArray.length; i++) {
- let [hn, title] = titlesArray[i].split(" ");
- cur = hn.length;
- // #号超过六个按六个算
- if (cur > 6) {
- cur = 6;
- }
- if (cur == pre) {
- state[cur - 1] += 1;
- }
- else if (cur > pre) {
- state[cur - 1] += 1;
- }
- else if (cur < pre) {
- for (let i = cur; i < 6; i++)
- state[i] = 0;
- state[cur - 1] += 1;
- }
- // 根据 state 生成标号
- let Headstate = state.filter(notZero).join(".")
- // 生成结构化的titles
- let ht = {
- hn: Headstate,
- title: title
- }
- // push进ret
- ret.push(ht);
- pre = cur; // 把当前的current作为下一级的preCurrent
- }
- return ret;
- }
- console.log(generateHeadingNumber(input))
- const generateToc = (titlesArray, domNode) => {
- // TODO: implement TOC(Table Of Contents) generation
- for(let i = 0; i < titlesArray.length; i++) {
- if(titlesArray[i].hn.length == 1){
- var UL = document.createElement("ul");
- }
- var LI = document.createElement("li");
- LI.innerHTML = titlesArray[i].hn + " " +titlesArray[i].title;
- UL.appendChild(LI);
- domNode.appendChild(UL);
- }
- }
- var div = document.createElement("div");
- generateToc(generateHeadingNumber(input), div);
- document.getElementById("Test").appendChild(div)</script></body>
- </html>
Add Comment
Please, Sign In to add comment