package org.ovirt.engine.core.compat;
import com.google.gwt.regexp.shared.MatchResult;
import com.google.gwt.regexp.shared.RegExp;
import org.ovirt.engine.core.compat.Match;
/**
* Replacement for System.Text.RegularExpressions.Regex
*
* @author drankevi
*
*/
public class Regex {
public static boolean IsMatch(String input, String pattern) {
return IsMatch(input, pattern, RegexOptions.None);
}
public static boolean IsMatch(String input, String pattern, int options) {
return new Regex(pattern, options).IsMatch(input);
}
public static Match Match(String input, String pattern) {
return Match(input, pattern, RegexOptions.None);
}
public static Match Match(String input, String pattern, int options) {
return new Regex(pattern, options).Match(input);
}
public static String replace(String input, String pattern, String replacement) {
return replace(input, pattern, replacement, RegexOptions.None);
}
public static String replace(String input, String pattern, String replacement, int options) {
return new Regex(pattern, options).replace(input, replacement);
}
private final String pattern;
private final RegExp impl;
private final int options;
public Regex(String pattern) {
this(pattern, RegexOptions.None);
}
public Regex(String pattern, int options) {
this.pattern = pattern;
this.options = options;
String flags = "";
if (this.isGlobal())
flags += 'g';
if (this.isIgnoreCase())
flags += 'i';
if (this.isMultiLine())
flags += 'm';
impl = RegExp.compile(pattern, flags);
}
public boolean isGlobal() {
return (options & RegexOptions.Singleline) != 0;
}
public boolean isIgnoreCase() {
return (options & RegexOptions.IgnoreCase) != 0;
}
public boolean IsMatch(String input) {
return impl.test(input);
}
public boolean isMultiLine() {
return (options & RegexOptions.Multiline) != 0;
}
public Match Match(String input) {
MatchResult matchResult = impl.exec(input);
return new Match(matchResult);
}
public String replace(String input, String replacement) {
return impl.replace(input, replacement);
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("RegExp [pattern=");
builder.append(pattern);
builder.append(", isGlobal()=");
builder.append(isGlobal());
builder.append(", isIgnoreCase()=");
builder.append(isIgnoreCase());
builder.append(", isMultiLine()=");
builder.append(isMultiLine());
builder.append("]");
return builder.toString();
}
}