Skip to content

Commit a9c1252

Browse files
committed
refactor: make h and m case insensitive
1 parent 6299a59 commit a9c1252

File tree

1 file changed

+24
-27
lines changed

1 file changed

+24
-27
lines changed

src/composables/useOutputDuration.ts

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,40 @@
11
export function useOutputDuration() {
22
function durationToMinutes(duration: string): number {
3-
let hours = 0
4-
let minutes = 0
5-
if (duration.includes(':')) {
6-
hours = +duration.substring(0, duration.indexOf(':')).trim()
7-
minutes = +duration.substring(duration.indexOf(':') + 1).trim()
3+
let hours = 0; let minutes = 0
4+
const lowerDuration = duration.toLowerCase()
5+
6+
if (lowerDuration.includes(':')) {
7+
[hours, minutes] = lowerDuration.split(':').map(part => +part.trim())
88
}
99
else {
10-
let durationString = duration
11-
if (duration.includes('h')) {
12-
hours = +duration.substring(0, duration.indexOf('h')).trim()
13-
durationString = duration.substring(duration.indexOf('h') + 1)
10+
if (lowerDuration.includes('h')) {
11+
hours = +lowerDuration.split('h')[0].trim()
12+
const remainder = lowerDuration.split('h')[1] || ''
13+
14+
if (remainder.includes('m'))
15+
minutes = +remainder.split('m')[0].trim()
16+
else if (/^\d+$/.test(remainder))
17+
minutes = +remainder
18+
}
19+
else if (lowerDuration.includes('m')) {
20+
minutes = +lowerDuration.split('m')[0].trim()
21+
}
22+
else if (/^\d+$/.test(lowerDuration)) {
23+
minutes = +lowerDuration
1424
}
15-
if (durationString.includes('m'))
16-
minutes = +durationString.substring(0, durationString.indexOf('m')).trim()
17-
if (durationString === durationString.replace(/\D/g, ''))
18-
minutes = +durationString
1925
}
26+
2027
return hours * 60 + minutes
2128
}
2229

2330
function formattedDuration(duration: string): string {
2431
const minutes = durationToMinutes(duration)
32+
const hours = Math.trunc(minutes / 60)
33+
const remainingMinutes = minutes % 60
2534

26-
const stunden = Math.trunc(minutes / 60)
27-
const minuten = minutes % 60
28-
29-
let result = ''
30-
31-
if (stunden > 0)
32-
result = `${result} ${stunden}h`
33-
if (minuten > 0)
34-
result = `${result} ${minuten}m`
3535
if (minutes === 0)
36-
result = '0'
37-
38-
if (result.length === 0)
39-
result = duration
40-
return result.trim()
36+
return '0'
37+
return `${hours > 0 ? `${hours}h` : ''}${hours > 0 && remainingMinutes > 0 ? ' ' : ''}${remainingMinutes > 0 ? `${remainingMinutes}m` : ''}`
4138
}
4239

4340
return { durationToMinutes, formattedDuration }

0 commit comments

Comments
 (0)