/*
* WPCleaner: A tool to help on Wikipedia maintenance tasks.
* Copyright (C) 2013 Nicolas Vervelle
*
* See README.txt file for licensing information.
*/
package org.wikipediacleaner.api.data;
import org.wikipediacleaner.api.constants.EnumWikipedia;
/**
* Class containing information about a magic word (__MAGICWORD__).
*/
public class PageElementMagicWord extends PageElement {
private final String text;
private final MagicWord magicWord;
/**
* Analyze contents to check if it matches a magic word.
*
* @param wiki Wiki.
* @param contents Contents.
* @param index Block start index.
* @return Block details it there's a block.
*/
public static PageElementMagicWord analyzeBlock(
EnumWikipedia wiki, String contents, int index) {
// Verify arguments
if (contents == null) {
return null;
}
if ((index < 0) || (index >= contents.length())) {
return null;
}
// Check that it starts as a magic word
if (!contents.startsWith("__", index)) {
return null;
}
int beginIndex = index;
index += 2;
// Find where it ends
while ((index < contents.length()) &&
(Character.isLetter(contents.charAt(index)))) {
index++;
}
// Check that it ends as a magic word
if (!contents.startsWith("__", index)) {
return null;
}
int endIndex = index + 2;
// Check that it is really a magic word
String text = contents.substring(beginIndex, endIndex);
MagicWord magicWord = wiki.getWikiConfiguration().getMagicWordByAlias(text);
if (magicWord == null) {
return null;
}
return new PageElementMagicWord(
beginIndex, endIndex,
text, magicWord);
}
public String getText() {
return text;
}
public MagicWord getMagicWord() {
return magicWord;
}
private PageElementMagicWord(
int beginIndex, int endIndex,
String text, MagicWord magicWord) {
super(beginIndex, endIndex);
this.text = text;
this.magicWord = magicWord;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return text;
}
}