@@ -30,8 +30,9 @@ public struct Metadata: Hashable, Loggable, WarningLogger {
3030
3131 public let modified : Date ?
3232 public let published : Date ?
33- // FIXME: Use `Language` instead of raw String
3433 public let languages : [ String ] // BCP 47 tag
34+ // Main language of the publication.
35+ public let language : Language ?
3536 public let sortAs : String ?
3637 public let subjects : [ Subject ]
3738 public let authors : [ Contributor ]
@@ -104,6 +105,7 @@ public struct Metadata: Hashable, Loggable, WarningLogger {
104105 self . modified = modified
105106 self . published = published
106107 self . languages = languages
108+ self . language = languages. first. map { Language ( code: . bcp47( $0) ) }
107109 self . sortAs = sortAs
108110 self . subjects = subjects
109111 self . authors = authors
@@ -152,6 +154,7 @@ public struct Metadata: Hashable, Loggable, WarningLogger {
152154 self . modified = parseDate ( json. pop ( " modified " ) )
153155 self . published = parseDate ( json. pop ( " published " ) )
154156 self . languages = parseArray ( json. pop ( " language " ) , allowingSingle: true )
157+ self . language = languages. first. map { Language ( code: . bcp47( $0) ) }
155158 self . sortAs = json. pop ( " sortAs " ) as? String
156159 self . subjects = [ Subject] ( json: json. pop ( " subject " ) , warnings: warnings)
157160 self . authors = [ Contributor] ( json: json. pop ( " author " ) , warnings: warnings, normalizeHREF: normalizeHREF)
0 commit comments