@@ -68,46 +68,37 @@ export class ProjectRootNode extends RootNode {
68
68
return api
69
69
. actionQuery ( query , parameters )
70
70
. then ( ( data ) => data . result . content . map ( ( e ) => e . Name ) )
71
+ . then ( ( entries : string [ ] ) => {
72
+ // Sort the files and folders separately an case-insensitively
73
+ const folders : string [ ] = [ ] ;
74
+ const files : string [ ] = [ ] ;
75
+ const collator = new Intl . Collator ( "en" ) ;
76
+ for ( const entry of entries ) entry . includes ( "." ) ? files . push ( entry ) : folders . push ( entry ) ;
77
+ return [ ...folders . sort ( collator . compare ) , ...files . sort ( collator . compare ) ] ;
78
+ } )
71
79
. then ( ( entries : string [ ] ) =>
72
- entries
73
- . sort ( ( a , b ) => {
74
- if ( ( a . match ( / \. / g) || [ ] ) . length > ( b . match ( / \. / g) || [ ] ) . length ) {
75
- return 1 ;
76
- } else if ( ( a . match ( / \. / g) || [ ] ) . length < ( b . match ( / \. / g) || [ ] ) . length ) {
77
- return - 1 ;
80
+ entries . map ( ( entry ) => {
81
+ const fullName = this . fullName . length
82
+ ? `${ this . fullName } ${ this . category == "CSP" ? "/" : "." } ${ entry } `
83
+ : entry ;
84
+ if ( this . category == "CSP" ) {
85
+ if ( entry . includes ( "." ) ) {
86
+ return new CSPFileNode ( entry , fullName , this . options ) ;
78
87
} else {
79
- return 0 ;
88
+ return new ProjectRootNode ( entry , fullName , "dataNode:cspApplication" , this . category , this . options , true ) ;
80
89
}
81
- } )
82
- . map ( ( entry ) => {
83
- const fullName = this . fullName . length
84
- ? `${ this . fullName } ${ this . category == "CSP" ? "/" : "." } ${ entry } `
85
- : entry ;
86
- if ( this . category == "CSP" ) {
87
- if ( entry . includes ( "." ) ) {
88
- return new CSPFileNode ( entry , fullName , this . options ) ;
90
+ } else {
91
+ if ( entry . includes ( "." ) ) {
92
+ if ( [ "mac" , "int" , "inc" ] . includes ( entry . split ( "." ) . pop ( ) . toLowerCase ( ) ) ) {
93
+ return new RoutineNode ( entry , fullName , this . options ) ;
89
94
} else {
90
- return new ProjectRootNode (
91
- entry ,
92
- fullName ,
93
- "dataNode:cspApplication" ,
94
- this . category ,
95
- this . options ,
96
- true
97
- ) ;
95
+ return new ClassNode ( entry , fullName , this . options ) ;
98
96
}
99
97
} else {
100
- if ( entry . includes ( "." ) ) {
101
- if ( [ "mac" , "int" , "inc" ] . includes ( entry . split ( "." ) . pop ( ) . toLowerCase ( ) ) ) {
102
- return new RoutineNode ( entry , fullName , this . options ) ;
103
- } else {
104
- return new ClassNode ( entry , fullName , this . options ) ;
105
- }
106
- } else {
107
- return new ProjectRootNode ( entry , fullName , "dataNode:packageNode" , this . category , this . options ) ;
108
- }
98
+ return new ProjectRootNode ( entry , fullName , "dataNode:packageNode" , this . category , this . options ) ;
109
99
}
110
- } )
100
+ }
101
+ } )
111
102
) ;
112
103
}
113
104
public getItems4Export ( ) : Promise < string [ ] > {
0 commit comments