Dave Jarvis' Repositories

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

Made .Rxml a 'markdown' extension and renamed 'markdown' extensions to 'source' extensions. Reduced memory requirements by creating shared instances of Renjin, VTDGen, and other reusable processor instance variables.

Authordjarvis <email>
Date2017-01-30 20:35:08 GMT-0800
Commita0208dd9465087b4ccc4645f3523cea0b543a849
Parentc617aed
Delta25 lines added, 61 lines removed, 36-line decrease
src/main/resources/com/scrivenvar/messages.properties
Dialog.file.choose.save.title=Save File
-Dialog.file.choose.filter.title.markdown=Markdown Files
+Dialog.file.choose.filter.title.source=Source Files
Dialog.file.choose.filter.title.definition=Definition Files
Dialog.file.choose.filter.title.xml=XML Files
src/main/resources/com/scrivenvar/settings.properties
file.ext.rmarkdown=*.Rmd
file.ext.rxml=*.Rxml
-file.ext.markdown=*.md,*.markdown,*.mkdown,*.mdown,*.mkdn,*.mkd,*.mdwn,*.mdtxt,*.mdtext,*.text,*.txt,${file.ext.rmarkdown}
+file.ext.source=*.md,*.markdown,*.mkdown,*.mdown,*.mkdn,*.mkd,*.mdwn,*.mdtxt,*.mdtext,*.text,*.txt,${file.ext.rmarkdown},${file.ext.rxml}
file.ext.definition=${definition.file.ext.yaml}
file.ext.xml=*.xml,${file.ext.rxml}
src/main/java/com/scrivenvar/processors/MarkdownProcessor.java
import com.vladsch.flexmark.superscript.SuperscriptExtension;
import java.util.ArrayList;
-import java.util.List;
-
+import java.util.Collection;
/**
* Responsible for parsing a Markdown document and rendering it as HTML.
*
* @author White Magic Software, Ltd.
*/
public class MarkdownProcessor extends AbstractProcessor<String> {
- private List<Extension> extensions;
+ private final static HtmlRenderer RENDERER;
+ private final static Parser PARSER;
+
+ static {
+ final Collection<Extension> extensions = new ArrayList<>();
+ extensions.add( TablesExtension.create() );
+ extensions.add( SuperscriptExtension.create() );
+ extensions.add( StrikethroughSubscriptExtension.create() );
+
+ RENDERER = HtmlRenderer.builder().extensions( extensions ).build();
+ PARSER = Parser.builder().extensions( extensions ).build();
+ }
/**
*/
private Node parse( final String markdown ) {
- return createParser().parse( markdown );
+ return getParser().parse( markdown );
}
*/
private String toHtml( final String markdown ) {
- return createRenderer().render( parse( markdown ) );
- }
-
- /**
- * Returns the list of extensions to use when parsing and rendering Markdown
- * into HTML.
- *
- * @return A non-null list of Markdown extensions.
- */
- private synchronized List<Extension> getExtensions() {
- if( this.extensions == null ) {
- this.extensions = createExtensions();
- }
-
- return this.extensions;
- }
-
- /**
- * Creates a list that includes a TablesExtension. Subclasses may override
- * this method to insert more extensions, or remove the table extension.
- *
- * @return A list with an extension for parsing and rendering tables.
- */
- protected List<Extension> createExtensions() {
- final List<Extension> result = new ArrayList<>();
- result.add( TablesExtension.create() );
- result.add( SuperscriptExtension.create() );
- result.add( StrikethroughSubscriptExtension.create() );
- return result;
+ return getRenderer().render( parse( markdown ) );
}
/**
* Creates the Markdown document processor.
*
* @return A Parser that can build an abstract syntax tree.
*/
- private Parser createParser() {
- return Parser.builder().extensions( getExtensions() ).build();
+ private Parser getParser() {
+ return PARSER;
}
- /**
- * Creates the HTML document renderer.
- *
- * @return A renderer that can convert a Markdown AST to HTML.
- */
- private HtmlRenderer createRenderer() {
- return HtmlRenderer.builder().extensions( getExtensions() ).build();
+ private HtmlRenderer getRenderer() {
+ return RENDERER;
}
}
src/main/java/com/scrivenvar/processors/ProcessorFactory.java
break;
- case MARKDOWN:
+ case SOURCE:
processor = createMarkdownProcessor( tab );
break;
src/main/java/com/scrivenvar/processors/RVariableProcessor.java
* @author White Magic Software, Ltd.
*/
-class RVariableProcessor extends DefaultVariableProcessor {
+public class RVariableProcessor extends DefaultVariableProcessor {
public RVariableProcessor(
src/main/java/com/scrivenvar/processors/XMLCaretInsertionProcessor.java
public class XMLCaretInsertionProcessor extends CaretInsertionProcessor {
- private VTDGen parser;
+ private final static VTDGen PARSER = new VTDGen();
/**
private synchronized VTDGen getParser() {
- if( this.parser == null ) {
- this.parser = createParser();
- }
-
- return this.parser;
- }
-
- /**
- * Creates a high-performance XML document parser.
- *
- * @return A new XML parser.
- */
- protected VTDGen createParser() {
- return new VTDGen();
+ return PARSER;
}
}