/* Definition.java - functions for definition parsing.
*
* Copyright (c) 2008 Andrew Krizhanovsky <andrew.krizhanovsky at gmail.com>
* Distributed under GNU General Public License.
*/
package wikokit.base.wikt.util;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
/** A library of functions for definition parsing. Functions are common
* to many languages, else they should be added to DefinitionLanguageCode.java.
* Example of definition (3 lines):
* # {{archaic}} Seeing that, [[since]].
* #*'''1603''', John Florio, translating Michel de Montaigne, ''Essays'', Folio Society 2006, vol. 1 p. 186-7:
* #*:'''Sithence''' it must continue so short a time, and begun so late [...], there was no time to be lost.
*/
public class Definition {
private static final boolean DEBUG = false;
/** Gets position after /^\s+#\s+/ */
private final static Pattern ptrn_definition_number_sign = Pattern.compile(
"\\A\\s*#\\s*"); // vim: ^\s*#\s*
/* Strip number sign '#' and spaces (trim). */
public static String stripNumberSign (String page_title, String text) {
// gets position in text after "# "
Matcher m = ptrn_definition_number_sign.matcher(text.toString());
boolean b_next = m.find();
if(!b_next) { // there is no definition section!
if(DEBUG)
System.out.println("Warning in Definition.stripNumberSign(): The article '"+
page_title + "' has no number sign '#' in a definition.");
return text;
}
return text.substring(m.end()).trim();
}
/* Gets first line from the text. */
public static String getFirstLine (String page_title, String text) {
int pos = 0;
if((pos = text.indexOf("\n")) == -1)
return text;
return text.substring(0, pos);
}
}