Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenwrite.git

Separates inner classes

AuthorDaveJarvis <email>
Date2023-11-25 21:08:10 GMT-0800
Commitbbcd8456606aa771b9439392b4c4837e6ceae47e
Parent2c7bd04
Delta38 lines added, 35 lines removed, 3-line increase
src/main/java/com/keenwrite/processors/markdown/extensions/references/BasedSequenceNameParser.java
import com.vladsch.flexmark.util.sequence.BasedSequence;
-import java.util.regex.Matcher;
import java.util.regex.Pattern;
class BasedSequenceNameParser extends BasedSequenceParser {
private static final String REGEX = STR. "#\{ REGEX_INNER }" ;
private static final Pattern PATTERN = asPattern( REGEX );
private BasedSequenceNameParser( final String text ) {
super( text );
- }
-
- @Override
- Matcher createMatcher( final String text ) {
- return PATTERN.matcher( text );
}
static BasedSequenceNameParser parse( final BasedSequence chars ) {
return new BasedSequenceNameParser( chars.toString() );
+ }
+
+ @Override
+ Pattern getPattern() {
+ return PATTERN;
}
}
src/main/java/com/keenwrite/processors/markdown/extensions/references/BasedSequenceParser.java
}
+ abstract Pattern getPattern();
+
/**
* Creates a regular expression pattern matcher that can extract the
* reference elements from text.
*
* @param text The text containing an anchor or cross-reference to an anchor.
* @return The {@link Matcher} to use when extracting the text elements.
*/
- abstract Matcher createMatcher( final String text );
+ Matcher createMatcher( final String text ) {
+ return getPattern().matcher( text );
+ }
String getTypeName() {
src/main/java/com/keenwrite/processors/markdown/extensions/references/BasedSequenceXrefParser.java
import com.vladsch.flexmark.util.sequence.BasedSequence;
-import java.util.regex.Matcher;
import java.util.regex.Pattern;
private BasedSequenceXrefParser( final String text ) {
super( text );
- }
-
- @Override
- Matcher createMatcher( final String text ) {
- return PATTERN.matcher( text );
}
static BasedSequenceXrefParser parse( final BasedSequence chars ) {
return new BasedSequenceXrefParser( chars.toString() );
+ }
+
+ @Override
+ Pattern getPattern() {
+ return PATTERN;
}
src/main/java/com/keenwrite/processors/markdown/extensions/references/CrossReferenceExtension.java
@Override
protected NodeRendererFactory createNodeRendererFactory() {
- return new CrossReferencesNodeRenderer.Factory();
+ return new CrossReferencesNodeRendererFactory();
}
}
src/main/java/com/keenwrite/processors/markdown/extensions/references/CrossReferencesNodeRenderer.java
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.Arrays;
import java.util.HashSet;
import java.util.Set;
/**
* Responsible for rendering HTML elements that correspond to cross-references.
*/
class CrossReferencesNodeRenderer implements NodeRenderer {
-
@Override
public Set<NodeRenderingHandler<?>> getNodeRenderingHandlers() {
return new HashSet<>( Arrays.asList(
new NodeRenderingHandler<>( AnchorNameNode.class, this::render ),
new NodeRenderingHandler<>( AnchorXrefNode.class, this::render )
) );
}
- private void render( final CrossReferenceNode node,
- final NodeRendererContext context,
- final HtmlWriter html ) {
+ private void render(
+ final CrossReferenceNode node,
+ final NodeRendererContext context,
+ final HtmlWriter html ) {
node.write( html );
- }
-
- public static class Factory implements NodeRendererFactory {
- private final NodeRenderer mNodeRenderer;
-
- public Factory() {
- mNodeRenderer = new CrossReferencesNodeRenderer();
- }
-
- @NotNull
- @Override
- public NodeRenderer apply( @NotNull final DataHolder options ) {
- return mNodeRenderer;
- }
}
}
src/main/java/com/keenwrite/processors/markdown/extensions/references/CrossReferencesNodeRendererFactory.java
+/* Copyright 2023 White Magic Software, Ltd. -- All rights reserved.
+ *
+ * SPDX-License-Identifier: MIT
+ */
+package com.keenwrite.processors.markdown.extensions.references;
+
+import com.vladsch.flexmark.html.renderer.NodeRenderer;
+import com.vladsch.flexmark.html.renderer.NodeRendererFactory;
+import com.vladsch.flexmark.util.data.DataHolder;
+import org.jetbrains.annotations.NotNull;
+
+class CrossReferencesNodeRendererFactory implements NodeRendererFactory {
+ @NotNull
+ @Override
+ public NodeRenderer apply( @NotNull final DataHolder options ) {
+ return new CrossReferencesNodeRenderer();
+ }
+}