| ClassicToCreoleTranslator.java |
1 /**
2 * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 * SOFTWARE.
21 */
22
23 package com.liferay.portlet.wiki.translators;
24
25 /**
26 * <a href="ClassicToCreoleTranslator.java.html"><b><i>View Source</i></b></a>
27 *
28 * @author Jorge Ferrer
29 *
30 */
31 public class ClassicToCreoleTranslator extends BaseTranslator {
32
33 public ClassicToCreoleTranslator() {
34 initRegexps();
35 }
36
37 protected void initRegexps() {
38
39 // Bold and italics
40
41 regexps.put(
42 "'''''((?s:.)*?)('''''|(\n\n|\r\r|\r\n\r\n))", "**//$1//**$3");
43
44 // Bold
45
46 regexps.put("'''((?s:.)*?)('''|(\n\n|\r\r|\r\n\r\n))", "**$1**$3");
47
48 // Italics
49
50 regexps.put("''((?s:.)*?)(''|(\n\n|\r\r|\r\n\r\n))", "//$1//$3");
51
52 // Link
53
54 regexps.put("\\[([^ ]*)\\]", "[[$1]]");
55
56 // Link with label
57
58 regexps.put("\\[([^ ]+) (.*)\\]", "[[$1|$2]]");
59
60 // Monospace
61
62 regexps.put("(^ (.+))(\\n (.+))*", "{{{\n$0\n}}}");
63
64 // List item
65
66 regexps.put("^\\t[\\*] (.*)", "* $1");
67
68 // List subitem
69
70 regexps.put("^\\t\\t[\\*] (.*)", "** $1");
71
72 // List subsubitem
73
74 regexps.put("^\\t\\t\\t[\\*] (.*)", "*** $1");
75
76 // List subsubsubitem
77
78 regexps.put("^\\t\\t\\t\\t[\\*] (.*)", "**** $1");
79
80 // Ordered list item
81
82 regexps.put("^\\t1 (.*)", "# $1");
83
84 // Ordered list subitem
85
86 regexps.put("^\\t\\t1 (.*)", "## $1");
87
88 // Ordered list subsubitem
89
90 regexps.put("^\\t\\t\\t1 (.*)", "### $1");
91
92 // Ordered list subsubsubitem
93
94 regexps.put("^\\t\\t\\t\\t1 (.*)", "#### $1");
95
96 // Term and definition
97
98 regexps.put("^\\t([\\w]+):\\t(.*)", "**$1**:\n$2");
99
100 // Indented paragraph
101
102 regexps.put("^\\t:\\t(.*)", "$1");
103
104 // CamelCase
105
106 regexps.put(
107 "(^|\\p{Punct}|\\p{Space})((\\p{Lu}\\p{Ll}+){2,})" +
108 "(\\z|\\n|\\p{Punct}|\\p{Space})", " [[$2]] ");
109 }
110
111 }