34 lines
1.1 KiB
Swift
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' />"
|
|
}
|
|
}
|
|
}
|