How to create a new markup #

KnowWE is designed for the easy introduction of new (e.g., project specific) markups. Therefore, an extra plugin extension point is provided. Further, a markup template is defined that allows to make benefit of existing implementations of parser and autocompletion functionality. We call this template DefaultMarkup. The implementation of a new markup based on the DefaultMarkup can be achieved at very low implementation workload. It is recommended to always make use of this template when creating a new markup (except for the very rare cases where it is not suitable).

Create a new markup derived from default markup#

The DefaultMarkup has a particular predefined syntactical structure that can be coined by a custom keyword and custom annotation.

Extend Class DefaultMarkupType#

To create a new markup based on DefaultMarkup, the class de.knowwe.kdom.defaultMarkup.DefaultMarkupType needs to be extended. The following code snipplet shows a Hello-World extension of DefaultMarkup.
 1| public class HelloWorldMarkup extends DefaultMarkupType {
 2|
 3|	private static final DefaultMarkup MARKUP;
 4|
 5|	static {
 6|		MARKUP = new DefaultMarkup("HelloWorld");
 7|	}
 8|
 9|	public HelloWorldMarkup() {
10|		super(MARKUP);
11|	}
12| }
A private instance of a DefaultMarkup is required (line 3). The initialization of the DefaultMarkup object in the static block (line 6) is required in that way to allow the plugin-framework to create a markup instance on start-up. In line 6 also the name (and markup keyword) is specified as parameter for the DefaultMarkup object, "HelloWorld" in this example. The DefaultMarkup object has to be passed to the super class constructor call, as shown in line 10.

Add Annotations#

public class HelloWorldMarkup extends DefaultMarkupType {

	public static final String IMAGE_KEY = "image";
	
	private static final DefaultMarkup MARKUP;

	static {
		MARKUP = new DefaultMarkup("HelloWorld");
		MARKUP.addAnnotation(Image_KEY, false);
	}

	public HelloWorldMarkup() {
		super(MARKUP);
	}
}

Create a renderer#

Create entry into the plugin.xml#

Create an new general markup#