Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenwrite.git
.gitignore
themes/
quotes/
+!src/main/java/com/keenwrite/processors/markdown/extensions/quotes
tex/
spell/
src/main/java/com/keenwrite/processors/markdown/extensions/quotes/EscapedQuoteNodeRenderer.java
+/* Copyright 2024 White Magic Software, Ltd. -- All rights reserved.
+ *
+ * SPDX-License-Identifier: MIT
+ */
+package com.keenwrite.processors.markdown.extensions.quotes;
+
+import com.vladsch.flexmark.ast.Text;
+import com.vladsch.flexmark.html.HtmlWriter;
+import com.vladsch.flexmark.html.renderer.NodeRenderer;
+import com.vladsch.flexmark.html.renderer.NodeRendererContext;
+import com.vladsch.flexmark.html.renderer.NodeRendererFactory;
+import com.vladsch.flexmark.html.renderer.NodeRenderingHandler;
+import com.vladsch.flexmark.util.data.DataHolder;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Responsible for preventing escaped quotes from being converted to regular
+ * quotes.
+ */
+public class EscapedQuoteNodeRenderer implements NodeRenderer {
+ public static class Factory implements NodeRendererFactory {
+ @Override
+ public @NotNull NodeRenderer apply( @NotNull DataHolder options ) {
+ return new EscapedQuoteNodeRenderer();
+ }
+ }
+
+ @Override
+ public Set<NodeRenderingHandler<?>> getNodeRenderingHandlers() {
+ final var handlers = new HashSet<NodeRenderingHandler<?>>();
+
+ handlers.add( new NodeRenderingHandler<>( Text.class, this::renderText ) );
+
+ return handlers;
+ }
+
+ private void renderText(
+ final Text node,
+ final NodeRendererContext context,
+ final HtmlWriter html ) {
+ html.text( node.getChars().toString() );
+ }
+}
src/main/java/com/keenwrite/processors/markdown/extensions/quotes/EscapedQuotesExtension.java
+/* Copyright 2024 White Magic Software, Ltd. -- All rights reserved.
+ *
+ * SPDX-License-Identifier: MIT
+ */
+package com.keenwrite.processors.markdown.extensions.quotes;
+
+import com.vladsch.flexmark.util.data.MutableDataHolder;
+import org.jetbrains.annotations.NotNull;
+
+import static com.keenwrite.processors.markdown.extensions.quotes.EscapedQuoteNodeRenderer.Factory;
+import static com.vladsch.flexmark.html.HtmlRenderer.Builder;
+import static com.vladsch.flexmark.html.HtmlRenderer.HtmlRendererExtension;
+
+public class EscapedQuotesExtension
+ implements HtmlRendererExtension {
+
+ @Override
+ public void rendererOptions( @NotNull final MutableDataHolder options ) {}
+
+ @Override
+ public void extend(
+ final Builder builder,
+ @NotNull final String rendererType ) {
+ builder.nodeRendererFactory( new Factory() );
+ }
+
+ public static EscapedQuotesExtension create() {
+ return new EscapedQuotesExtension();
+ }
+}

Adds missing flexmark straight quote extension

Author DaveJarvis <email>
Date 2024-10-10 00:08:43 GMT-0700
Commit b61ace26fbf8c94a596274db95234663392cc579
Parent e2d06c1
Delta 77 lines added, 0 lines removed, 77-line increase