All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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