diff --git a/Shared/Article Rendering/ArticleRenderer.swift b/Shared/Article Rendering/ArticleRenderer.swift
index 2af9c6283..5851217ea 100644
--- a/Shared/Article Rendering/ArticleRenderer.swift
+++ b/Shared/Article Rendering/ArticleRenderer.swift
@@ -41,6 +41,69 @@ struct ArticleRenderer {
private let title: String
private let body: String
private let baseURL: String?
+
+ private static let longDateTimeFormatter: DateFormatter = {
+ let formatter = DateFormatter()
+ formatter.dateStyle = .long
+ formatter.timeStyle = .medium
+ return formatter
+ }()
+
+ private static let mediumDateTimeFormatter: DateFormatter = {
+ let formatter = DateFormatter()
+ formatter.dateStyle = .medium
+ formatter.timeStyle = .short
+ return formatter
+ }()
+
+ private static let shortDateTimeFormatter: DateFormatter = {
+ let formatter = DateFormatter()
+ formatter.dateStyle = .short
+ formatter.timeStyle = .short
+ return formatter
+ }()
+
+ private static let longDateFormatter: DateFormatter = {
+ let formatter = DateFormatter()
+ formatter.dateStyle = .long
+ formatter.timeStyle = .none
+ return formatter
+ }()
+
+ private static let mediumDateFormatter: DateFormatter = {
+ let formatter = DateFormatter()
+ formatter.dateStyle = .medium
+ formatter.timeStyle = .none
+ return formatter
+ }()
+
+ private static let shortDateFormatter: DateFormatter = {
+ let formatter = DateFormatter()
+ formatter.dateStyle = .short
+ formatter.timeStyle = .none
+ return formatter
+ }()
+
+ private static let longTimeFormatter: DateFormatter = {
+ let formatter = DateFormatter()
+ formatter.dateStyle = .none
+ formatter.timeStyle = .long
+ return formatter
+ }()
+
+ private static let mediumTimeFormatter: DateFormatter = {
+ let formatter = DateFormatter()
+ formatter.dateStyle = .none
+ formatter.timeStyle = .medium
+ return formatter
+ }()
+
+ private static let shortTimeFormatter: DateFormatter = {
+ let formatter = DateFormatter()
+ formatter.dateStyle = .none
+ formatter.timeStyle = .short
+ return formatter
+ }()
private init(article: Article?, extractedArticle: ExtractedArticle?, theme: ArticleTheme) {
self.article = article
@@ -135,13 +198,6 @@ private extension ArticleRenderer {
return articleTheme.template ?? ArticleRenderer.defaultTemplate
}
- func titleOrTitleLink() -> String {
- if let link = article?.preferredLink {
- return title.htmlByAddingLink(link)
- }
- return title
- }
-
func articleSubstitutions() -> [String: String] {
var d = [String: String]()
@@ -150,15 +206,16 @@ private extension ArticleRenderer {
return d
}
- let title = titleOrTitleLink()
d["title"] = title
+ d["preferred_link"] = article.preferredLink ?? ""
if let externalLink = article.externalURL, externalLink != article.preferredLink {
- let displayLink = externalLink.strippingHTTPOrHTTPSScheme
- let regarding = NSLocalizedString("Link", comment: "Link")
- let externalLinkString = "\(regarding): \(displayLink)"
- d["external_link"] = externalLinkString
+ d["external_link_label"] = NSLocalizedString("Link:", comment: "Link")
+ d["external_link_stripped"] = externalLink.strippingHTTPOrHTTPSScheme
+ d["external_link"] = externalLink
} else {
+ d["external_link_label"] = ""
+ d["external_link_stripped"] = ""
d["external_link"] = ""
}
@@ -175,7 +232,7 @@ private extension ArticleRenderer {
d["avatar_src"] = imageIconURLString
}
else {
- d["avatars"] = ""
+ d["avatar_src"] = ""
}
if self.title.isEmpty {
@@ -184,33 +241,22 @@ private extension ArticleRenderer {
d["dateline_style"] = "articleDateline"
}
- var feedLink = ""
- if let feedTitle = article.webFeed?.nameForDisplay {
- feedLink = feedTitle
- if let feedURL = article.webFeed?.homePageURL {
- feedLink = feedLink.htmlByAddingLink(feedURL, className: "feedLink")
- }
- }
- d["feedlink"] = feedLink
-
- let datePublished = article.logicalDatePublished
- let longDate = dateString(datePublished, .long, .medium)
- let mediumDate = dateString(datePublished, .medium, .short)
- let shortDate = dateString(datePublished, .short, .short)
-
- if let permalink = article.url {
- d["date_long"] = longDate.htmlByAddingLink(permalink)
- d["date_medium"] = mediumDate.htmlByAddingLink(permalink)
- d["date_short"] = shortDate.htmlByAddingLink(permalink)
- }
- else {
- d["date_long"] = longDate
- d["date_medium"] = mediumDate
- d["date_short"] = shortDate
- }
+ d["feed_link_title"] = article.webFeed?.nameForDisplay ?? ""
+ d["feed_link"] = article.webFeed?.homePageURL ?? ""
d["byline"] = byline()
+ let datePublished = article.logicalDatePublished
+ d["datetime_long"] = Self.longDateTimeFormatter.string(from: datePublished)
+ d["datetime_medium"] = Self.mediumDateTimeFormatter.string(from: datePublished)
+ d["datetime_short"] = Self.shortDateTimeFormatter.string(from: datePublished)
+ d["date_long"] = Self.longDateFormatter.string(from: datePublished)
+ d["date_medium"] = Self.mediumDateFormatter.string(from: datePublished)
+ d["date_short"] = Self.shortDateFormatter.string(from: datePublished)
+ d["time_long"] = Self.longTimeFormatter.string(from: datePublished)
+ d["time_medium"] = Self.mediumTimeFormatter.string(from: datePublished)
+ d["time_short"] = Self.shortTimeFormatter.string(from: datePublished)
+
return d
}
@@ -265,13 +311,6 @@ private extension ArticleRenderer {
return byline
}
- func dateString(_ date: Date, _ dateStyle: DateFormatter.Style, _ timeStyle: DateFormatter.Style) -> String {
- let dateFormatter = DateFormatter()
- dateFormatter.dateStyle = dateStyle
- dateFormatter.timeStyle = timeStyle
- return dateFormatter.string(from: date)
- }
-
#if os(iOS)
func styleSubstitutions() -> [String: String] {
var d = [String: String]()
diff --git a/Shared/Article Rendering/template.html b/Shared/Article Rendering/template.html
index 2e14ed119..a8bbed925 100644
--- a/Shared/Article Rendering/template.html
+++ b/Shared/Article Rendering/template.html
@@ -1,15 +1,47 @@
+
+
-[[title]]
-[[date_medium]]
-[[external_link]]
+
+
+
[[body]]
diff --git a/Shared/Resources/Sepia.nnwtheme/template.html b/Shared/Resources/Sepia.nnwtheme/template.html
index 2e14ed119..2b6461013 100644
--- a/Shared/Resources/Sepia.nnwtheme/template.html
+++ b/Shared/Resources/Sepia.nnwtheme/template.html
@@ -1,15 +1,15 @@
-[[title]]
-[[date_medium]]
-[[external_link]]
+
+
+
[[body]]