2024-12-15 21:20:12 +01:00

34 lines
1.1 KiB
Swift

enum HeaderElement {
case css(FileResource)
case js(file: FileResource, defer: Bool)
case jsModule(FileResource)
case title(String)
case description(String)
case charset
case viewport
}
extension HeaderElement {
var content: String {
switch self {
case .css(let file):
return "<link rel='stylesheet' href='\(file.assetUrl)' />"
case .js(let file, let deferred):
let deferText = deferred ? " defer" : ""
return "<script src='\(file.assetUrl)'\(deferText)></script>"
case .jsModule(let file):
return "<script type='module' src='\(file.assetUrl)'></script>"
case .title(let title):
return "<title>\(title)</title>"
case .description(let description):
return "<meta name='description' content='\(description)'>"
case .charset:
return "<meta charset='utf-8' />"
case .viewport:
return "<meta name='viewport' content='width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1' />"
}
}
}