@@ -136,31 +136,22 @@ function filterHtmlData(
136136
137137 parentNode . forEach ( ( node : IHtmlNode ) => {
138138 if ( Array . isArray ( node . children ) ) {
139- const previousNodes = [ ]
140-
141- // find available previous nodes
139+ // find previous comment
142140 for ( let i = 0 ; i < parentNode . length ; i ++ ) {
143141 if ( parentNode [ i ] == node ) {
144- if ( parentNode [ i - 1 ] ) {
145- previousNodes . push ( parentNode [ i - 1 ] )
146- }
142+ const _node = parentNode [ i - 1 ]
147143
148- if ( parentNode [ i - 2 ] ) {
149- previousNodes . push ( parentNode [ i - 2 ] )
144+ if ( node ) {
145+ node . comment =
146+ _node && _node . type == 'comment' && _node . content
147+ ? Utils . cleanText ( _node . content , true )
148+ : null
150149 }
151150
152151 break
153152 }
154153 }
155154
156- // get parent comment text
157- node . comment = previousNodes
158- . filter ( ( x ) => x . type == 'comment' )
159- . map ( ( x ) => Utils . cleanText ( x . content , true ) )
160- . filter ( ( x ) => x !== null )
161- . reverse ( )
162- . join ( ', ' )
163-
164155 node . order = nestedOrder
165156
166157 const children : IHtmlNode [ ] | null = filterHtmlData (
@@ -318,15 +309,15 @@ function getSassTree(nodeTree: IHtmlNode[] | IHtmlNode, deepth = 0) {
318309 *
319310 * @returns string
320311 */
321- function getHtmlTree ( nodeTree : IHtmlNode [ ] | IHtmlNode , deepth = 0 ) : string {
312+ function getHtmlTree ( nodeTree : IHtmlNode [ ] , deepth = 0 ) : string {
322313 if ( nodeTree ) {
323314 if ( ! Array . isArray ( nodeTree ) ) {
324- nodeTree = nodeTree . children
315+ // nodeTree = nodeTree.children
325316 }
326317
327318 let htmlTree = ''
328319
329- nodeTree . forEach ( function ( node : IHtmlNode ) {
320+ nodeTree . forEach ( function ( node : IHtmlNode , index ) {
330321 if ( node . type == 'element' ) {
331322 const className = getClassName ( node , deepth )
332323
@@ -375,10 +366,21 @@ function getHtmlTree(nodeTree: IHtmlNode[] | IHtmlNode, deepth = 0): string {
375366
376367 // sub tree
377368 if ( hasSubElement ) {
378- htmlTree += getHtmlTree ( node , deepth + 1 )
369+ htmlTree += getHtmlTree ( node . children , deepth + 1 )
370+ }
371+
372+ // prevent new line for siblings
373+ let isNextNodeSibling = false
374+
375+ if ( ! hasSubElement && nodeTree [ index + 1 ] ) {
376+ isNextNodeSibling =
377+ nodeTree [ index + 1 ] . tagName === node . tagName &&
378+ nodeTree [ index + 1 ] . comment === null
379379 }
380380
381- htmlTree += ( ! isVoidElement ? `</${ node . tagName } >` : '' ) + '\n'
381+ htmlTree +=
382+ ( ! isVoidElement ? `</${ node . tagName } >` : '' ) +
383+ ( ! isNextNodeSibling ? '\n' : '' )
382384 }
383385 } )
384386
0 commit comments