@@ -13,15 +13,13 @@ const t = require('typical')
1313
1414exports . parse = parse
1515exports . getStats = getStats
16- exports . groupBy = groupBy
1716
1817/**
1918 * @param {object[] } - jsdoc output
2019 * @param [options] {object}
2120 * @param [options.private] {boolean} - Include identifier documentation marked as `@private` in the output
2221 * @param [options.html] {boolean} - Enable experimental parsing of .html files.
2322 * @param [options.sort-by=[ 'scope', 'category', 'kind', 'order' ]] {string[]} - Sort by one of more fields, e.g. `--sort-by kind category`. Pass the special value `none` to remove the default sort order.
24- * @param [options.group-by] {string[]}
2523 */
2624function parse ( jsdocExplainOutput , options ) {
2725 options = new ParseOptions ( options )
@@ -44,10 +42,6 @@ function parse (jsdocExplainOutput, options) {
4442 data = sort ( data , [ 'scope' , 'category' , 'kind' , 'order' ] )
4543 }
4644
47- if ( options [ 'group-by' ] ) {
48- data = groupBy ( data , options [ 'group-by' ] )
49- }
50-
5145 return data
5246}
5347
@@ -86,74 +80,6 @@ function sort (array, sortBy) {
8680 }
8781}
8882
89- function _addGroup ( doclets , groupByFields ) {
90- return doclets . map ( doclet => {
91- doclet . _group = groupByFields
92- . map ( field => t . isDefined ( doclet [ field ] ) ? doclet [ field ] : null )
93- return doclet
94- } )
95- }
96-
97- /**
98- * takes the children of this, groups them, inserts group headings..
99- */
100- function groupBy ( doclets , groupByFields ) {
101- var commonSequence = require ( 'common-sequence' )
102-
103- /* don't modify the input array */
104- groupByFields = groupByFields . slice ( 0 )
105-
106- /* remove groupByFields that don't have any values */
107- // console.error(groupByFields)
108- groupByFields
109- . forEach ( group => {
110- const docletGroupValues = doclets
111- . filter ( doclet => doclet . kind !== 'constructor' )
112- . map ( d => d [ group ] )
113- let groupValues = a . unique ( docletGroupValues )
114- if ( groupValues . length <= 1 ) groupByFields = a . without ( groupByFields , group )
115- } )
116- // console.error(groupByFields)
117- doclets = _addGroup ( doclets , groupByFields )
118-
119- var inserts = [ ]
120- var prevGroup = [ ]
121- doclets . forEach ( ( doclet , index ) => {
122- if ( ! deepEqual ( doclet . _group , prevGroup ) ) {
123- var common = commonSequence ( doclet . _group , prevGroup )
124- doclet . _group . forEach ( ( group , i ) => {
125- if ( group !== common [ i ] && group !== null ) {
126- inserts . push ( {
127- index : index ,
128- group : group
129- } )
130- }
131- } )
132- }
133- prevGroup = doclet . _group
134- delete doclet . _group
135- } )
136-
137- /* insert group records */
138- inserts . reverse ( ) . forEach ( ( insert , i ) => {
139- // console.error(i, insert)
140- doclets . splice ( insert . index , 0 , { id : insert . group , kind : 'group' , parentId : null } )
141- } )
142-
143- /* update parentIds for group members */
144- let currentGroup = null
145- doclets . forEach ( ( d , index ) => {
146- d . parentId = currentGroup
147- if ( index === 0 ) {
148- currentGroup = d . id
149- } else {
150- if ( d . kind === 'group' ) currentGroup = d . id
151- }
152- } )
153-
154- return doclets
155- }
156-
15783function deepEqual ( a , b ) {
15884 return JSON . stringify ( a ) === JSON . stringify ( b )
15985}
0 commit comments