Package Torello.CSS
Class Comment
- java.lang.Object
-
- Torello.CSS.CSSToken
-
- Torello.CSS.Comment
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.CharSequence,java.lang.Comparable<java.lang.CharSequence>
public class Comment extends CSSToken implements java.lang.CharSequence, java.io.Serializable, java.lang.Comparable<java.lang.CharSequence>
This is a Token Data-Class. It is a descendant of the root CSSToken-Class:CSSToken. Instances of the class are usually are produced by theCSSTokenizerclass. Many (but not all) of these subclasses maintain astatic-method for building instances of this class named'build'. AnyCSSToken-subclass that is neither a singleton-instance, nor an "Error-Subtype" should have such a builder. Singeton instances do not need builders, and the two Error-Subtype Classes can only be generated by the tokenizer.
AllCSSTokensubclasses have aCSSToken.strfield which contains the exact character data that was extracted and used to construct instances of this class. All sub-casses also have several "Loop Optimization" methods. These are methods that may or may not be useful in light of some of the newer additions to JDK 17 & 21 including the'instanceof varName'conditional-expression variable-naming features.
The algorithms used to write this tokenizer were generated based solely on the CSS Working-Group's Syntax-Documentation. This document may be viewed here:CSS Working-Group CSS-Syntax. There is an external site that maintain all thing CSS located atdrafts.csswg.orgRepresents a CSS Comment-Block- See Also:
- Serialized Form
Hi-Lited Source-Code:- View Here: Torello/CSS/Comment.java
- Open New Browser-Tab: Torello/CSS/Comment.java
File Size: 6,474 Bytes Line Count: 152 '\n' Characters Found
-
-
Field Summary
Serializable ID Modifier and Type Field protected static longserialVersionUID
-
Method Summary
Static Builders: Build an Instance of this class Modifier and Type Method static Commentbuild(String commentStr)Verify & Identify: CSS Working-Group Implementation Modifier and Type Method static booleanis(int[] css, int sPos)Tokenize CSS: CSS Working-Group Implementation Modifier and Type Method protected static voidconsume(int[] css, ByRef<Integer> POS, Consumer<CSSToken> returnParsedToken, Consumer<TokenizeError> errorEncountered)Loop-Optimization Methods: 'is' & 'if' Modifier and Type Method CommentifComment()booleanisComment()-
Methods inherited from class Torello.CSS.CSSToken
asAtKeyword, asBadStr, asBadURL, asCDC, asCDO, asComment, asDelimiter, asDimension, asEOF, asFunc, asHash, asIdentifier, asNum, asPercentage, asPunct, asStr, asUnicodeRange, asURL, asWhitespace, charAt, compareTo, equals, ifAtKeyword, ifBadStr, ifBadURL, ifCDC, ifCDO, ifDelimiter, ifDelimiter, ifDimension, ifEOF, ifFunc, ifHash, ifIdentifier, ifNum, ifPercentage, ifPunct, ifPunct, ifStr, ifUnicodeRange, ifURL, ifWhitespace, isAtKeyword, isBadStr, isBadURL, isCDC, isCDO, isDelimiter, isDelimiter, isDimension, isEOF, isFunc, isHash, isIdentifier, isNum, isPercentage, isPunct, isPunct, isStr, isUnicodeRange, isURL, isWhitespace, length, subSequence, toString
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
-
-
-
Field Detail
-
serialVersionUID
protected static final long serialVersionUID
This fulfils the SerialVersion UID requirement for all classes that implement Java'sinterface java.io.Serializable. Using theSerializableImplementation offered by java is very easy, and can make saving program state when debugging a lot easier. It can also be used in place of more complicated systems like "hibernate" to store data as well.- See Also:
- Constant Field Values
- Code:
- Exact Field Declaration Expression:
protected static final long serialVersionUID = 1;
-
-
Method Detail
-
isComment
public final boolean isComment()
Description copied from class:CSSTokenLoop Optimization: This method only returnsTRUEif this is an actual instance ofComment.- Overrides:
isCommentin classCSSToken- Returns:
- This method returns
FALSEfor all instances ofCSSToken, except when'this'instance is actually theCommentSubclass.
That class has overridden this method, and returnsTRUE. - See Also:
isComment()
-
ifComment
public final Comment ifComment()
Description copied from class:CSSTokenLoop Optimization: When this method is invoked on an instance of sub-classCommentthis method produces'this'instance.- Overrides:
ifCommentin classCSSToken- Returns:
- This method shall return
null, always, except when'this'is an actual instance ofComment. When so, this method simply returns'this'. All other sub-classes of (abstract) classCSSTokeninherit this method, and therefore return null. - See Also:
ifComment()
-
build
public static Comment build(java.lang.String commentStr)
Static-Builder Method for creating an instance of this class. This Static-Method is a substitute for an actual Constructor. Because many of the'consume(...)'methods in the Token Classe forTorello.CSSactually generate / spit-out more thanCSSTokeninstance, writing publicly available constructors is largely impossible.
The upside to this approach is that thebuildmethods and theconsumemethods share identical code. Furthermore this code is (nearly) perfectly based on the Pseudo-Code on the CSS Working-Group Website.- Parameters:
commentStr- Any Java-Stringthat can be parsed into an instance ofComment- Returns:
- An instance of
Comment.
If the contents of the Input-Stringparameter'commentStr'cannot be consumed, exactly, by this class''consume'method, then an exception shall throw. - Throws:
TokenizeException- This exception may be thrown for any number of reasons involving the inability to parse input parameter'commentStr'.
-
is
public static boolean is(int[] css, int sPos)
Checks whether or not the next token to consume is a CommentTokenizer: Comment Check Method, Pseudo-Code
Making use of the CSS Parser DOES NOT require any knowledge of how the underlying Pass 1 Tokenizer actually works. Below is the CSS Working Group's Comment Rail-Road Diagram. It is here for informational purposes.
These Parsing Pseudo-Code Instructions and Rail-Road Diagrams have been copied, verbatim, from the CSS-Working-Group Web-Site:
https://drafts.csswg.org/css-syntax/#comment-diagram
- comment
- Parameters:
css- CSS-Stringas an array of code-points.sPos- The array-index where the tokenizer is to consume its next token- Returns:
TRUEif and only if the next token in the array is a comment
-
consume
protected static void consume (int[] css, ByRef<java.lang.Integer> POS, java.util.function.Consumer<CSSToken> returnParsedToken, java.util.function.Consumer<TokenizeError> errorEncountered)
This is a tokenizer method which "consumes" the next Comment-Token from the input Code-Point Array.Tokenizer: Comment Consume Method, Pseudo-Code
Making use of the CSS Parser DOES NOT require any knowledge of how the underlying Pass 1 Tokenizer actually works.
Below is the CSS Working Group's Comment Pseudo-Code. You may review it if you are at wit's end, and have nothing better to do. There is no need to actually invoke this method yourself, it is here solely so that users may understand how the Tokenization-Stage operates.
These Parsing Pseudo-Code Instructions and Rail-Road Diagrams have been copied, verbatim, from the CSS-Working-Group Web-Site:
https://drafts.csswg.org/css-syntax/#consume-comment
Consume comments
This section describes how to consume comments from a stream of code points. It returns nothing.
If the next two input code point are U+002F SOLIDUS (/) followed by a U+002A ASTERISK (*), consume them and all following code points up to and including the first U+002A ASTERISK (*) followed by a U+002F SOLIDUS (/), or up to an EOF code point. Return to the start of this step.
If the preceding paragraph ended by consuming an EOF code point, this is a parse error.
Return nothing.
-
-