Dave Jarvis' Repositories

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

Allow R expressions inside of TeX statements

AuthorDaveJarvis <email>
Date2022-11-27 11:34:04 GMT-0800
Commitdcd57c6e09c306ec8b30284dc09c3e548002c279
Parent0a077ef
Delta14 lines added, 15 lines removed, 1-line decrease
src/main/java/com/keenwrite/processors/r/RInlineEvaluator.java
import com.keenwrite.processors.Processor;
-import com.keenwrite.processors.ProcessorContext;
import java.util.function.Function;
import java.util.function.Predicate;
import static com.keenwrite.constants.Constants.STATUS_PARSE_ERROR;
import static com.keenwrite.events.StatusEvent.clue;
-import static com.keenwrite.processors.IdentityProcessor.IDENTITY;
/**
* Constructs an evaluator capable of executing R statements.
*/
- public RInlineEvaluator( final ProcessorContext context ) {
- mProcessor = new RVariableProcessor( IDENTITY, context );
+ public RInlineEvaluator( final RVariableProcessor processor ) {
+ mProcessor = processor;
}
src/main/java/com/keenwrite/processors/markdown/extensions/tex/TexNodeRenderer.java
import com.keenwrite.ExportFormat;
import com.keenwrite.preview.SvgRasterizer;
-import com.keenwrite.processors.Processor;
import com.vladsch.flexmark.html.HtmlWriter;
import com.vladsch.flexmark.html.renderer.NodeRenderer;
import java.util.Map;
import java.util.Set;
+import java.util.function.Function;
import static com.keenwrite.ExportFormat.*;
public Factory(
- final ExportFormat exportFormat, final Processor<String> processor ) {
+ final ExportFormat exportFormat,
+ final Function<String, String> evaluator ) {
mNodeRenderer = EXPORT_RENDERERS.getOrDefault( exportFormat, RENDERER );
- mNodeRenderer.setProcessor( processor );
+ mNodeRenderer.setEvaluator( evaluator );
}
private static abstract class RendererFacade
implements NodeRenderer {
- private Processor<String> mProcessor;
+ private Function<String, String> mEvaluator;
@Override
final HtmlWriter html );
- private void setProcessor( final Processor<String> processor ) {
- mProcessor = processor;
+ private void setEvaluator( final Function<String, String> evaluator ) {
+ mEvaluator = evaluator;
}
- Processor<String> getProcessor() {
- return mProcessor;
+ Function<String, String> getEvaluator() {
+ return mEvaluator;
}
}
final NodeRendererContext context,
final HtmlWriter html ) {
- final var text = getProcessor().apply( node.getText().toString() );
+ final var text = getEvaluator().apply( node.getText().toString() );
final var content =
mIncludeDelimiter
final var tex = node.getText().toStringOrNull();
final var doc = MATH_RENDERER.render(
- tex == null ? "" : getProcessor().apply( tex ) );
+ tex == null ? "" : getEvaluator().apply( tex ) );
final var svg = SvgRasterizer.toSvg( doc.getDocumentElement() );
html.raw( svg );
final HtmlWriter html ) {
html.raw( TOKEN_OPEN );
- html.raw( getProcessor().apply( node.getText().toString() ) );
+ html.raw( getEvaluator().apply( node.getText().toString() ) );
html.raw( TOKEN_CLOSE );
}