| Author | DaveJarvis <email> |
|---|---|
| Date | 2023-11-25 21:08:10 GMT-0800 |
| Commit | bbcd8456606aa771b9439392b4c4837e6ceae47e |
| Parent | 2c7bd04 |
| Delta | 38 lines added, 35 lines removed, 3-line increase |
| 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; | ||
| } | ||
| } |
| } | ||
| + 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() { |
| 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; | ||
| } | ||
| @Override | ||
| protected NodeRendererFactory createNodeRendererFactory() { | ||
| - return new CrossReferencesNodeRenderer.Factory(); | ||
| + return new CrossReferencesNodeRendererFactory(); | ||
| } | ||
| } |
| 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; | ||
| - } | ||
| } | ||
| } |
| +/* 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(); | ||
| + } | ||
| +} | ||