File tree 1 file changed +8
-5
lines changed
1 file changed +8
-5
lines changed Original file line number Diff line number Diff line change @@ -125,16 +125,19 @@ var _ = _self.Prism = {
125
125
} ,
126
126
127
127
// Traverse a language definition with Depth First Search
128
- DFS : function ( o , callback , type ) {
128
+ DFS : function ( o , callback , type , visited ) {
129
+ visited = visited || { } ;
129
130
for ( var i in o ) {
130
131
if ( o . hasOwnProperty ( i ) ) {
131
132
callback . call ( o , i , o [ i ] , type || i ) ;
132
133
133
- if ( _ . util . type ( o [ i ] ) === 'Object' ) {
134
- _ . languages . DFS ( o [ i ] , callback ) ;
134
+ if ( _ . util . type ( o [ i ] ) === 'Object' && ! visited [ o [ i ] ] ) {
135
+ visited [ o [ i ] ] = true ;
136
+ _ . languages . DFS ( o [ i ] , callback , null , visited ) ;
135
137
}
136
- else if ( _ . util . type ( o [ i ] ) === 'Array' ) {
137
- _ . languages . DFS ( o [ i ] , callback , i ) ;
138
+ else if ( _ . util . type ( o [ i ] ) === 'Array' && ! visited [ o [ i ] ] ) {
139
+ visited [ o [ i ] ] = true ;
140
+ _ . languages . DFS ( o [ i ] , callback , i , visited ) ;
138
141
}
139
142
}
140
143
}
You can’t perform that action at this time.
0 commit comments