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

com.almondtools.stringsandchars.regex.CharClassNode Maven / Gradle / Ivy

package com.almondtools.stringsandchars.regex;

import static java.util.Arrays.asList;

import java.util.Iterator;
import java.util.List;

public class CharClassNode extends AbstractCharClassNode implements RegexNode {

	private List charNodes;

	public CharClassNode(DefinedCharNode... charNodes) {
		this(asList(charNodes));
	}

	public CharClassNode(List charNodes) {
		this.charNodes = charNodes;
	}

	@Override
	public List toCharNodes() {
		return charNodes;
	}
	
	@Override
	public CompClassNode invert(char min, char max) {
		return new CompClassNode(charNodes, computeComplement(charNodes, min, max));
	}

	@Override
	public  T accept(RegexNodeVisitor visitor) {
		return visitor.visitCharClass(this);
	}

	@Override
	public CharClassNode clone() {
		return (CharClassNode) super.clone();
	}

	@Override
	public String toString() {
		StringBuilder buffer = new StringBuilder();
		buffer.append('[');
		Iterator charNodeIterator = charNodes.iterator();
		while (charNodeIterator.hasNext()) {
			DefinedCharNode next = charNodeIterator.next();
			buffer.append(next.toInlinedString());
		}
		buffer.append(']');
		return buffer.toString();
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy