@@ -223,42 +223,56 @@ String renderArrow(NavArrow arrow, String label, String symbol) {
223223String 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
235240String 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
264278String 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