Skip to content

Commit b889dba

Browse files
brunoborgesCopilot
andcommitted
Use text blocks in Generate.java render methods
Replace string concatenation in renderWhyCards, renderRelatedCard, and renderSocialShare with text blocks. Uses closing delimiter position to control output indentation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 9401655 commit b889dba

File tree

1 file changed

+58
-38
lines changed

1 file changed

+58
-38
lines changed

Generate.java

Lines changed: 58 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -223,42 +223,56 @@ String renderArrow(NavArrow arrow, String label, String symbol) {
223223
String renderWhyCards(JsonNode whyList) {
224224
var cards = new ArrayList<String>();
225225
for (var w : whyList) {
226-
cards.add(" <div class=\"why-card\">\n"
227-
+ " <div class=\"why-icon\">%s</div>\n".formatted(w.get("icon").asText())
228-
+ " <h3>%s</h3>\n".formatted(escape(w.get("title").asText()))
229-
+ " <p>%s</p>\n".formatted(escape(w.get("desc").asText()))
230-
+ " </div>");
226+
cards.add("""
227+
<div class="why-card">
228+
<div class="why-icon">%s</div>
229+
<h3>%s</h3>
230+
<p>%s</p>
231+
</div>\
232+
""".formatted(
233+
w.get("icon").asText(),
234+
escape(w.get("title").asText()),
235+
escape(w.get("desc").asText())).stripTrailing());
231236
}
232237
return String.join("\n", cards);
233238
}
234239

235240
String renderRelatedCard(Snippet rel) {
236-
return " <a href=\"/%s/%s.html\" class=\"tip-card\">\n".formatted(rel.category(), rel.slug())
237-
+ " <div class=\"tip-card-body\">\n"
238-
+ " <div class=\"tip-card-header\">\n"
239-
+ " <div class=\"tip-badges\">\n"
240-
+ " <span class=\"badge %s\">%s</span>\n".formatted(rel.category(), rel.catDisplay())
241-
+ " <span class=\"badge %s\">%s</span>\n".formatted(rel.difficulty(), rel.difficulty())
242-
+ " </div>\n"
243-
+ " </div>\n"
244-
+ " <h3>%s</h3>\n".formatted(escape(rel.title()))
245-
+ " </div>\n"
246-
+ " <div class=\"card-code\">\n"
247-
+ " <div class=\"card-code-layer old-layer\">\n"
248-
+ " <div class=\"mini-label\">%s</div>\n".formatted(escape(rel.oldLabel()))
249-
+ " <pre class=\"code-text\">%s</pre>\n".formatted(escape(rel.oldCode()))
250-
+ " </div>\n"
251-
+ " <div class=\"card-code-layer modern-layer\">\n"
252-
+ " <div class=\"mini-label\">%s</div>\n".formatted(escape(rel.modernLabel()))
253-
+ " <pre class=\"code-text\">%s</pre>\n".formatted(escape(rel.modernCode()))
254-
+ " </div>\n"
255-
+ " <span class=\"hover-hint\">Hover to see modern ➜</span>\n"
256-
+ " </div>\n"
257-
+ " <div class=\"tip-card-footer\">\n"
258-
+ " <span class=\"browser-support\"><span class=\"dot\"></span>JDK %s+</span>\n".formatted(rel.jdkVersion())
259-
+ " <span class=\"arrow-link\">→</span>\n"
260-
+ " </div>\n"
261-
+ " </a>";
241+
return """
242+
<a href="/%s/%s.html" class="tip-card">
243+
<div class="tip-card-body">
244+
<div class="tip-card-header">
245+
<div class="tip-badges">
246+
<span class="badge %s">%s</span>
247+
<span class="badge %s">%s</span>
248+
</div>
249+
</div>
250+
<h3>%s</h3>
251+
</div>
252+
<div class="card-code">
253+
<div class="card-code-layer old-layer">
254+
<div class="mini-label">%s</div>
255+
<pre class="code-text">%s</pre>
256+
</div>
257+
<div class="card-code-layer modern-layer">
258+
<div class="mini-label">%s</div>
259+
<pre class="code-text">%s</pre>
260+
</div>
261+
<span class="hover-hint">Hover to see modern ➜</span>
262+
</div>
263+
<div class="tip-card-footer">
264+
<span class="browser-support"><span class="dot"></span>JDK %s+</span>
265+
<span class="arrow-link">→</span>
266+
</div>
267+
</a>\
268+
""".formatted(
269+
rel.category(), rel.slug(),
270+
rel.category(), rel.catDisplay(),
271+
rel.difficulty(), rel.difficulty(),
272+
escape(rel.title()),
273+
escape(rel.oldLabel()), escape(rel.oldCode()),
274+
escape(rel.modernLabel()), escape(rel.modernCode()),
275+
rel.jdkVersion()).stripTrailing();
262276
}
263277

264278
String renderRelatedSection(Snippet snippet, Map<String, Snippet> allSnippets) {
@@ -274,13 +288,19 @@ String renderSocialShare(String slug, String title) {
274288
var encodedUrl = urlEncode(pageUrl);
275289
var encodedText = urlEncode(shareText);
276290

277-
return " <div class=\"social-share\">\n"
278-
+ " <span class=\"share-label\">Share</span>\n"
279-
+ " <a href=\"https://x.com/intent/tweet?url=%s&text=%s\" target=\"_blank\" rel=\"noopener\" class=\"share-btn share-x\" aria-label=\"Share on X\">𝕏</a>\n".formatted(encodedUrl, encodedText)
280-
+ " <a href=\"https://bsky.app/intent/compose?text=%s%%20%s\" target=\"_blank\" rel=\"noopener\" class=\"share-btn share-bsky\" aria-label=\"Share on Bluesky\">🦋</a>\n".formatted(encodedText, encodedUrl)
281-
+ " <a href=\"https://www.linkedin.com/sharing/share-offsite/?url=%s\" target=\"_blank\" rel=\"noopener\" class=\"share-btn share-li\" aria-label=\"Share on LinkedIn\">in</a>\n".formatted(encodedUrl)
282-
+ " <a href=\"https://www.reddit.com/submit?url=%s&title=%s\" target=\"_blank\" rel=\"noopener\" class=\"share-btn share-reddit\" aria-label=\"Share on Reddit\">⬡</a>\n".formatted(encodedUrl, encodedText)
283-
+ " </div>";
291+
return """
292+
<div class="social-share">
293+
<span class="share-label">Share</span>
294+
<a href="https://x.com/intent/tweet?url=%s&text=%s" target="_blank" rel="noopener" class="share-btn share-x" aria-label="Share on X">𝕏</a>
295+
<a href="https://bsky.app/intent/compose?text=%s%%20%s" target="_blank" rel="noopener" class="share-btn share-bsky" aria-label="Share on Bluesky">🦋</a>
296+
<a href="https://www.linkedin.com/sharing/share-offsite/?url=%s" target="_blank" rel="noopener" class="share-btn share-li" aria-label="Share on LinkedIn">in</a>
297+
<a href="https://www.reddit.com/submit?url=%s&title=%s" target="_blank" rel="noopener" class="share-btn share-reddit" aria-label="Share on Reddit">⬡</a>
298+
</div>\
299+
""".formatted(
300+
encodedUrl, encodedText,
301+
encodedText, encodedUrl,
302+
encodedUrl,
303+
encodedUrl, encodedText).stripTrailing();
284304
}
285305

286306
// -- Main generation logic -----------------------------------------------

0 commit comments

Comments
 (0)