info.bliki.wiki.model.Configuration Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bliki-core Show documentation
Show all versions of bliki-core Show documentation
This is the core project.
The newest version!
package info.bliki.wiki.model;
import info.bliki.extensions.scribunto.template.Invoke;
import info.bliki.htmlcleaner.TagToken;
import info.bliki.wiki.filter.ParsedPageName;
import info.bliki.wiki.tags.ATag;
import info.bliki.wiki.tags.BrTag;
import info.bliki.wiki.tags.HTMLBlockTag;
import info.bliki.wiki.tags.HTMLTag;
import info.bliki.wiki.tags.HrTag;
import info.bliki.wiki.tags.MathTag;
import info.bliki.wiki.tags.NowikiTag;
import info.bliki.wiki.tags.PTag;
import info.bliki.wiki.tags.PreTag;
import info.bliki.wiki.tags.RefTag;
import info.bliki.wiki.tags.ReferencesTag;
import info.bliki.wiki.tags.SourceTag;
import info.bliki.wiki.tags.code.ABAPCodeFilter;
import info.bliki.wiki.tags.code.CSharpCodeFilter;
import info.bliki.wiki.tags.code.GroovyCodeFilter;
import info.bliki.wiki.tags.code.JavaCodeFilter;
import info.bliki.wiki.tags.code.JavaScriptCodeFilter;
import info.bliki.wiki.tags.code.PHPCodeFilter;
import info.bliki.wiki.tags.code.PythonCodeFilter;
import info.bliki.wiki.tags.code.SQLCodeFilter;
import info.bliki.wiki.tags.code.SourceCodeFormatter;
import info.bliki.wiki.tags.code.XMLCodeFilter;
import info.bliki.wiki.template.Anchorencode;
import info.bliki.wiki.template.Expr;
import info.bliki.wiki.template.Formatnum;
import info.bliki.wiki.template.Fullurl;
import info.bliki.wiki.template.ITemplateFunction;
import info.bliki.wiki.template.If;
import info.bliki.wiki.template.Ifeq;
import info.bliki.wiki.template.Iferror;
import info.bliki.wiki.template.Ifexist;
import info.bliki.wiki.template.Ifexpr;
import info.bliki.wiki.template.LC;
import info.bliki.wiki.template.LCFirst;
import info.bliki.wiki.template.Localurl;
import info.bliki.wiki.template.NS;
import info.bliki.wiki.template.NSE;
import info.bliki.wiki.template.Padleft;
import info.bliki.wiki.template.Padright;
import info.bliki.wiki.template.Plural;
import info.bliki.wiki.template.Switch;
import info.bliki.wiki.template.Tag;
import info.bliki.wiki.template.Time;
import info.bliki.wiki.template.Titleparts;
import info.bliki.wiki.template.UC;
import info.bliki.wiki.template.UCFirst;
import info.bliki.wiki.template.URLEncode;
import info.bliki.wiki.template.extension.DollarContext;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.regex.Pattern;
/**
* Common Configuration settings
*/
public class Configuration implements IConfiguration {
/**
* Get the current Bliki.info Engine
version
*/
public final static String BLIKI_VERSION = "3.1.0-SNAPSHOT";
/**
* Print additional debug information to System.out
*/
public final static boolean DEBUG = false;
/**
* Print additional stack trace information to System.out
*/
public final static boolean STACKTRACE = false;
/**
* Print parser function calls (ITemplateFunction calls) with isSubst==false
*/
public final static boolean PARSER_FUNCTIONS = false;
/**
* Print template calls
*
* @see AbstractWikiModel#substituteTemplateCall(String, Map, Appendable)
*/
public final static boolean TEMPLATE_NAMES = false;
/**
* Print raw content calls
*
* @see IWikiModel#getRawWikiContent(ParsedPageName, Map)
*/
public final static boolean RAW_CONTENT = false;
private static final String INTERWIKI_RESOURCE_NAME = "/interwiki.properties";
public static final String SPECIAL_BLOCK_TAGS = "|applet|snippet|blockquote|body|button|center|dd|del|div|fieldset|form|iframe|ins|li|map|noframes|noscript|object|td|th|";
final static HTMLTag HTML_A_OPEN = new ATag();
public static final HTMLTag HTML_ABBR_OPEN = new HTMLTag("abbr");
public static final HTMLTag HTML_EM_OPEN = new HTMLTag("em");
public static final HTMLTag HTML_H1_OPEN = new HTMLBlockTag("h1", SPECIAL_BLOCK_TAGS);
public static final HTMLTag HTML_H2_OPEN = new HTMLBlockTag("h2", SPECIAL_BLOCK_TAGS);
public static final HTMLTag HTML_H3_OPEN = new HTMLBlockTag("h3", SPECIAL_BLOCK_TAGS);
public static final HTMLTag HTML_H4_OPEN = new HTMLBlockTag("h4", SPECIAL_BLOCK_TAGS);
public static final HTMLTag HTML_H5_OPEN = new HTMLBlockTag("h5", SPECIAL_BLOCK_TAGS);
public static final HTMLTag HTML_H6_OPEN = new HTMLBlockTag("h6", SPECIAL_BLOCK_TAGS);
public static final HTMLTag HTML_ITALIC_OPEN = new HTMLTag("i");
public static final HTMLTag HTML_BOLD_OPEN = new HTMLTag("b");
public static final HTMLTag HTML_PARAGRAPH_OPEN = new PTag();
public static final HTMLTag HTML_BLOCKQUOTE_OPEN = new HTMLBlockTag("blockquote", SPECIAL_BLOCK_TAGS);
public static final HTMLTag HTML_STRIKE_OPEN = new HTMLTag("strike");
public static final HTMLTag HTML_STRONG_OPEN = new HTMLTag("strong");
public static final HTMLTag HTML_UNDERLINE_OPEN = new HTMLTag("u");
public static final HTMLTag HTML_SUB_OPEN = new HTMLTag("sub");
public static final HTMLTag HTML_SUP_OPEN = new HTMLTag("sup");
public static final HTMLTag HTML_CENTER_OPEN = new HTMLTag("center");
public static final HTMLTag HTML_TT_OPEN = new HTMLTag("tt");
public static final HTMLTag HTML_TABLE_OPEN = new HTMLBlockTag("table", SPECIAL_BLOCK_TAGS);
public static final HTMLTag HTML_CAPTION_OPEN = new HTMLBlockTag("caption", "|table|");
public static final HTMLTag HTML_TH_OPEN = new HTMLBlockTag("th", "|tr|");
public static final HTMLTag HTML_TR_OPEN = new HTMLBlockTag("tr", "|table|tbody|tfoot|thead|");
public static final HTMLTag HTML_TD_OPEN = new HTMLBlockTag("td", "|tr|");
public static final HTMLTag HTML_UL_OPEN = new HTMLBlockTag("ul", SPECIAL_BLOCK_TAGS);
public static final HTMLTag HTML_OL_OPEN = new HTMLBlockTag("ol", SPECIAL_BLOCK_TAGS);
public static final HTMLTag HTML_LI_OPEN = new HTMLBlockTag("li", "|dir|menu|ol|ul|", HTML_UL_OPEN);
public static final HTMLTag HTML_FONT_OPEN = new HTMLTag("font");
public static final HTMLTag HTML_CITE_OPEN = new HTMLTag("cite");
public static final HTMLTag HTML_DIV_OPEN = new HTMLBlockTag("div", SPECIAL_BLOCK_TAGS);
public static final HTMLTag HTML_SPAN_OPEN = new HTMLTag("span");
public static final HTMLTag HTML_VAR_OPEN = new HTMLTag("var");
public static final HTMLTag HTML_CODE_OPEN = new HTMLTag("code");
// strike-through
public static final HTMLTag HTML_S_OPEN = new HTMLTag("s");
// small
public static final HTMLTag HTML_SMALL_OPEN = new HTMLTag("small");
public static final HTMLTag HTML_BIG_OPEN = new HTMLTag("big");
public static final HTMLTag HTML_DEL_OPEN = new HTMLTag("del");
public static final HTMLTag HTML_PRE_OPEN = new PreTag();
public static final String DEFAULT_WIKI_ID = "enwiki";
private static Map TEMPLATE_CALLS_CACHE = null;
/**
* Map from the interwiki shortcut to the real Interwiki-URL
*/
private static final Map INTERWIKI_MAPPING = new HashMap<>();
private final Map interWikiMapping = new HashMap<>();
/**
* Map the HTML token string to the correspoding TagToken implementation
*/
protected static final HashMap TAG_TOKEN_MAP = new HashMap<>();
/**
* Map the source code's language string to the code formatter implementation
*/
protected static final HashMap CODE_FORMATTER_MAP = new HashMap<>();
/**
* Map the template's function name to the TemplateFunction implementation
*/
protected static final Map TEMPLATE_FUNCTION_MAP = new TreeMap<>(
String.CASE_INSENSITIVE_ORDER);
/**
* Allowed URI schemes
*/
protected static final Set URI_SCHEME_MAP = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
public final static Pattern NOWIKI_OPEN_PATTERN = Pattern.compile("\\", Pattern.CASE_INSENSITIVE);
public final static Pattern NOWIKI_CLOSE_PATTERN = Pattern.compile("\\<\\/nowiki\\>", Pattern.CASE_INSENSITIVE);
static {
final Properties mapping = Configuration.loadProperties(INTERWIKI_RESOURCE_NAME);
URI_SCHEME_MAP.add("http");
URI_SCHEME_MAP.add("https");
URI_SCHEME_MAP.add("ftp");
Enumeration