@@ -3,78 +3,78 @@ import { visit } from 'unist-util-visit'
33
44export const rehypeCollapsibleToc = ( ) => {
55 return ( tree : Root ) => {
6- const rootUlElement : Element = {
6+ const rootOlElement : Element = {
77 type : 'element' ,
88 tagName : 'ol' ,
99 properties : { } ,
1010 children : [ ]
1111 }
1212
1313 visit ( tree , 'element' , node => {
14- visitorCallback ( node , rootUlElement )
14+ visitorCallback ( node , rootOlElement )
1515 } )
1616
17- const detailsElement = createCollapsibleToc ( rootUlElement )
17+ const detailsElement = createCollapsibleToc ( rootOlElement )
1818 tree . children . unshift ( detailsElement )
1919 }
2020}
2121
22- const visitorCallback = ( node : Element , rootUlElement : Element ) => {
22+ const visitorCallback = ( node : Element , rootOlElement : Element ) => {
2323 if ( ! / ^ h [ 2 - 6 ] $ / . test ( node . tagName ) ) {
2424 return
2525 }
2626
2727 const headingLevel = getHeadingLevelFromElement ( node )
2828 const liElement = createListItemElement ( node )
29- const rootUlElementChildren = assertElementNodeList ( rootUlElement . children )
29+ const rootOlElementChildren = assertElementNodeList ( rootOlElement . children )
3030
3131 // h2ならolに直接追加
3232 if ( headingLevel === 2 ) {
33- rootUlElement . children . push ( liElement )
33+ rootOlElement . children . push ( liElement )
3434 return
3535 }
3636
3737 // 一番新しいliから、同じレベルのheadingを入れているolを探す
3838 const rootElementHeadingLevel = 2
39- const sameLevelUlElement = searchSameLevelUlElement (
40- rootUlElement ,
39+ const sameLevelOlElement = searchSameLevelOlElement (
40+ rootOlElement ,
4141 headingLevel ,
4242 rootElementHeadingLevel
4343 )
44- if ( sameLevelUlElement ) {
45- sameLevelUlElement . children . push ( liElement )
44+ if ( sameLevelOlElement ) {
45+ sameLevelOlElement . children . push ( liElement )
4646 return
4747 }
4848
4949 // 一番新しいliの一番深いところに新しくolを作って追加
50- const deepestLiElement = getDeepestLiElement ( rootUlElementChildren )
51- const newUlElement = createUlElement ( )
52- newUlElement . children . push ( liElement )
53- deepestLiElement . children . push ( newUlElement )
50+ const deepestLiElement = getDeepestLiElement ( rootOlElementChildren )
51+ const newOlElement = createOlElement ( )
52+ newOlElement . children . push ( liElement )
53+ deepestLiElement . children . push ( newOlElement )
5454}
5555
5656/**
5757 * 引数のolに入っている一番新しいliの中で、levelと同じ見出しレベルのli要素を返す
5858 */
59- const searchSameLevelUlElement = (
60- rootUlElement : Element ,
59+ const searchSameLevelOlElement = (
60+ rootOlElement : Element ,
6161 level : number ,
6262 rootElementHeadingLevel : number
6363) : Element | undefined => {
6464 const rootLiElement = assertElementNode (
65- rootUlElement . children [ rootUlElement . children . length - 1 ]
65+ rootOlElement . children [ rootOlElement . children . length - 1 ]
6666 )
6767 if ( level === rootElementHeadingLevel ) {
68- return rootUlElement
68+ return rootOlElement
6969 }
7070
71- const childUlElement = assertElementNodeList ( rootLiElement . children ) [ 1 ]
72- if ( childUlElement === undefined ) {
71+ const childOlElement = assertElementNodeList ( rootLiElement . children ) [ 1 ]
72+ if ( childOlElement === undefined ) {
7373 return
7474 }
7575
76- return searchSameLevelUlElement (
77- childUlElement ,
76+ return searchSameLevelOlElement (
77+ childOlElement ,
7878 level ,
7979 rootElementHeadingLevel + 1
8080 )
@@ -83,9 +83,9 @@ const searchSameLevelUlElement = (
8383/**
8484 * 引数のolに入っている一番新しいliの中で、一番深いli要素を取得する
8585 */
86- const getDeepestLiElement = ( rootUlElement : Element [ ] ) : Element => {
86+ const getDeepestLiElement = ( rootOlElement : Element [ ] ) : Element => {
8787 const rootLiElement = assertElementNode (
88- rootUlElement [ rootUlElement . length - 1 ]
88+ rootOlElement [ rootOlElement . length - 1 ]
8989 )
9090
9191 const olElement = assertElementNodeList ( rootLiElement . children ) [ 1 ]
@@ -101,7 +101,7 @@ const getHeadingLevelFromElement = (headingElement: Element) => {
101101 return headingLevel
102102}
103103
104- const createUlElement = ( ) : Element => {
104+ const createOlElement = ( ) : Element => {
105105 return {
106106 type : 'element' ,
107107 tagName : 'ol' ,
@@ -137,7 +137,7 @@ const createListItemElement = (node: Element): Element => {
137137 }
138138}
139139
140- const createCollapsibleToc = ( rootUlElement : Element ) : Element => {
140+ const createCollapsibleToc = ( rootOlElement : Element ) : Element => {
141141 const summaryElement : Element = {
142142 type : 'element' ,
143143 tagName : 'summary' ,
@@ -148,7 +148,7 @@ const createCollapsibleToc = (rootUlElement: Element): Element => {
148148 type : 'element' ,
149149 tagName : 'details' ,
150150 properties : { } ,
151- children : [ summaryElement , rootUlElement ]
151+ children : [ summaryElement , rootOlElement ]
152152 }
153153
154154 return detailsElement
0 commit comments