org.kefirsf.bb.proc.ProcEmail Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kefirbb Show documentation
Show all versions of kefirbb Show documentation
KefirBB is a Java-library for text processing. Initially it was developed for BB2HTML translation.
But flexible configuration allows to use it in different cases. For example for parsing Markdown, Textile,
and for HTML filtration.
The newest version!
package org.kefirsf.bb.proc;
import java.text.MessageFormat;
import java.util.regex.Matcher;
/**
* The pattern element to parse EMAILs.
*
* @author kefir
*/
public class ProcEmail extends AbstractUrl {
/**
* Create a named URL variable
*
* @param name variable name
* @param ghost don't move the cursor after parsing
*/
public ProcEmail(String name, boolean ghost) {
super(name, ghost);
}
/**
* {@inheritDoc}
*/
@Override
public int findIn(Source source) {
Matcher matcher = REGEX_AUTHORITY.matcher(source.subToEnd());
int offset = -1;
while (matcher.find()) {
int matcherPosition = source.getOffset() + matcher.start();
if (parseLength(source, matcherPosition, null) > 0) {
offset = matcherPosition;
break;
}
}
return offset;
}
/**
* Parse URL. The offset must be on a URL element
*
* @param source text source
* @param offset offset for parsing
* @param terminator a terminator element which can be used to cut some URL parts. Can be null.
* @return URL length or -1 if it is not a URL.
*/
int parseLength(Source source, int offset, ProcPatternElement terminator) {
int length = 0;
// An authority data like john.smith:pa55W0RD@
int authorityLength = parseAuthority(source, offset + length);
if (authorityLength <= 0) {
return -1;
}
length += authorityLength;
int hostLength = parseHost(source, offset + length, terminator);
if (hostLength <= 0) {
return -1;
}
length += hostLength;
// A query like ?key1=value1&key2=value2
length += parseQuery(source, offset + length, terminator);
return length;
}
@Override
public String toString() {
return MessageFormat.format(
"",
getName(), ghost
);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy