Skip to content

Commit

Permalink
~ 修正跨级 heading 的统计问题
Browse files Browse the repository at this point in the history
  • Loading branch information
cloudcome committed Jan 13, 2017
1 parent 1aa1402 commit 25d95d3
Show file tree
Hide file tree
Showing 8 changed files with 80 additions and 7 deletions.
2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "blear.classes.safe-markdown",
"version": "1.0.9",
"version": "1.0.10",
"description": "Markdown 解析与【安全】渲染,适用于 Node 端",
"scripts": {
"live": "browser-sync start --config bs-config.js",
Expand Down
13 changes: 11 additions & 2 deletions src/index.js
Expand Up @@ -286,7 +286,6 @@ pro[_heading] = function () {
var headingLevelIndentList = the[_headingLevelIndentList];
var headingTocParentList = the[_headingTocParentList];


if (the[_headingStartIndent] === -1) {
the[_headingStartIndent] = level - 1;
}
Expand All @@ -299,7 +298,17 @@ pro[_heading] = function () {
}
// 返回 h2 => h1
else if (the[_lastHeadingLevel] > level) {
headingLevelIdList[the[_lastHeadingLevelIndex]] = 0;
var lastLevelIndex = the[_lastHeadingLevelIndex];

// 3.2.3.2
// ^ ^
// 需要把相差的这两位都置为 0
// 3.3
while (lastLevelIndex !== levelIndex) {
headingLevelIdList[lastLevelIndex] = 0;
lastLevelIndex--;
}

array.each(headingLevelIndentList.slice(0, level), function (index, value) {
indent += value;
});
Expand Down
2 changes: 1 addition & 1 deletion test/heading1.html
@@ -1,3 +1,3 @@
<style>.mention{background: #f6d734;margin:0 10px;}.toc-index{background: #000;color:#fff;margin-right:20px;}.heading-index{background: #000;color:#fff;margin-right:20px;}</style>

<div class="toc"><ul class="toc-1"><li class="toc-1-1"><a href="#heading-1"><span class="toc-index">1</span><span class="toc-text">1</span></a><ul class="toc-2"><li class="toc-2-1"><a href="#heading-1-1"><span class="toc-index">1.1</span><span class="toc-text">1.1</span></a><ul class="toc-3"><li class="toc-3-1"><a href="#heading-1-1-1"><span class="toc-index">1.1.1</span><span class="toc-text">1.1.1</span></a><ul class="toc-4"><li class="toc-4-1"><a href="#heading-1-1-1-1"><span class="toc-index">1.1.1.1</span><span class="toc-text">1.1.1.1</span></a><ul class="toc-5"><li class="toc-5-1"><a href="#heading-1-1-1-1-1"><span class="toc-index">1.1.1.1.1</span><span class="toc-text">1.1.1.1.1</span></a><ul class="toc-6"><li class="toc-6-1"><a href="#heading-1-1-1-1-1-1"><span class="toc-index">1.1.1.1.1.1</span><span class="toc-text">1.1.1.1.1.1</span></a></li><li class="toc-6-2"><a href="#heading-1-1-1-1-1-2"><span class="toc-index">1.1.1.1.1.2</span><span class="toc-text">1.1.1.1.1.2</span></a></li></ul></li><li class="toc-5-2"><a href="#heading-1-1-1-1-2"><span class="toc-index">1.1.1.1.2</span><span class="toc-text">1.1.1.1.2</span></a></li><li class="toc-5-3"><a href="#heading-1-1-1-1-3"><span class="toc-index">1.1.1.1.3</span><span class="toc-text">1.1.1.1.3</span></a></li></ul></li></ul></li></ul></li><li class="toc-2-2"><a href="#heading-1-2"><span class="toc-index">1.2</span><span class="toc-text">1.2</span></a></li></ul></li><li class="toc-1-2"><a href="#heading-2"><span class="toc-index">2</span><span class="toc-text">2</span></a><ul class="toc-2"><li class="toc-2-1"><a href="#heading-2-1"><span class="toc-index">2.1</span><span class="toc-text">2.1</span></a></li><li class="toc-2-2"><a href="#heading-2-2"><span class="toc-index">2.2</span><span class="toc-text">2.2</span></a></li></ul></li><li class="toc-1-3"><a href="#heading-3"><span class="toc-index">3</span><span class="toc-text">3</span></a></li></ul></div><h1 id="heading-1" class="heading heading_1"><a href="#heading-1" class="heading-link"><span class="heading-index">1</span><span class="heading-text">1</span></a></h1><h2 id="heading-1-1" class="heading heading_2"><a href="#heading-1-1" class="heading-link"><span class="heading-index">1.1</span><span class="heading-text">1.1</span></a></h2><h3 id="heading-1-1-1" class="heading heading_3"><a href="#heading-1-1-1" class="heading-link"><span class="heading-index">1.1.1</span><span class="heading-text">1.1.1</span></a></h3><h4 id="heading-1-1-1-1" class="heading heading_4"><a href="#heading-1-1-1-1" class="heading-link"><span class="heading-index">1.1.1.1</span><span class="heading-text">1.1.1.1</span></a></h4><h5 id="heading-1-1-1-1-1" class="heading heading_5"><a href="#heading-1-1-1-1-1" class="heading-link"><span class="heading-index">1.1.1.1.1</span><span class="heading-text">1.1.1.1.1</span></a></h5><h6 id="heading-1-1-1-1-1-1" class="heading heading_6"><a href="#heading-1-1-1-1-1-1" class="heading-link"><span class="heading-index">1.1.1.1.1.1</span><span class="heading-text">1.1.1.1.1.1</span></a></h6><h6 id="heading-1-1-1-1-1-2" class="heading heading_6"><a href="#heading-1-1-1-1-1-2" class="heading-link"><span class="heading-index">1.1.1.1.1.2</span><span class="heading-text">1.1.1.1.1.2</span></a></h6><h5 id="heading-1-1-1-1-2" class="heading heading_5"><a href="#heading-1-1-1-1-2" class="heading-link"><span class="heading-index">1.1.1.1.2</span><span class="heading-text">1.1.1.1.2</span></a></h5><h5 id="heading-1-1-1-1-3" class="heading heading_5"><a href="#heading-1-1-1-1-3" class="heading-link"><span class="heading-index">1.1.1.1.3</span><span class="heading-text">1.1.1.1.3</span></a></h5><h2 id="heading-1-2" class="heading heading_2"><a href="#heading-1-2" class="heading-link"><span class="heading-index">1.2</span><span class="heading-text">1.2</span></a></h2><h1 id="heading-2" class="heading heading_1"><a href="#heading-2" class="heading-link"><span class="heading-index">2</span><span class="heading-text">2</span></a></h1><h2 id="heading-2-1" class="heading heading_2"><a href="#heading-2-1" class="heading-link"><span class="heading-index">2.1</span><span class="heading-text">2.1</span></a></h2><h2 id="heading-2-2" class="heading heading_2"><a href="#heading-2-2" class="heading-link"><span class="heading-index">2.2</span><span class="heading-text">2.2</span></a></h2><h1 id="heading-3" class="heading heading_1"><a href="#heading-3" class="heading-link"><span class="heading-index">3</span><span class="heading-text">3</span></a></h1>
<div class="toc"><ul class="toc-1"><li class="toc-1-1"><a href="#heading-1"><span class="toc-index">1</span><span class="toc-text">1</span></a><ul class="toc-2"><li class="toc-2-1"><a href="#heading-1-1"><span class="toc-index">1.1</span><span class="toc-text">1.1</span></a><ul class="toc-3"><li class="toc-3-1"><a href="#heading-1-1-1"><span class="toc-index">1.1.1</span><span class="toc-text">1.1.1</span></a><ul class="toc-4"><li class="toc-4-1"><a href="#heading-1-1-1-1"><span class="toc-index">1.1.1.1</span><span class="toc-text">1.1.1.1</span></a><ul class="toc-5"><li class="toc-5-1"><a href="#heading-1-1-1-1-1"><span class="toc-index">1.1.1.1.1</span><span class="toc-text">1.1.1.1.1</span></a><ul class="toc-6"><li class="toc-6-1"><a href="#heading-1-1-1-1-1-1"><span class="toc-index">1.1.1.1.1.1</span><span class="toc-text">1.1.1.1.1.1</span></a></li><li class="toc-6-2"><a href="#heading-1-1-1-1-1-2"><span class="toc-index">1.1.1.1.1.2</span><span class="toc-text">1.1.1.1.1.2</span></a></li></ul></li><li class="toc-5-2"><a href="#heading-1-1-1-1-2"><span class="toc-index">1.1.1.1.2</span><span class="toc-text">1.1.1.1.2</span></a></li><li class="toc-5-3"><a href="#heading-1-1-1-1-3"><span class="toc-index">1.1.1.1.3</span><span class="toc-text">1.1.1.1.3</span></a></li></ul></li></ul></li></ul></li><li class="toc-2-2"><a href="#heading-1-2"><span class="toc-index">1.2</span><span class="toc-text">1.2</span></a></li></ul></li><li class="toc-1-2"><a href="#heading-2"><span class="toc-index">2</span><span class="toc-text">2</span></a><ul class="toc-2"><li class="toc-2-1"><a href="#heading-2-3"><span class="toc-index">2.3</span><span class="toc-text">2.1</span></a></li><li class="toc-2-2"><a href="#heading-2-4"><span class="toc-index">2.4</span><span class="toc-text">2.2</span></a></li></ul></li><li class="toc-1-3"><a href="#heading-3"><span class="toc-index">3</span><span class="toc-text">3</span></a></li></ul></div><h1 id="heading-1" class="heading heading_1"><a href="#heading-1" class="heading-link"><span class="heading-index">1</span><span class="heading-text">1</span></a></h1><h2 id="heading-1-1" class="heading heading_2"><a href="#heading-1-1" class="heading-link"><span class="heading-index">1.1</span><span class="heading-text">1.1</span></a></h2><h3 id="heading-1-1-1" class="heading heading_3"><a href="#heading-1-1-1" class="heading-link"><span class="heading-index">1.1.1</span><span class="heading-text">1.1.1</span></a></h3><h4 id="heading-1-1-1-1" class="heading heading_4"><a href="#heading-1-1-1-1" class="heading-link"><span class="heading-index">1.1.1.1</span><span class="heading-text">1.1.1.1</span></a></h4><h5 id="heading-1-1-1-1-1" class="heading heading_5"><a href="#heading-1-1-1-1-1" class="heading-link"><span class="heading-index">1.1.1.1.1</span><span class="heading-text">1.1.1.1.1</span></a></h5><h6 id="heading-1-1-1-1-1-1" class="heading heading_6"><a href="#heading-1-1-1-1-1-1" class="heading-link"><span class="heading-index">1.1.1.1.1.1</span><span class="heading-text">1.1.1.1.1.1</span></a></h6><h6 id="heading-1-1-1-1-1-2" class="heading heading_6"><a href="#heading-1-1-1-1-1-2" class="heading-link"><span class="heading-index">1.1.1.1.1.2</span><span class="heading-text">1.1.1.1.1.2</span></a></h6><h5 id="heading-1-1-1-1-2" class="heading heading_5"><a href="#heading-1-1-1-1-2" class="heading-link"><span class="heading-index">1.1.1.1.2</span><span class="heading-text">1.1.1.1.2</span></a></h5><h5 id="heading-1-1-1-1-3" class="heading heading_5"><a href="#heading-1-1-1-1-3" class="heading-link"><span class="heading-index">1.1.1.1.3</span><span class="heading-text">1.1.1.1.3</span></a></h5><h2 id="heading-1-2" class="heading heading_2"><a href="#heading-1-2" class="heading-link"><span class="heading-index">1.2</span><span class="heading-text">1.2</span></a></h2><h1 id="heading-2" class="heading heading_1"><a href="#heading-2" class="heading-link"><span class="heading-index">2</span><span class="heading-text">2</span></a></h1><h2 id="heading-2-3" class="heading heading_2"><a href="#heading-2-3" class="heading-link"><span class="heading-index">2.3</span><span class="heading-text">2.1</span></a></h2><h2 id="heading-2-4" class="heading heading_2"><a href="#heading-2-4" class="heading-link"><span class="heading-index">2.4</span><span class="heading-text">2.2</span></a></h2><h1 id="heading-3" class="heading heading_1"><a href="#heading-3" class="heading-link"><span class="heading-index">3</span><span class="heading-text">3</span></a></h1>
6 changes: 3 additions & 3 deletions test/heading4.html
@@ -1,6 +1,6 @@
<style>.mention{background: #f6d734;margin:0 10px;}.toc-index{background: #000;color:#fff;margin-right:20px;}.heading-index{background: #000;color:#fff;margin-right:20px;}</style>

<div class="toc"><ul class="toc-1"><li class="toc-1-1"><a href="#heading-1"><span class="toc-index">1</span><span class="toc-text">下载 <img src="bb" alt="aa"></span></a></li><li class="toc-1-2"><a href="#heading-2"><span class="toc-index">2</span><span class="toc-text">资源模块</span></a></li><li class="toc-1-3"><a href="#heading-3"><span class="toc-index">3</span><span class="toc-text">demo</span></a><ul class="toc-2"><li class="toc-2-1"><a href="#heading-3-1"><span class="toc-index">3.1</span><span class="toc-text">初始化目录结构</span></a></li><li class="toc-2-2"><a href="#heading-3-2"><span class="toc-index">3.2</span><span class="toc-text">初始化文件</span></a><ul class="toc-3"><li class="toc-3-1"><a href="#heading-3-2-1"><span class="toc-index">3.2.1</span><span class="toc-text">style.css</span></a></li><li class="toc-3-2"><a href="#heading-3-2-2"><span class="toc-index">3.2.2</span><span class="toc-text">template.html</span></a></li><li class="toc-3-3"><a href="#heading-3-2-3"><span class="toc-index">3.2.3</span><span class="toc-text">index.js</span></a></li><li class="toc-3-4"><a href="#heading-3-2-4"><span class="toc-index">3.2.4</span><span class="toc-text">package.json</span></a></li><li class="toc-3-5"><a href="#heading-3-2-5"><span class="toc-index">3.2.5</span><span class="toc-text">coolie.js</span></a></li><li class="toc-3-6"><a href="#heading-3-2-6"><span class="toc-index">3.2.6</span><span class="toc-text">coolie-config.js</span></a></li><li class="toc-3-7"><a href="#heading-3-2-7"><span class="toc-index">3.2.7</span><span class="toc-text">index.html</span></a></li></ul></li><li class="toc-2-3"><a href="#heading-3-3"><span class="toc-index">3.3</span><span class="toc-text">前端构建前运行</span></a></li><li class="toc-2-4"><a href="#heading-3-4"><span class="toc-index">3.4</span><span class="toc-text">前端构建配置</span></a></li><li class="toc-2-5"><a href="#heading-3-5"><span class="toc-index">3.5</span><span class="toc-text">前端构建</span></a></li><li class="toc-2-6"><a href="#heading-3-6"><span class="toc-index">3.6</span><span class="toc-text">前端构建后运行</span></a></li><li class="toc-2-7"><a href="#heading-3-7"><span class="toc-index">3.7</span><span class="toc-text">分析构建结果</span></a><ul class="toc-3"><li class="toc-3-1"><a href="#heading-3-7-1"><span class="toc-index">3.7.1</span><span class="toc-text">coolie-map.json</span></a></li><li class="toc-3-2"><a href="#heading-3-7-2"><span class="toc-index">3.7.2</span><span class="toc-text">index.html</span></a></li></ul></li></ul></li><li class="toc-1-4"><a href="#heading-4"><span class="toc-index">4</span><span class="toc-text">github</span></a></li></ul></div><h2 id="heading-1" class="heading heading_1"><a href="#heading-1" class="heading-link"><span class="heading-index">1</span><span class="heading-text">下载 <img src alt="aa"></span></a></h2><p>使用 coolie demo 命令下载本 demo。</p><pre><code>➜ coolie demo 8
<div class="toc"><ul class="toc-1"><li class="toc-1-1"><a href="#heading-1"><span class="toc-index">1</span><span class="toc-text">下载 <img src="bb" alt="aa"></span></a></li><li class="toc-1-2"><a href="#heading-2"><span class="toc-index">2</span><span class="toc-text">资源模块</span></a></li><li class="toc-1-3"><a href="#heading-3"><span class="toc-index">3</span><span class="toc-text">demo</span></a><ul class="toc-2"><li class="toc-2-1"><a href="#heading-3-1"><span class="toc-index">3.1</span><span class="toc-text">初始化目录结构</span></a></li><li class="toc-2-2"><a href="#heading-3-2"><span class="toc-index">3.2</span><span class="toc-text">初始化文件</span></a><ul class="toc-3"><li class="toc-3-1"><a href="#heading-3-2-1"><span class="toc-index">3.2.1</span><span class="toc-text">style.css</span></a></li><li class="toc-3-2"><a href="#heading-3-2-2"><span class="toc-index">3.2.2</span><span class="toc-text">template.html</span></a></li><li class="toc-3-3"><a href="#heading-3-2-3"><span class="toc-index">3.2.3</span><span class="toc-text">index.js</span></a></li><li class="toc-3-4"><a href="#heading-3-2-4"><span class="toc-index">3.2.4</span><span class="toc-text">package.json</span></a></li><li class="toc-3-5"><a href="#heading-3-2-5"><span class="toc-index">3.2.5</span><span class="toc-text">coolie.js</span></a></li><li class="toc-3-6"><a href="#heading-3-2-6"><span class="toc-index">3.2.6</span><span class="toc-text">coolie-config.js</span></a></li><li class="toc-3-7"><a href="#heading-3-2-7"><span class="toc-index">3.2.7</span><span class="toc-text">index.html</span></a></li></ul></li><li class="toc-2-3"><a href="#heading-3-3"><span class="toc-index">3.3</span><span class="toc-text">前端构建前运行</span></a></li><li class="toc-2-4"><a href="#heading-3-4"><span class="toc-index">3.4</span><span class="toc-text">前端构建配置</span></a></li><li class="toc-2-5"><a href="#heading-3-5"><span class="toc-index">3.5</span><span class="toc-text">前端构建</span></a></li><li class="toc-2-6"><a href="#heading-3-6"><span class="toc-index">3.6</span><span class="toc-text">前端构建后运行</span></a></li><li class="toc-2-7"><a href="#heading-3-7"><span class="toc-index">3.7</span><span class="toc-text">分析构建结果</span></a><ul class="toc-3"><li class="toc-3-1"><a href="#heading-3-7-8"><span class="toc-index">3.7.8</span><span class="toc-text">coolie-map.json</span></a></li><li class="toc-3-2"><a href="#heading-3-7-9"><span class="toc-index">3.7.9</span><span class="toc-text">index.html</span></a></li></ul></li></ul></li><li class="toc-1-4"><a href="#heading-4"><span class="toc-index">4</span><span class="toc-text">github</span></a></li></ul></div><h2 id="heading-1" class="heading heading_1"><a href="#heading-1" class="heading-link"><span class="heading-index">1</span><span class="heading-text">下载 <img src alt="aa"></span></a></h2><p>使用 coolie demo 命令下载本 demo。</p><pre><code>➜ coolie demo 8
</code></pre><h2 id="heading-2" class="heading heading_1"><a href="#heading-2" class="heading-link"><span class="heading-index">2</span><span class="heading-text">资源模块</span></a></h2><p>资源模块指的是图片、样式、html片段等非脚本模块(在 coolie 的世界里,一切皆是模块)。</p><p>使用方法:</p><pre><code>require(&#39;style.css&#39;);
</code></pre><p><a href="/introduction/module-type.md">coolie 支持的模块类型</a></p><h2 id="heading-3" class="heading heading_1"><a href="#heading-3" class="heading-link"><span class="heading-index">3</span><span class="heading-text">demo</span></a></h2><h3 id="heading-3-1" class="heading heading_2"><a href="#heading-3-1" class="heading-link"><span class="heading-index">3.1</span><span class="heading-text">初始化目录结构</span></a></h3><p>新建<code>coolie-demo8</code>目录:</p><pre><code>coolie-demo8
└── webroot-dev
Expand Down Expand Up @@ -233,7 +233,7 @@ <h3 id="heading-3-5" class="heading heading_2"><a href="#heading-3-5" class="hea
<li>主要区别是在控制台,加载时间从原来的 93ms 缩减到 16ms</li>
<li>界面上显示正常</li>
</ul>
<h3 id="heading-3-7" class="heading heading_2"><a href="#heading-3-7" class="heading-link"><span class="heading-index">3.7</span><span class="heading-text">分析构建结果</span></a></h3><h4 id="heading-3-7-1" class="heading heading_3"><a href="#heading-3-7-1" class="heading-link"><span class="heading-index">3.7.1</span><span class="heading-text">coolie-map.json</span></a></h4><p>首先看看构建之后的 coolie-map.json(<a href="/introduction/resource-relationship-map.md">资源关系解读</a>):</p><pre><code>{
<h3 id="heading-3-7" class="heading heading_2"><a href="#heading-3-7" class="heading-link"><span class="heading-index">3.7</span><span class="heading-text">分析构建结果</span></a></h3><h4 id="heading-3-7-8" class="heading heading_3"><a href="#heading-3-7-8" class="heading-link"><span class="heading-index">3.7.8</span><span class="heading-text">coolie-map.json</span></a></h4><p>首先看看构建之后的 coolie-map.json(<a href="/introduction/resource-relationship-map.md">资源关系解读</a>):</p><pre><code>{
&quot;/index.html&quot;: {
&quot;main&quot;: [
{
Expand All @@ -258,7 +258,7 @@ <h3 id="heading-3-7" class="heading heading_2"><a href="#heading-3-7" class="hea
&quot;res&quot;: []
}
}
</code></pre><h4 id="heading-3-7-2" class="heading heading_3"><a href="#heading-3-7-2" class="heading-link"><span class="heading-index">3.7.2</span><span class="heading-text">index.html</span></a></h4><p><code>index.html</code>页面引用了<code>index.js</code>模块,
</code></pre><h4 id="heading-3-7-9" class="heading heading_3"><a href="#heading-3-7-9" class="heading-link"><span class="heading-index">3.7.9</span><span class="heading-text">index.html</span></a></h4><p><code>index.html</code>页面引用了<code>index.js</code>模块,
并且该模块构建之后的文件名为<code>664c0ade7b31b0bafe89a6fe8685b2e1.js</code>
该入口模块引用了<code>style.css</code><code>template.html</code><code>coolie.png</code>(图片是在 style.css 里引用的)三个模块。</p><p>我们来看下入口模块<code>664c0ade7b31b0bafe89a6fe8685b2e1.js</code>的内容:</p><pre><code>/*coolie built*/
define(&quot;0&quot;,[&quot;1&quot;,&quot;2&quot;],function(e,n,d){e(&quot;1&quot;);document.getElementById(&quot;demo&quot;).innerHTML=e(&quot;2&quot;)});
Expand Down

0 comments on commit 25d95d3

Please sign in to comment.