---+ Twiki Java Parser

---++ Features

This parser of the [[http://www.twiki.org][TWiki]] text format supports most
of http://twiki.org/cgi-bin/view/TWiki/TextFormattingRules formatting commands.

---+++ General

   * Paragraps,
   * Wiki Words
      * WikiWord
      * Web.WikiWord#anchor,  
      * escaped: !WikiWord
   * Forced Links:
      * [[wiki word]]
      * escaped ![[wiki word]]
   * Specific links: 
      * [[http://www.zauber.com.ar][Zauber]],
      * prevention: ![[http://www.zauber.com.ar][Forced links]]
   * Anchors: [[#AnchorEnd][End]]
   * inline urls:
      * http://twiki.org/
   * mailto link:
      * [[mailto:a@z.com Mail]]
      * [[mailto:?subject=Hi Hi]]

---+++ Text Format:

   * *bold*
   * _italic_
   * __bold italic__
   * =Fixedfont=
   * ==Bold fixed==

And nested formats like:
   * *bold with _italic_ and some =fixed= and bold*
Make sure there is no space between the text and the bold, italic, or other
indicators (* _ __ = ==).

---+++ Lists

   * items
      * nested items
      * ordered list
         * arabic numerals
            1. item
            1. item
            1. ...
         * uppercase letters
            A. item
            A. item
            A. ...
         * lowercase letters
            a. item
            a. item
            a. ...
         * uppercase roman numerals
            A. item
            A. item
            A. ....
         * Uppercase Roman Numerals
            I. item
            I. item
            I. ...
         * Lowercase Roman Numerals
            i. item
            i. item
            i. ....

---+++ Separators

Up
---------------------------
Down

---+++ Table

 | *A* | *B* | *C* |
 | Foo | bar | Foo |
 | Bar | Foo | bar |
 | Foo | bar | Foo |

---++ Missing things
---+++ Verbating Mode
<verbatim>
class CatAnimal {
  void purr() {
      <code here>
}
</verbatim>

---+++ Definition List
(i don't use it)
   $ Sushi: Japan
      $ Dim Sum: S.F.
   $ Asado: Argentina

---+++ Diable Links

<noautolink>
   RedHat &
  SuSE
</noautolink>
   
---+++ Html
    *  <pre>some text</pre>

#EndAnchor
