@@ -17,8 +17,7 @@ final class MetaSettings private (
1717 val geoPosition : Option [String ],
1818 val geoRegion : Option [String ],
1919 val geoPlacename : Option [String ],
20- // open graph (fb, twitter)
21- // note: twitter falls back to OG https://developer.twitter.com/en/docs/tweets/optimize-with-cards/guides/getting-started#twitter-cards-and-open-graph
20+ // open graph fb and others
2221 val ogUrl : Option [String ],
2322 val ogType : Option [String ],
2423 val ogTitle : Option [String ],
@@ -27,7 +26,14 @@ final class MetaSettings private (
2726 val ogDescription : Option [String ],
2827 val ogSiteName : Option [String ],
2928 val ogLocale : Option [String ],
30- val articleAuthor : Option [String ]
29+ val articleAuthor : Option [String ],
30+ // twitter card
31+ val twitterCard : Option [String ], // usually set to "summary_large_image"
32+ val twitterSite : Option [String ], // The Twitter @username of author
33+ val twitterTitle : Option [String ],
34+ val twitterDescription : Option [String ],
35+ val twitterImage : Option [String ],
36+ val twitterImageAlt : Option [String ]
3137) {
3238
3339 def withCharset (charset : String ): MetaSettings = copy(charset = charset)
@@ -121,6 +127,48 @@ final class MetaSettings private (
121127 Option (articleAuthor)
122128 )
123129
130+ def withTwitterCard (twitterCard : Option [String ]): MetaSettings =
131+ copy(twitterCard = twitterCard)
132+
133+ def withTwitterCard (twitterCard : String ): MetaSettings = withArticleAuthor(
134+ Option (twitterCard)
135+ )
136+
137+ def withTwitterSite (twitterSite : Option [String ]): MetaSettings =
138+ copy(twitterSite = twitterSite)
139+
140+ def withTwitterSite (twitterSite : String ): MetaSettings = withArticleAuthor(
141+ Option (twitterSite)
142+ )
143+
144+ def withTwitterTitle (twitterTitle : Option [String ]): MetaSettings =
145+ copy(twitterTitle = twitterTitle)
146+
147+ def withTwitterTitle (twitterTitle : String ): MetaSettings = withArticleAuthor(
148+ Option (twitterTitle)
149+ )
150+
151+ def withTwitterDescription (twitterDescription : Option [String ]): MetaSettings =
152+ copy(twitterDescription = twitterDescription)
153+
154+ def withTwitterDescription (twitterDescription : String ): MetaSettings = withArticleAuthor(
155+ Option (twitterDescription)
156+ )
157+
158+ def withTwitterImage (twitterImage : Option [String ]): MetaSettings =
159+ copy(twitterImage = twitterImage)
160+
161+ def withTwitterImage (twitterImage : String ): MetaSettings = withArticleAuthor(
162+ Option (twitterImage)
163+ )
164+
165+ def withTwitterImageAlt (twitterImageAlt : Option [String ]): MetaSettings =
166+ copy(twitterImageAlt = twitterImageAlt)
167+
168+ def withTwitterImageAlt (twitterImageAlt : String ): MetaSettings = withArticleAuthor(
169+ Option (twitterImageAlt)
170+ )
171+
124172 private def copy (
125173 charset : String = charset,
126174 xuaCompatible : String = xuaCompatible,
@@ -144,7 +192,13 @@ final class MetaSettings private (
144192 ogDescription : Option [String ] = ogDescription,
145193 ogSiteName : Option [String ] = ogSiteName,
146194 ogLocale : Option [String ] = ogLocale,
147- articleAuthor : Option [String ] = articleAuthor
195+ articleAuthor : Option [String ] = articleAuthor,
196+ twitterCard : Option [String ] = twitterCard,
197+ twitterSite : Option [String ] = twitterSite,
198+ twitterTitle : Option [String ] = twitterTitle,
199+ twitterDescription : Option [String ] = twitterDescription,
200+ twitterImage : Option [String ] = twitterImage,
201+ twitterImageAlt : Option [String ] = twitterImageAlt
148202 ) =
149203 new MetaSettings (
150204 charset = charset,
@@ -169,7 +223,13 @@ final class MetaSettings private (
169223 ogDescription = ogDescription,
170224 ogSiteName = ogSiteName,
171225 ogLocale = ogLocale,
172- articleAuthor = articleAuthor
226+ articleAuthor = articleAuthor,
227+ twitterCard = twitterCard,
228+ twitterSite = twitterSite,
229+ twitterTitle = twitterTitle,
230+ twitterDescription = twitterDescription,
231+ twitterImage = twitterImage,
232+ twitterImageAlt = twitterImageAlt
173233 )
174234}
175235
@@ -197,5 +257,11 @@ object MetaSettings:
197257 ogDescription = None ,
198258 ogSiteName = None ,
199259 ogLocale = None ,
200- articleAuthor = None
260+ articleAuthor = None ,
261+ twitterCard = Some (" summary_large_image" ),
262+ twitterSite = None ,
263+ twitterTitle = None ,
264+ twitterDescription = None ,
265+ twitterImage = None ,
266+ twitterImageAlt = None
201267 )
0 commit comments