enum HeaderFile: Int { case codeHightlighting = 4 case modelViewer = 3 /// CSS File to style the audio player case audioPlayerCss = 1 /// JavaScript file for the audio player case audioPlayerJs = 2 func header(content: Content) -> HeaderElement? { switch self { case .codeHightlighting: if let file = content.settings.pages.codeHighlightingJsFile { return HeaderElement.js(file: file, defer: true) } case .modelViewer: if let file = content.settings.pages.modelViewerJsFile { return HeaderElement.jsModule(file) } case .audioPlayerCss: if let file = content.settings.pages.audioPlayerCssFile { return .css(file) } case .audioPlayerJs: if let file = content.settings.pages.audioPlayerJsFile { return .js(file: file, defer: true) } } return nil } } extension HeaderFile: Comparable { static func < (lhs: HeaderFile, rhs: HeaderFile) -> Bool { lhs.rawValue < rhs.rawValue } } typealias RequiredHeaders = Set