org.unlaxer.parser.elementary.WildCardStringTerninatorParser Maven / Gradle / Ivy
package org.unlaxer.parser.elementary;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.unlaxer.Name;
import org.unlaxer.parser.Parser;
import org.unlaxer.parser.StaticParser;
import org.unlaxer.parser.combinator.Choice;
import org.unlaxer.parser.combinator.MatchOnly;
import org.unlaxer.parser.combinator.ZeroOrMore;
public class WildCardStringTerninatorParser extends ZeroOrMore implements StaticParser {
private static final long serialVersionUID = -3386398191774012367L;
static final Parser wildCardStringParser = new WildCardStringParser();
public WildCardStringTerninatorParser(boolean isTerminatorIsMatchOnly , String... excludes) {
super(wildCardStringParser , createTerminator(isTerminatorIsMatchOnly , excludes));
}
public WildCardStringTerninatorParser(String... excludes) {
this(true , excludes);
}
public WildCardStringTerninatorParser(boolean isTerminatorIsMatchOnly ,Parser terminator) {
super(wildCardStringParser , isTerminatorIsMatchOnly ? new MatchOnly(terminator) : terminator);
}
public WildCardStringTerninatorParser(Parser terminator) {
this(true,terminator);
}
public WildCardStringTerninatorParser(Name name, boolean isTerminatorIsMatchOnly ,String... excludes) {
super(name , wildCardStringParser , createTerminator(isTerminatorIsMatchOnly,excludes));
}
public WildCardStringTerninatorParser(Name name, String... excludes) {
super(name , wildCardStringParser , createTerminator(true,excludes));
}
static Parser createTerminator(boolean isTerminatorIsMatchOnly , String[] terminators) {
Stream parserStream = Stream.of(terminators)
.map(WordParser::new);
if(isTerminatorIsMatchOnly) {
parserStream = parserStream.map(MatchOnly::new);
}
List parsers = parserStream
.collect(Collectors.toList());
Choice choice = new Choice(parsers);
return choice;
}
} © 2015 - 2025 Weber Informatics LLC | Privacy Policy