@@ -24,73 +24,95 @@ describe('toc', function() {
2424 var genResult = function ( options ) {
2525 options = _ . assign ( {
2626 class : 'toc' ,
27- list_number : true
27+ list_number : true ,
28+ max_depth : 6
2829 } , options ) ;
2930
3031 var className = options . class ;
3132 var listNumber = options . list_number ;
33+ var maxDepth = options . max_depth ;
3234
33- var result = [
34- '<ol class="' + className + '">' ,
35- '<li class="' + className + '-item ' + className + '-level-1">' ,
36- '<a class="' + className + '-link" href="#title_1">' ,
37- ifTrue ( listNumber , '<span class="' + className + '-number">1.</span> ' , '' ) ,
38- '<span class="' + className + '-text">Title 1</span>' ,
35+ var resultTitle_1_1_1 = [
36+ '<ol class="' + className + '-child">' ,
37+ '<li class="' + className + '-item ' + className + '-level-3">' ,
38+ '<a class="' + className + '-link" href="#title_1_1_1">' ,
39+ ifTrue ( listNumber , '<span class="' + className + '-number">1.1.1.</span> ' , '' ) ,
40+ '<span class="' + className + '-text">Title 1.1.1</span>' ,
41+ '</a>' ,
42+ '</li>' ,
43+ '</ol>'
44+ ] . join ( '' ) ;
45+
46+ var resultTitle_1_3_1 = [
47+ '<ol class="' + className + '-child">' ,
48+ '<li class="' + className + '-item ' + className + '-level-3">' ,
49+ '<a class="' + className + '-link" href="#title_1_3_1">' ,
50+ ifTrue ( listNumber , '<span class="' + className + '-number">1.3.1.</span> ' , '' ) ,
51+ '<span class="' + className + '-text">Title 1.3.1</span>' ,
52+ '</a>' ,
53+ '</li>' ,
54+ '</ol>'
55+ ] . join ( '' ) ;
56+
57+ var resultTitle_1_1 = [
58+ '<ol class="' + className + '-child">' ,
59+ '<li class="' + className + '-item ' + className + '-level-2">' ,
60+ '<a class="' + className + '-link" href="#title_1_1">' ,
61+ ifTrue ( listNumber , '<span class="' + className + '-number">1.1.</span> ' , '' ) ,
62+ '<span class="' + className + '-text">Title 1.1</span>' ,
63+ '</a>' ,
64+ ifTrue ( maxDepth >= 3 , resultTitle_1_1_1 , '' ) ,
65+ '</li>' ,
66+ '<li class="' + className + '-item ' + className + '-level-2">' ,
67+ '<a class="' + className + '-link" href="#title_1_2">' ,
68+ ifTrue ( listNumber , '<span class="' + className + '-number">1.2.</span> ' , '' ) ,
69+ '<span class="' + className + '-text">Title 1.2</span>' ,
70+ '</a>' ,
71+ '</li>' ,
72+ '<li class="' + className + '-item ' + className + '-level-2">' ,
73+ '<a class="' + className + '-link" href="#title_1_3">' ,
74+ ifTrue ( listNumber , '<span class="' + className + '-number">1.3.</span> ' , '' ) ,
75+ '<span class="' + className + '-text">Title 1.3</span>' ,
3976 '</a>' ,
40- '<ol class="' + className + '-child">' ,
41- '<li class="' + className + '-item ' + className + '-level-2">' ,
42- '<a class="' + className + '-link" href="#title_1_1">' ,
43- ifTrue ( listNumber , '<span class="' + className + '-number">1.1.</span> ' , '' ) ,
44- '<span class="' + className + '-text">Title 1.1</span>' ,
45- '</a>' ,
46- '<ol class="' + className + '-child">' ,
47- '<li class="' + className + '-item ' + className + '-level-3">' ,
48- '<a class="' + className + '-link" href="#title_1_1_1">' ,
49- ifTrue ( listNumber , '<span class="' + className + '-number">1.1.1.</span> ' , '' ) ,
50- '<span class="' + className + '-text">Title 1.1.1</span>' ,
51- '</a>' ,
52- '</li>' ,
53- '</ol>' ,
54- '</li>' ,
55- '<li class="' + className + '-item ' + className + '-level-2">' ,
56- '<a class="' + className + '-link" href="#title_1_2">' ,
57- ifTrue ( listNumber , '<span class="' + className + '-number">1.2.</span> ' , '' ) ,
58- '<span class="' + className + '-text">Title 1.2</span>' ,
59- '</a>' ,
60- '</li>' ,
61- '<li class="' + className + '-item ' + className + '-level-2">' ,
62- '<a class="' + className + '-link" href="#title_1_3">' ,
63- ifTrue ( listNumber , '<span class="' + className + '-number">1.3.</span> ' , '' ) ,
64- '<span class="' + className + '-text">Title 1.3</span>' ,
65- '</a>' ,
66- '<ol class="' + className + '-child">' ,
67- '<li class="' + className + '-item ' + className + '-level-3">' ,
68- '<a class="' + className + '-link" href="#title_1_3_1">' ,
69- ifTrue ( listNumber , '<span class="' + className + '-number">1.3.1.</span> ' , '' ) ,
70- '<span class="' + className + '-text">Title 1.3.1</span>' ,
71- '</a>' ,
72- '</li>' ,
73- '</ol>' ,
74- '</li>' ,
75- '</ol>' ,
77+ ifTrue ( maxDepth >= 3 , resultTitle_1_3_1 , '' ) ,
7678 '</li>' ,
77- '<li class="' + className + '-item ' + className + '-level-1">' ,
78- '<a class="' + className + '-link" href="#title_2">' ,
79- ifTrue ( listNumber , '<span class="' + className + '-number">2.</span> ' , '' ) ,
80- '<span class="' + className + '-text">Title 2</span>' ,
79+ '</ol>'
80+ ] . join ( '' ) ;
81+
82+ var resultTitle_2_1 = [
83+ '<ol class="' + className + '-child">' ,
84+ '<li class="' + className + '-item ' + className + '-level-2">' ,
85+ '<a class="' + className + '-link" href="#title_2_1">' ,
86+ ifTrue ( listNumber , '<span class="' + className + '-number">2.1.</span> ' , '' ) ,
87+ '<span class="' + className + '-text">Title 2.1</span>' ,
8188 '</a>' ,
82- '<ol class="' + className + '-child">' ,
83- '<li class="' + className + '-item ' + className + '-level-2">' ,
84- '<a class="' + className + '-link" href="#title_2_1">' ,
85- ifTrue ( listNumber , '<span class="' + className + '-number">2.1.</span> ' , '' ) ,
86- '<span class="' + className + '-text">Title 2.1</span>' ,
87- '</a>' ,
88- '</li>' ,
89- '</ol>' ,
9089 '</li>' ,
9190 '</ol>'
9291 ] . join ( '' ) ;
9392
93+ var resultAllTitles_Level1 = [
94+ '<li class="' + className + '-item ' + className + '-level-1">' ,
95+ '<a class="' + className + '-link" href="#title_1">' ,
96+ ifTrue ( listNumber , '<span class="' + className + '-number">1.</span> ' , '' ) ,
97+ '<span class="' + className + '-text">Title 1</span>' ,
98+ '</a>' ,
99+ ifTrue ( maxDepth >= 2 , resultTitle_1_1 , '' ) ,
100+ '</li>' ,
101+ '<li class="' + className + '-item ' + className + '-level-1">' ,
102+ '<a class="' + className + '-link" href="#title_2">' ,
103+ ifTrue ( listNumber , '<span class="' + className + '-number">2.</span> ' , '' ) ,
104+ '<span class="' + className + '-text">Title 2</span>' ,
105+ '</a>' ,
106+ ifTrue ( maxDepth >= 2 , resultTitle_2_1 , '' ) ,
107+ '</li>'
108+ ] . join ( '' ) ;
109+
110+ var result = [
111+ '<ol class="' + className + '">' ,
112+ ifTrue ( maxDepth >= 1 , resultAllTitles_Level1 , '' ) ,
113+ '</ol>'
114+ ] . join ( '' ) ;
115+
94116 return result ;
95117 } ;
96118
@@ -113,4 +135,12 @@ describe('toc', function() {
113135
114136 genResult ( options ) . should . eql ( toc ( html , options ) ) ;
115137 } ) ;
138+
139+ it ( 'max_depth' , function ( ) {
140+ var options = {
141+ max_depth : 2
142+ } ;
143+
144+ genResult ( options ) . should . eql ( toc ( html , options ) ) ;
145+ } ) ;
116146} ) ;
0 commit comments