001package Torello.CSS;
002
003import java.util.Vector;
004import java.util.function.Consumer;
005
006import Torello.CSS.TokenizeException;
007
008@Torello.JavaDoc.JDHeaderBackgroundImg(EmbedTagFileID="CSS_TOK")
009public class Delimiter extends CSSToken
010    implements CharSequence, java.io.Serializable, Comparable<CharSequence>
011{
012    /** <EMBED CLASS='external-html' DATA-FILE-ID=SVUID> */
013    protected static final long serialVersionUID = 1;
014
015
016    // ********************************************************************************************
017    // ********************************************************************************************
018    // Public & Final Fields
019    // ********************************************************************************************
020    // ********************************************************************************************
021
022
023    /** The Character represented by this {@code Delimiter}-Token */
024    public final char c;
025
026
027    // ********************************************************************************************
028    // ********************************************************************************************
029    // Private Constructor, API "is" and "if" Methods
030    // ********************************************************************************************
031    // ********************************************************************************************
032
033
034    Delimiter(final int[] css, final int sPos)
035    {
036        super(css, sPos, sPos + 1);
037
038        final int   codePoint   = css[sPos];
039        final char  codePointCh = (char) codePoint;
040
041        this.c = (codePoint == codePointCh) ? codePointCh : 0;
042    }
043
044    @Override 
045    public final boolean isDelimiter() { return true; }
046
047    @Override
048    public final Delimiter ifDelimiter() { return this; }
049
050
051    // ********************************************************************************************
052    // ********************************************************************************************
053    // User's Constructor: An actual constructor :)
054    // ********************************************************************************************
055    // ********************************************************************************************
056
057
058    /**
059     * 
060     * @param c Any Java Character.
061     */
062    public Delimiter(char c)
063    {
064        super("" + c);
065
066        if (! Whitespace.is(c)) throw new TokenizeException
067            ("Character passed is whitespace (ASCII #" + ((int) c) + ")");
068
069        this.c = c;
070    }
071}