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

org.unlaxer.parser.combinator.ChildOccursWithTerminator Maven / Gradle / Ivy

package org.unlaxer.parser.combinator;

import java.util.Optional;
import java.util.function.Supplier;

import org.unlaxer.Name;
import org.unlaxer.parser.ChildOccurs;
import org.unlaxer.parser.Parser;
import org.unlaxer.parser.Parsers;


public abstract class ChildOccursWithTerminator extends ConstructedOccurs	{

	private static final long serialVersionUID = -4411440278839259161L;

	
	Optional> terminator;

	public ChildOccursWithTerminator(Supplier inner) {
		this(inner,null);
	}
	
	public ChildOccursWithTerminator(Class inner) {
		this(()->Parser.get(inner),null);
	}
	
	ChildOccursWithTerminator(Supplier inner,Supplier terminator) {
		this(null,inner,terminator);
	}
	
	public ChildOccursWithTerminator(Name name , Supplier inner) {
		this(name , inner, null);
	}
	
	public ChildOccursWithTerminator(Name name , Class inner) {
		this(name , ()->Parser.get(inner), null);
	}
	
	public ChildOccursWithTerminator(Name name , Class inner , Class terminator) {
		this(name , ()->Parser.get(inner) , ()->Parser.get(terminator));
	}
	
	public ChildOccursWithTerminator(Name name , Parser inner , Parser terminator) {
		this(name , ()->inner , ()->terminator);
	}

	
	ChildOccursWithTerminator(Name name , Supplier inner,Supplier terminator) {
		super(name , terminator == null ? 
				new Parsers(inner):
				new Parsers(inner,terminator));
		this.terminator = Optional.ofNullable(terminator);
	}
	
	@Override
	public Parser createParser() {
		return this;
	}
	
	@Override
	public ChildOccurs getChildOccurs() {
		return ChildOccurs.multi;
	}
	
	@Override
	public Optional getTerminator(){
		return terminator.map(Supplier::get);
				
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy