Dave Jarvis' Repositories

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

Upgrade docking framework, to Gradle 7, and JDK 15

AuthorDaveJarvis <email>
Date2020-11-08 19:27:03 GMT-0800
Commit30f05e8a6f8de3af399891aad859356459127e65
Parentd18f9cd
Delta2 lines added, 88 lines removed, 86-line decrease
src/main/java/com/keenwrite/processors/AbstractProcessor.java
/**
- * Used while processing the entire chain; null to signify no more links.
+ * The next link in the processing chain.
*/
private final Processor<T> mNext;
/**
- * Constructs a new default handler with no successor.
+ * Constructs a new processor that represents a terminal link in the chain.
*/
protected AbstractProcessor() {
public Processor<T> next() {
return mNext;
- }
-
- /**
- * This algorithm is incorrect, but works for the one use case of removing
- * the ending HTML Preview Processor from the end of the processor chain.
- * The processor chain is immutable so this creates a succession of
- * delegators that wrap each processor in the chain, except for the one
- * to be removed.
- * <p>
- * An alternative is to update the {@link ProcessorFactory} with the ability
- * to create a processor chain devoid of an {@link HtmlPreviewProcessor}.
- * </p>
- *
- * @param removal The {@link Processor} to remove from the chain.
- * @return A delegating processor chain starting from this processor
- * onwards with the given processor removed from the chain.
- */
- @Override
- public Processor<T> remove( final Class<? extends Processor<T>> removal ) {
- Processor<T> p = this;
- final ProcessorDelegator<T> head = new ProcessorDelegator<>( p );
- ProcessorDelegator<T> result = head;
-
- while( p != null ) {
- final Processor<T> next = p.next();
-
- if( next != null && next.getClass() != removal ) {
- final var delegator = new ProcessorDelegator<>( next );
-
- result.setNext( delegator );
- result = delegator;
- }
-
- p = p.next();
- }
-
- return head;
- }
-
- private static final class ProcessorDelegator<T>
- extends AbstractProcessor<T> {
- private final Processor<T> mDelegate;
- private Processor<T> mNext;
-
- public ProcessorDelegator( final Processor<T> delegate ) {
- super( delegate );
-
- assert delegate != null;
-
- mDelegate = delegate;
- }
-
- @Override
- public T apply( T t ) {
- return mDelegate.apply( t );
- }
-
- protected void setNext( final Processor<T> next ) {
- mNext = next;
- }
-
- @Override
- public Processor<T> next() {
- return mNext;
- }
}
}
src/main/java/com/keenwrite/processors/Processor.java
/**
- * Removes the given processor from the chain, returning a new immutable
- * chain equivalent to this chain, but without the given processor.
- *
- * @param processor The {@link Processor} to remove from the chain.
- * @return A delegating processor chain starting from this processor
- * onwards with the given processor removed from the chain.
- */
- Processor<T> remove( Class<? extends Processor<T>> processor );
-
- /**
* Adds a document processor to call after this processor finishes processing
* the document given to the process method.
src/main/java/com/keenwrite/processors/ProcessorFactory.java
import com.keenwrite.processors.markdown.MarkdownProcessor;
-import java.nio.file.Path;
-
import static com.keenwrite.ExportFormat.NONE;
private HtmlPreview getPreviewPane() {
return getProcessorContext().getPreview();
- }
-
- /**
- * Returns the {@link Path} from the {@link ProcessorContext}.
- *
- * @return A non-null {@link Path} instance.
- */
- private Path getPath() {
- return getProcessorContext().getPath();
}
}