1
1
import { htmlToMarkdown , Notice } from "obsidian" ;
2
- import { Episode } from "src/types/Episode" ;
2
+ import type { Episode } from "src/types/Episode" ;
3
3
import Fuse from "fuse.js" ;
4
4
import { plugin } from "src/store" ;
5
5
import { get } from "svelte/store" ;
@@ -11,7 +11,7 @@ interface Tags {
11
11
12
12
type AddTagFn = (
13
13
tag : Lowercase < string > ,
14
- value : string | ( ( ...args : unknown [ ] ) => string )
14
+ value : string | ( ( ...args : unknown [ ] ) => string ) ,
15
15
) => void ;
16
16
type ReplacerFn = ( template : string ) => string ;
17
17
@@ -20,7 +20,7 @@ function useTemplateEngine(): Readonly<[ReplacerFn, AddTagFn]> {
20
20
21
21
function addTag (
22
22
tag : Lowercase < string > ,
23
- value : string | ( ( ...args : unknown [ ] ) => string )
23
+ value : string | ( ( ...args : unknown [ ] ) => string ) ,
24
24
) : void {
25
25
tags [ tag ] = value ;
26
26
}
@@ -45,7 +45,7 @@ function useTemplateEngine(): Readonly<[ReplacerFn, AddTagFn]> {
45
45
similarTag . length > 0
46
46
? ` Did you mean ${ similarTag [ 0 ] . item } ?`
47
47
: ""
48
- } `
48
+ } `,
49
49
) ;
50
50
return match ;
51
51
}
@@ -54,9 +54,7 @@ function useTemplateEngine(): Readonly<[ReplacerFn, AddTagFn]> {
54
54
if ( params ) {
55
55
// Remove initial colon with splice.
56
56
const splitParams = params . slice ( 1 ) . split ( "," ) ;
57
- const args = Array . isArray ( splitParams )
58
- ? splitParams
59
- : [ params ] ;
57
+ const args = Array . isArray ( splitParams ) ? splitParams : [ params ] ;
60
58
61
59
return tagValue ( ...args ) ;
62
60
}
@@ -65,7 +63,7 @@ function useTemplateEngine(): Readonly<[ReplacerFn, AddTagFn]> {
65
63
}
66
64
67
65
return tagValue ;
68
- }
66
+ } ,
69
67
) ;
70
68
}
71
69
@@ -96,15 +94,12 @@ export function NoteTemplateEngine(template: string, episode: Episode) {
96
94
97
95
return htmlToMarkdown ( episode . content ) ;
98
96
} ) ;
99
- addTag (
100
- "safetitle" ,
101
- replaceIllegalFileNameCharactersInString ( episode . title )
102
- ) ;
97
+ addTag ( "safetitle" , replaceIllegalFileNameCharactersInString ( episode . title ) ) ;
103
98
addTag ( "url" , episode . url ) ;
104
99
addTag ( "date" , ( format ?: string ) =>
105
100
episode . episodeDate
106
101
? window . moment ( episode . episodeDate ) . format ( format ?? "YYYY-MM-DD" )
107
- : ""
102
+ : "" ,
108
103
) ;
109
104
addTag ( "podcast" , episode . podcastName ) ;
110
105
addTag ( "artwork" , episode . artworkUrl ?? "" ) ;
@@ -116,10 +111,10 @@ export function TimestampTemplateEngine(template: string) {
116
111
const [ replacer , addTag ] = useTemplateEngine ( ) ;
117
112
118
113
addTag ( "time" , ( format ?: string ) =>
119
- get ( plugin ) . api . getPodcastTimeFormatted ( format ?? "HH:mm:ss" )
114
+ get ( plugin ) . api . getPodcastTimeFormatted ( format ?? "HH:mm:ss" ) ,
120
115
) ;
121
116
addTag ( "linktime" , ( format ?: string ) =>
122
- get ( plugin ) . api . getPodcastTimeFormatted ( format ?? "HH:mm:ss" , true )
117
+ get ( plugin ) . api . getPodcastTimeFormatted ( format ?? "HH:mm:ss" , true ) ,
123
118
) ;
124
119
125
120
return replacer ( template ) ;
@@ -129,9 +124,7 @@ export function FilePathTemplateEngine(template: string, episode: Episode) {
129
124
const [ replacer , addTag ] = useTemplateEngine ( ) ;
130
125
131
126
addTag ( "title" , ( whitespaceReplacement ?: string ) => {
132
- const legalTitle = replaceIllegalFileNameCharactersInString (
133
- episode . title
134
- ) ;
127
+ const legalTitle = replaceIllegalFileNameCharactersInString ( episode . title ) ;
135
128
if ( whitespaceReplacement ) {
136
129
return legalTitle . replace ( / \s + / g, whitespaceReplacement ) ;
137
130
}
@@ -140,7 +133,7 @@ export function FilePathTemplateEngine(template: string, episode: Episode) {
140
133
} ) ;
141
134
addTag ( "podcast" , ( whitespaceReplacement ?: string ) => {
142
135
const legalName = replaceIllegalFileNameCharactersInString (
143
- episode . podcastName
136
+ episode . podcastName ,
144
137
) ;
145
138
if ( whitespaceReplacement ) {
146
139
return legalName . replace ( / \s + / g, whitespaceReplacement ) ;
@@ -151,7 +144,7 @@ export function FilePathTemplateEngine(template: string, episode: Episode) {
151
144
addTag ( "date" , ( format ?: string ) =>
152
145
episode . episodeDate
153
146
? window . moment ( episode . episodeDate ) . format ( format ?? "YYYY-MM-DD" )
154
- : ""
147
+ : "" ,
155
148
) ;
156
149
157
150
return replacer ( template ) ;
@@ -167,9 +160,7 @@ export function DownloadPathTemplateEngine(template: string, episode: Episode) {
167
160
const [ replacer , addTag ] = useTemplateEngine ( ) ;
168
161
169
162
addTag ( "title" , ( whitespaceReplacement ?: string ) => {
170
- const legalTitle = replaceIllegalFileNameCharactersInString (
171
- episode . title
172
- ) ;
163
+ const legalTitle = replaceIllegalFileNameCharactersInString ( episode . title ) ;
173
164
if ( whitespaceReplacement ) {
174
165
return legalTitle . replace ( / \s + / g, whitespaceReplacement ) ;
175
166
}
@@ -178,7 +169,7 @@ export function DownloadPathTemplateEngine(template: string, episode: Episode) {
178
169
} ) ;
179
170
addTag ( "podcast" , ( whitespaceReplacement ?: string ) => {
180
171
const legalName = replaceIllegalFileNameCharactersInString (
181
- episode . podcastName
172
+ episode . podcastName ,
182
173
) ;
183
174
if ( whitespaceReplacement ) {
184
175
return legalName . replace ( / \s + / g, whitespaceReplacement ) ;
@@ -189,35 +180,41 @@ export function DownloadPathTemplateEngine(template: string, episode: Episode) {
189
180
addTag ( "date" , ( format ?: string ) =>
190
181
episode . episodeDate
191
182
? window . moment ( episode . episodeDate ) . format ( format ?? "YYYY-MM-DD" )
192
- : ""
183
+ : "" ,
193
184
) ;
194
185
195
186
return replacer ( templateWithoutExtension ) ;
196
187
}
197
188
198
- export function TranscriptTemplateEngine ( template : string , episode : Episode , transcription : string ) {
199
- const [ replacer , addTag ] = useTemplateEngine ( ) ;
200
-
201
- addTag ( "title" , ( whitespaceReplacement ?: string ) => {
202
- const legalTitle = replaceIllegalFileNameCharactersInString ( episode . title ) ;
203
- if ( whitespaceReplacement ) {
204
- return legalTitle . replace ( / \s + / g, whitespaceReplacement ) ;
205
- }
206
- return legalTitle ;
207
- } ) ;
208
- addTag ( "podcast" , ( whitespaceReplacement ?: string ) => {
209
- const legalName = replaceIllegalFileNameCharactersInString ( episode . podcastName ) ;
210
- if ( whitespaceReplacement ) {
211
- return legalName . replace ( / \s + / g, whitespaceReplacement ) ;
212
- }
213
- return legalName ;
214
- } ) ;
215
- addTag ( "date" , ( format ?: string ) =>
216
- episode . episodeDate
217
- ? window . moment ( episode . episodeDate ) . format ( format ?? "YYYY-MM-DD" )
218
- : ""
219
- ) ;
220
- addTag ( "transcript" , transcription ) ;
189
+ export function TranscriptTemplateEngine (
190
+ template : string ,
191
+ episode : Episode ,
192
+ transcription : string ,
193
+ ) {
194
+ const [ replacer , addTag ] = useTemplateEngine ( ) ;
195
+
196
+ addTag ( "title" , ( whitespaceReplacement ?: string ) => {
197
+ const legalTitle = replaceIllegalFileNameCharactersInString ( episode . title ) ;
198
+ if ( whitespaceReplacement ) {
199
+ return legalTitle . replace ( / \s + / g, whitespaceReplacement ) ;
200
+ }
201
+ return legalTitle ;
202
+ } ) ;
203
+ addTag ( "podcast" , ( whitespaceReplacement ?: string ) => {
204
+ const legalName = replaceIllegalFileNameCharactersInString (
205
+ episode . podcastName ,
206
+ ) ;
207
+ if ( whitespaceReplacement ) {
208
+ return legalName . replace ( / \s + / g, whitespaceReplacement ) ;
209
+ }
210
+ return legalName ;
211
+ } ) ;
212
+ addTag ( "date" , ( format ?: string ) =>
213
+ episode . episodeDate
214
+ ? window . moment ( episode . episodeDate ) . format ( format ?? "YYYY-MM-DD" )
215
+ : "" ,
216
+ ) ;
217
+ addTag ( "transcript" , transcription ) ;
221
218
addTag ( "description" , ( prependToLines ?: string ) => {
222
219
if ( prependToLines ) {
223
220
return htmlToMarkdown ( episode . description )
@@ -228,15 +225,15 @@ export function TranscriptTemplateEngine(template: string, episode: Episode, tra
228
225
229
226
return htmlToMarkdown ( episode . description ) ;
230
227
} ) ;
231
- addTag ( "url" , episode . url ) ;
232
- addTag ( "artwork" , episode . artworkUrl ?? "" ) ;
228
+ addTag ( "url" , episode . url ) ;
229
+ addTag ( "artwork" , episode . artworkUrl ?? "" ) ;
233
230
234
- return replacer ( template ) ;
231
+ return replacer ( template ) ;
235
232
}
236
233
237
234
function replaceIllegalFileNameCharactersInString ( string : string ) {
238
235
return string
239
236
. replace ( / [ \\ , # % & { } / * < > $ ' " : @ \u2023 | ? ] * / g, "" ) // Replace illegal file name characters with empty string
240
237
. replace ( / \n / , " " ) // replace newlines with spaces
241
238
. replace ( " " , " " ) ; // replace multiple spaces with single space to make sure we don't have double spaces in the file name
242
- }
239
+ }
0 commit comments