View Javadoc
1   /*
2    * #%L
3    * JRst :: Api
4    * %%
5    * Copyright (C) 2004 - 2010 CodeLutin
6    * %%
7    * This program is free software: you can redistribute it and/or modify
8    * it under the terms of the GNU Lesser General Public License as 
9    * published by the Free Software Foundation, either version 3 of the 
10   * License, or (at your option) any later version.
11   * 
12   * This program is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   * GNU General Lesser Public License for more details.
16   * 
17   * You should have received a copy of the GNU General Lesser Public 
18   * License along with this program.  If not, see
19   * <http://www.gnu.org/licenses/lgpl-3.0.html>.
20   * #L%
21   */
22  
23  package org.nuiton.jrst.legacy;
24  
25  import java.util.regex.Pattern;
26  
27  /**
28   * ReStructuredText.
29   *
30   * Created: 27 oct. 06 11:10:30
31   *
32   * @author poussin
33   * @version $Revision$
34   *
35   * Last update: $Date$
36   * by : $Author$
37   */
38  public class ReStructuredText {
39  
40      public static final String DTD = "http://docutils.sourceforge.net/docs/ref/docutils.dtd";
41  
42      public static final String TITLE_CHAR = "-=-~'`^+:!\"#$%&*,./;|?@\\_[\\]{}<>()";
43      public static final String QUOTED_CHAR = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
44      public static final String BULLET_CHAR = "*" + "+" + "-" + "\u2022"
45              + "\u2023" + "\u2043";
46      public static final String DOCINFO_ITEM = "author|authors|organization|address|contact|version|revision|status|date|copyright";
47      public static final String FOOTNOTE_SYMBOL = "\u002A" + "\u2020" + "\u2021"
48              + "\u00A7" + "\u00B6" + "\u0023" + "\u2660" + "\u2665" + "\u2666"
49              + "\u2663";
50      // public static final String ADMONITION =
51      // "admonition|caution|danger|error|hint|important|note|tip|warning";
52      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
53      // Root Element
54      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55      public static final String DOCUMENT = "document";
56  
57      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
58      // Title Elements
59      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
60      public static final String TITLE = "title";
61      public static final String SUBTITLE = "subtitle";
62  
63      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
64      // Bibliographic Elements
65      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
66      public static final String DOCINFO = "docinfo";
67      // public static final String INFO = "info";
68      public static final String AUTHOR = "author";
69      public static final String AUTHORS = "authors";
70      public static final String ORGANIZATION = "organization";
71      public static final String ADDRESS = "address";
72      public static final String CONTACT = "contact";
73      public static final String VERSION = "version";
74      public static final String REVISION = "revision";
75      public static final String STATUS = "status";
76      public static final String DATE = "date";
77      public static final String COPYRIGHT = "copyright";
78  
79      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
80      // Decoration Elements
81      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
82      public static final String DECORATION = "decoration";
83      public static final String HEADER = "header";
84      public static final String FOOTER = "footer";
85  
86      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
87      // Structural Elements
88      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
89      public static final String SECTION = "section";
90      public static final String TOPIC = "topic";
91      public static final String SIDEBAR = "sidebar";
92      public static final String TRANSITION = "transition";
93  
94      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
95      // Body Elements
96      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
97      public static final String PARAGRAPH = "paragraph";
98      public static final String COMPOUND = "compound";
99      public static final String CONTAINER = "container";
100     public static final String BULLET_LIST = "bullet_list";
101     public static final String ENUMERATED_LIST = "enumerated_list";
102     public static final String LIST_ITEM = "list_item";
103     public static final String DEFINITION_LIST = "definition_list";
104     public static final String DEFINITION_LIST_ITEM = "definition_list_item";
105     public static final String TERM = "term";
106     public static final String CLASSIFIER = "classifier";
107     public static final String DEFINITION = "definition";
108     public static final String FIELD_LIST = "field_list";
109     public static final String FIELD = "field";
110     public static final String FIELD_NAME = "field_name";
111     public static final String FIELD_BODY = "field_body";
112     public static final String OPTION_LIST = "option_list";
113     public static final String OPTION_LIST_ITEM = "option_list_item";
114     public static final String OPTION_GROUP = "option_group";
115     public static final String OPTION = "option";
116     public static final String OPTION_STRING = "option_string";
117     public static final String OPTION_ARGUMENT = "option_argument";
118     public static final String DESCRIPTION = "description";
119     public static final String LITERAL_BLOCK = "literal_block";
120     public static final String LINE_BLOCK = "line_block";
121     public static final String LINE = "line";
122     public static final String BLOCK_QUOTE = "block_quote";
123     public static final String ATTRIBUTION = "attribution";
124     public static final String DOCTEST_BLOCK = "doctest_block";
125     public static final String ATTENTION = "attention";
126     public static final String CAUTION = "caution";
127     public static final String DANGER = "danger";
128     public static final String ERROR = "error";
129     public static final String HINT = "hint";
130     public static final String IMPORTANT = "important";
131     public static final String NOTE = "note";
132     public static final String TIP = "tip";
133     public static final String WARNING = "warning";
134     public static final String ADMONITION = "admonition";
135     public static final String FOOTNOTE = "footnote";
136     public static final String CITATION = "citation";
137     public static final String LABEL = "label";
138     public static final String RUBRIC = "rubric";
139     public static final String TARGET = "target";
140     public static final String SUBSTITUTION_DEFINITION = "substitution_definition";
141     public static final String COMMENT = "comment";
142     public static final String PENDING = "pending";
143     public static final String FIGURE = "figure";
144     public static final String IMAGE = "image";
145     public static final String CAPTION = "caption";
146     public static final String LEGEND = "legend";
147     public static final String SYSTEM_MESSAGE = "system_message";
148     public static final String RAW = "raw";
149 
150     // table
151     public static final String TABLE = "table";
152     public static final String TGROUP = "tgroup";
153     public static final String COLSPEC = "colspec";
154     public static final String THEAD = "thead";
155     public static final String TBODY = "tbody";
156     public static final String ROW = "row";
157     public static final String ENTRY = "entry";
158 
159     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
160     // Inline Elements
161     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
162     public static final String EMPHASIS = "emphasis";
163     public static final String STRONG = "strong";
164     public static final String LITERAL = "literal";
165     public static final String REFERENCE = "reference";
166     public static final String FOOTNOTE_REFERENCE = "footnote_reference";
167     public static final String CITATION_REFERENCE = "citation_reference";
168     public static final String SUBSTITUTION_REFERENCE = "substitution_reference";
169     public static final String TITLE_REFERENCE = "title_reference";
170     public static final String ABBREVIATION = "abbreviation";
171     public static final String ACRONYM = "acronym";
172     public static final String SUPERSCRIPT = "superscript";
173     public static final String SUBSCRIPT = "subscript";
174     public static final String INLINE = "inline";
175     public static final String PROBLEMATIC = "problematic";
176     public static final String GENERATED = "generated";
177 
178     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
179     // Inline Elements Regex
180     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
181     public static final Pattern REGEX_EMPHASIS = Pattern
182             .compile("\\*([^*(\\]_.+\\[)].+?)\\*");
183     public static final Pattern REGEX_STRONG = Pattern
184             .compile("\\*\\*(.+?)\\*\\*");
185     public static final Pattern REGEX_LITERAL = Pattern.compile("``([^`]+)``");
186     public static final Pattern REGEX_REFERENCE = Pattern
187             .compile("(https?://[-/%#[\\&&&[^(&gt;)]]\\._\\w:]+\\w+)((\\W|&|$)+)");
188     public static final Pattern REGEX_INLINE_REFERENCE = Pattern
189             .compile("`(.+?) \\&lt\\;((https?://)?[-/%#&\\._\\w:[^ ]]+)(\\&gt\\;)`_");
190     public static final Pattern REGEX_EMAIL = Pattern
191             .compile("(^|[^_\\w])([-\\._\\w]+@[-\\._\\w]+)([^-\\._\\w]|$)");
192     public static final Pattern REGEX_FOOTNOTE_REFERENCE = Pattern
193             .compile("\\[(#|[0-9]|\\*)\\w*\\]_");
194     // "\\[([0-9]+?|#)\\]");
195     public static final Pattern REGEX_CITATION_REFERENCE = Pattern
196             .compile("\\[([^\\]]+?)\\]");
197     public static final Pattern REGEX_SUBSTITUTION_REFERENCE = Pattern
198             .compile("\\|([^|]+?)\\|");
199     public static final Pattern REGEX_ABBREVIATION = Pattern.compile("(.*?)");
200     public static final Pattern REGEX_ACRONYM = Pattern.compile("(.*?)");
201     public static final Pattern REGEX_SUPERSCRIPT = Pattern.compile("(.*?)");
202     public static final Pattern REGEX_SUBSCRIPT = Pattern.compile("(.*?)");
203     public static final Pattern REGEX_INLINE = Pattern.compile("(.*?)");
204     public static final Pattern REGEX_PROBLEMATIC = Pattern.compile("(.*?)");
205     public static final Pattern REGEX_GENERATED = Pattern.compile("(.*?)");
206     // `truc truc`_
207     public static final Pattern REGEX_HYPERLINK_REFERENCE = Pattern
208             .compile("(\\`[^_<>]+\\`_(\\W|$))|((&apos;|`)[^_<`(&apos;)>]+(&apos;|`)_(\\W|$))|([\\S]+[^\\s<>\\.`]+_(\\W|$))");
209     // `trux truc`__
210     public static final Pattern REGEX_ANONYMOUS_HYPERLINK_REFERENCE = Pattern
211             .compile("(\\`[^<>`\\]\\[]+\\`__)|(\\w+[^()`\\s<>]+__)");
212 }