org.apache.wiki.parser
Class MarkupParser

java.lang.Object
  extended by org.apache.wiki.parser.MarkupParser
Direct Known Subclasses:
JSPWikiMarkupParser

public abstract class MarkupParser
extends Object

Provides an abstract class for the parser instances.

Since:
2.4

Field Summary
protected static String LEGACY_CHARS_ALLOWED
          Lists all punctuation characters allowed in WikiMarkup.
protected  ArrayList<StringTransmutator> m_attachmentLinkMutatorChain
           
protected  WikiContext m_context
           
protected  WikiEngine m_engine
           
protected  ArrayList<StringTransmutator> m_externalLinkMutatorChain
           
protected  ArrayList<HeadingListener> m_headingListenerChain
           
protected  PushbackReader m_in
           
protected  boolean m_inlineImages
           
protected  ArrayList<StringTransmutator> m_linkMutators
           
protected  ArrayList<StringTransmutator> m_localLinkMutatorChain
          Optionally stores internal wikilinks
protected  boolean m_parseAccessRules
           
static String PROP_ALLOWHTML
          If set to "true", allows using raw HTML within Wiki text.
static String PROP_RUNPLUGINS
          If set to "true", enables plugins during parsing
static String PUNCTUATION_CHARS_ALLOWED
          Lists all punctuation characters allowed in page names.
protected static int PUSHBACK_BUFFER_SIZE
          Allow this many characters to be pushed back in the stream.
 
Constructor Summary
protected MarkupParser(WikiContext context, Reader in)
          Constructs a MarkupParser.
 
Method Summary
 void addAttachmentLinkHook(StringTransmutator mutator)
          Adds a hook for processing attachment links.
 void addExternalLinkHook(StringTransmutator mutator)
          Adds a hook for processing external links.
 void addHeadingListener(HeadingListener listener)
          Adds a HeadingListener to the parser chain.
 void addLinkTransmutator(StringTransmutator mutator)
          Adds a hook for processing link texts.
 void addLocalLinkHook(StringTransmutator mutator)
          Adds a hook for processing local links.
static String cleanLink(String link)
          Cleans a Wiki name.
static String cleanLink(String link, String allowedChars)
          Cleans a Wiki name based on a list of characters.
 void disableAccessRules()
          Disables access rule parsing.
 void enableImageInlining(boolean toggle)
          Use this to turn on or off image inlining.
 int getPosition()
          Return the current position in the reader stream.
protected  int nextToken()
          Returns the next token in the stream.
abstract  WikiDocument parse()
          Parses the document.
protected  void pushBack(int c)
          Push back any character to the current input.
 Reader setInputReader(Reader in)
          Replaces the current input character stream with a new one.
static String wikifyLink(String link)
          Cleans away extra legacy characters.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PUSHBACK_BUFFER_SIZE

protected static final int PUSHBACK_BUFFER_SIZE
Allow this many characters to be pushed back in the stream. In effect, this limits the size of a single line.

See Also:
Constant Field Values

m_in

protected PushbackReader m_in

m_engine

protected WikiEngine m_engine

m_context

protected WikiContext m_context

m_localLinkMutatorChain

protected ArrayList<StringTransmutator> m_localLinkMutatorChain
Optionally stores internal wikilinks


m_externalLinkMutatorChain

protected ArrayList<StringTransmutator> m_externalLinkMutatorChain

m_attachmentLinkMutatorChain

protected ArrayList<StringTransmutator> m_attachmentLinkMutatorChain

m_headingListenerChain

protected ArrayList<HeadingListener> m_headingListenerChain

m_linkMutators

protected ArrayList<StringTransmutator> m_linkMutators

m_inlineImages

protected boolean m_inlineImages

m_parseAccessRules

protected boolean m_parseAccessRules

PROP_ALLOWHTML

public static final String PROP_ALLOWHTML
If set to "true", allows using raw HTML within Wiki text. Be warned, this is a VERY dangerous option to set - never turn this on in a publicly allowable Wiki, unless you are absolutely certain of what you're doing.

See Also:
Constant Field Values

PROP_RUNPLUGINS

public static final String PROP_RUNPLUGINS
If set to "true", enables plugins during parsing

See Also:
Constant Field Values

LEGACY_CHARS_ALLOWED

