浏览代码

Move utility function to separate file

kgryte 5 年之前
父节点
当前提交
ef959efb5e

+ 1 - 2
packages/toc/src/generators/notebook/append_collapsible_heading.ts

@@ -56,8 +56,7 @@ function appendCollapsibleHeading(
       let isCollapsed = headings[k + 1].cellRef.model.metadata.get(
         'toc-hr-collapsed'
       ) as boolean;
-      isCollapsed = isCollapsed !== undefined ? isCollapsed : false;
-      collapseLevel = isCollapsed ? headings[k + 1].level : -1;
+      collapseLevel = isCollapsed || false ? headings[k + 1].level : -1;
     } else {
       prev = null;
       collapseLevel = -1;

+ 44 - 0
packages/toc/src/generators/notebook/append_heading.ts

@@ -0,0 +1,44 @@
+// Copyright (c) Jupyter Development Team.
+// Distributed under the terms of the Modified BSD License.
+
+import { INotebookHeading } from '../../utils/headings';
+import { isHeadingFiltered } from './is_heading_filtered';
+
+/**
+ * Appends a notebook heading to a list of headings.
+ *
+ * @private
+ * @param headings - list of notebook headings
+ * @param heading - rendered heading
+ * @param prev - previous heading
+ * @param collapseLevel - collapse level
+ * @param tags - filter tags
+ * @returns result tuple
+ */
+function appendHeading(
+  headings: INotebookHeading[],
+  heading: INotebookHeading,
+  prev: INotebookHeading | null,
+  collapseLevel: number,
+  tags: string[]
+): [INotebookHeading[], INotebookHeading | null] {
+  if (heading && !isHeadingFiltered(heading, tags) && heading.text) {
+    if (prev && prev.type === 'header') {
+      for (let j = headings.length - 1; j >= 0; j--) {
+        if (headings[j] === prev) {
+          headings[j].hasChild = true;
+        }
+      }
+    }
+    if (collapseLevel < 0) {
+      headings.push(heading);
+    }
+    prev = heading;
+  }
+  return [headings, prev];
+}
+
+/**
+ * Exports.
+ */
+export { appendHeading };

+ 3 - 37
packages/toc/src/generators/notebook/index.ts

@@ -11,10 +11,10 @@ import { isDOM } from '../../utils/is_dom';
 import { INotebookHeading } from '../../utils/headings';
 import { OptionsManager } from './options_manager';
 import { getCodeCellHeading } from './get_code_cell_heading';
-import { isHeadingFiltered } from './is_heading_filtered';
 import { getLastHeadingLevel } from './get_last_heading_level';
 import { getMarkdownHeading } from './get_markdown_heading';
 import { getRenderedHTMLHeading } from './get_rendered_html_heading';
+import { appendHeading } from './append_heading';
 import { appendCollapsibleHeading } from './append_collapsible_heading';
 import { render } from './render';
 import { toolbar } from './toolbar_generator';
@@ -82,7 +82,7 @@ function createNotebookGenerator(
               getLastHeadingLevel(headings),
               cell
             );
-            [headings, prev] = Private.addMDOrCode(
+            [headings, prev] = appendHeading(
               headings,
               heading,
               prev,
@@ -199,7 +199,7 @@ namespace Private {
   ): [INotebookHeading[], INotebookHeading | null, number] {
     // If the heading is MD and MD is shown, add to headings
     if (heading && heading.type === 'markdown' && showMarkdown) {
-      [headings, prevHeading] = Private.addMDOrCode(
+      [headings, prevHeading] = appendHeading(
         headings,
         heading,
         prevHeading,
@@ -219,40 +219,6 @@ namespace Private {
     }
     return [headings, prevHeading, collapseLevel];
   }
-
-  /**
-   * Appends a notebook heading to a list of headings.
-   *
-   * @private
-   * @param headings - list of notebook headings
-   * @param heading - rendered heading
-   * @param prev - previous heading
-   * @param collapseLevel - collapse level
-   * @param tags - filter tags
-   * @returns result tuple
-   */
-  export function addMDOrCode(
-    headings: INotebookHeading[],
-    heading: INotebookHeading,
-    prev: INotebookHeading | null,
-    collapseLevel: number,
-    tags: string[]
-  ): [INotebookHeading[], INotebookHeading | null] {
-    if (heading && !isHeadingFiltered(heading, tags) && heading.text) {
-      if (prev && prev.type === 'header') {
-        for (let j = headings.length - 1; j >= 0; j--) {
-          if (headings[j] === prev) {
-            headings[j].hasChild = true;
-          }
-        }
-      }
-      if (collapseLevel < 0) {
-        headings.push(heading);
-      }
-      prev = heading;
-    }
-    return [headings, prev];
-  }
 }
 
 /**