1
1
import * as _ from 'lodash'
2
- import { parse } from 'path'
3
2
4
3
declare global {
5
4
// eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -54,66 +53,59 @@ export function appearsToBeChartFolder(extensions: string[]) {
54
53
}
55
54
56
55
/**
57
- * @returns extension of a file, including the dot. (e.g. "song.ogg" -> ". ogg")
56
+ * @returns extension of a file, excluding the dot. (e.g. "song.ogg" -> "ogg")
58
57
*/
59
58
export function getExtension ( fileName : string ) {
60
- return parse ( fileName ) . ext
59
+ return _ . last ( fileName . split ( '.' ) ) ?? ''
61
60
}
62
61
63
62
/**
64
- *
65
- * @returns basename of a file, without the extension. (e.g. "song.ogg" -> "song")
63
+ * @returns basename of a file, excluding the dot. (e.g. "song.ogg" -> "song")
66
64
*/
67
65
export function getBasename ( fileName : string ) {
68
- return parse ( fileName ) . name
66
+ const parts = fileName . split ( '.' )
67
+ return parts . length > 1 ? parts . slice ( 0 , - 1 ) . join ( '.' ) : fileName
69
68
}
70
69
71
70
/**
72
- * @returns `true` if `name ` has a valid sng file extension.
71
+ * @returns `true` if `fileName ` has a valid ini file extension.
73
72
*/
74
- export function hasSngExtension ( name : string ) {
75
- return '.sng ' === getExtension ( name ) . toLowerCase ( )
73
+ export function hasIniExtension ( fileName : string ) {
74
+ return 'ini ' === getExtension ( fileName ) . toLowerCase ( )
76
75
}
77
76
78
77
/**
79
- * @returns `true` if `name` has a valid ini file extension .
78
+ * @returns `true` if `fileName` is a valid ini fileName .
80
79
*/
81
- export function hasIniExtension ( name : string ) {
82
- return '.ini' === getExtension ( name ) . toLowerCase ( )
80
+ export function hasIniName ( fileName : string ) {
81
+ return fileName === 'song.ini'
83
82
}
84
83
85
84
/**
86
- * @returns `true` if `name` is a valid ini fileName .
85
+ * @returns `true` if `fileName` has a valid chart file extension .
87
86
*/
88
- export function hasIniName ( name : string ) {
89
- return name === 'song.ini'
87
+ export function hasChartExtension ( fileName : string ) {
88
+ return [ 'chart' , 'mid' ] . includes ( getExtension ( fileName ) . toLowerCase ( ) )
90
89
}
91
90
92
91
/**
93
- * @returns `true` if `name` has a valid chart file extension .
92
+ * @returns `true` if `fileName` is a valid chart fileName .
94
93
*/
95
- export function hasChartExtension ( name : string ) {
96
- return [ '.chart' , '.mid' ] . includes ( getExtension ( name ) . toLowerCase ( ) )
94
+ export function hasChartName ( fileName : string ) {
95
+ return [ 'notes .chart' , 'notes .mid' ] . includes ( fileName )
97
96
}
98
97
99
98
/**
100
- * @returns `true` if `name` is a valid chart fileName .
99
+ * @returns `true` if `fileName` has a valid chart audio file extension .
101
100
*/
102
- export function hasChartName ( name : string ) {
103
- return [ 'notes.chart ' , 'notes.mid' ] . includes ( name )
101
+ export function hasAudioExtension ( fileName : string ) {
102
+ return [ 'ogg ' , 'mp3' , 'wav' , 'opus' ] . includes ( getExtension ( fileName ) . toLowerCase ( ) )
104
103
}
105
104
106
105
/**
107
- * @returns `true` if `name ` has a valid chart audio file extension .
106
+ * @returns `true` if `fileName ` has a valid chart audio fileName .
108
107
*/
109
- export function hasAudioExtension ( name : string ) {
110
- return [ '.ogg' , '.mp3' , '.wav' , '.opus' ] . includes ( getExtension ( name ) . toLowerCase ( ) )
111
- }
112
-
113
- /**
114
- * @returns `true` if `name` has a valid chart audio fileName.
115
- */
116
- export function hasAudioName ( name : string ) {
108
+ export function hasAudioName ( fileName : string ) {
117
109
return (
118
110
[
119
111
'song' ,
@@ -131,29 +123,29 @@ export function hasAudioName(name: string) {
131
123
'drums_4' ,
132
124
'crowd' ,
133
125
'preview' ,
134
- ] . includes ( getBasename ( name ) ) && [ '. ogg' , '. mp3' , '. wav' , '. opus' ] . includes ( getExtension ( name ) )
126
+ ] . includes ( getBasename ( fileName ) ) && [ 'ogg' , 'mp3' , 'wav' , 'opus' ] . includes ( getExtension ( fileName ) )
135
127
)
136
128
}
137
129
138
130
/**
139
- * @returns `true` if `name ` is a valid album fileName.
131
+ * @returns `true` if `fileName ` is a valid album fileName.
140
132
*/
141
- export function hasAlbumName ( name : string ) {
142
- return [ 'album.jpg' , 'album.jpeg' , 'album.png' ] . includes ( name )
133
+ export function hasAlbumName ( fileName : string ) {
134
+ return [ 'album.jpg' , 'album.jpeg' , 'album.png' ] . includes ( fileName )
143
135
}
144
136
145
137
/**
146
- * @returns `true` if `name ` is a valid video fileName.
138
+ * @returns `true` if `fileName ` is a valid video fileName.
147
139
*/
148
- export function hasVideoName ( name : string ) {
149
- return getBasename ( name ) === 'video' && [ '. mp4' , '. avi' , '. webm' , '. vp8' , '. ogv' , '. mpeg' ] . includes ( getExtension ( name ) )
140
+ export function hasVideoName ( fileName : string ) {
141
+ return getBasename ( fileName ) === 'video' && [ 'mp4' , 'avi' , 'webm' , 'vp8' , 'ogv' , 'mpeg' ] . includes ( getExtension ( fileName ) )
150
142
}
151
143
152
144
/**
153
- * @returns `true` if `name ` is a video fileName that is not supported on Linux.
145
+ * @returns `true` if `fileName ` is a video fileName that is not supported on Linux.
154
146
*/
155
- export function hasBadVideoName ( name : string ) {
156
- return getBasename ( name ) === 'video' && [ '. mp4' , '. avi' , '. mpeg' ] . includes ( getExtension ( name ) )
147
+ export function hasBadVideoName ( fileName : string ) {
148
+ return getBasename ( fileName ) === 'video' && [ 'mp4' , 'avi' , 'mpeg' ] . includes ( getExtension ( fileName ) )
157
149
}
158
150
159
151
const allowedTags = [
0 commit comments