protected static final String LEGACY_CHARS_ALLOWED
Lists all punctuation characters allowed in WikiMarkup. These will not be cleaned away. This is for compatibility for older versions of JSPWiki.

See Also:
Constant Field Values

PUNCTUATION_CHARS_ALLOWED

public static final String PUNCTUATION_CHARS_ALLOWED
Lists all punctuation characters allowed in page names.

See Also:
Constant Field Values
Constructor Detail

MarkupParser

protected MarkupParser(WikiContext context,
                       Reader in)
Constructs a MarkupParser. The subclass must call this constructor to set up the necessary bits and pieces.

Parameters:
context - The WikiContext.
in - The reader from which we are reading the bytes from.
Method Detail

setInputReader

public Reader setInputReader(Reader in)
Replaces the current input character stream with a new one.

Parameters:
in - New source for input. If null, this method does nothing.
Returns:
the old stream

addLinkTransmutator

public void addLinkTransmutator(StringTransmutator mutator)
Adds a hook for processing link texts. This hook is called when the link text is written into the output stream, and you may use it to modify the text. It does not affect the actual link, only the user-visible text.

Parameters:
mutator - The hook to call. Null is safe.

addLocalLinkHook

public void addLocalLinkHook(StringTransmutator mutator)
Adds a hook for processing local links. The engine transforms both non-existing and existing page links.

Parameters:
mutator - The hook to call. Null is safe.

addExternalLinkHook

public void addExternalLinkHook(StringTransmutator mutator)
Adds a hook for processing external links. This includes all http:// ftp://, etc. links, including inlined images.

Parameters:
mutator - The hook to call. Null is safe.

addAttachmentLinkHook

public void addAttachmentLinkHook(StringTransmutator mutator)
Adds a hook for processing attachment links.

Parameters:
mutator - The hook to call. Null is safe.

addHeadingListener

public void addHeadingListener(HeadingListener listener)
Adds a HeadingListener to the parser chain. It will be called whenever a parsed header is found.

Parameters:
listener - The listener to add.

disableAccessRules

public void disableAccessRules()
Disables access rule parsing.


enableImageInlining

public void enableImageInlining(boolean toggle)
Use this to turn on or off image inlining.

Parameters:
toggle - If true, images are inlined (as per set in jspwiki.properties) If false, then images won't be inlined; instead, they will be treated as standard hyperlinks.
Since:
2.2.9

parse

public abstract WikiDocument parse()
                            throws IOException
Parses the document.

Returns:
the parsed document, as a WikiDocument
Throws:
IOException - If something goes wrong.

getPosition

public int getPosition()
Return the current position in the reader stream. The value will be -1 prior to reading.

Returns:
the reader position as an int.

nextToken

protected final int nextToken()
                       throws IOException,
                              NullPointerException
Returns the next token in the stream. This is the most called method in the entire parser, so it needs to be lean and mean.

Returns:
The next token in the stream; or, if the stream is ended, -1.
Throws:
IOException - If something bad happens
NullPointerException - If you have not yet created an input document.

pushBack

protected void pushBack(int c)
                 throws IOException
Push back any character to the current input. Does not push back a read EOF, though.

Parameters:
c - Character to push back.
Throws:
IOException - In case the character cannot be pushed back.

cleanLink

public static String cleanLink(String link)
Cleans a Wiki name. The functionality of this method was changed in 2.6 so that the list of allowed characters is much larger. Use wikifyLink() to get the legacy behaviour.

[ This is a link ] -> This is a link

Parameters:
link - Link to be cleared. Null is safe, and causes this to return null.
Returns:
A cleaned link.
Since:
2.0

cleanLink

public static String cleanLink(String link,
                               String allowedChars)
Cleans a Wiki name based on a list of characters. Also, any multiple whitespace is collapsed into a single space, and any leading or trailing space is removed.

Parameters:
link - Link to be cleared. Null is safe, and causes this to return null.
allowedChars - Characters which are allowed in the string.
Returns:
A cleaned link.
Since:
2.6

wikifyLink

public static String wikifyLink(String link)
Cleans away extra legacy characters. This method functions exactly like pre-2.6 cleanLink()

[ This is a link ] -> ThisIsALink

Parameters:
link - Link to be cleared. Null is safe, and causes this to return null.
Returns:
A cleaned link.
Since:
2.6


Copyright © {inceptionYear}-2014 The Apache Software Foundation. All rights reserved.