Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenquotes.git

Remove superfluous calls to get index

AuthorDave Jarvis <email>
Date2022-08-13 17:00:58 GMT-0700
Commit886ac2fd91553299ed26252e463c96779df36acd
Parenta511db7
src/main/java/com/whitemagicsoftware/keenquotes/FastCharacterIterator.java
/**
- * Returns the total number of characters in the string to iterate.
- *
- * @return The string length.
- */
- public int length() {
- return mLen;
- }
-
- /**
* Returns the iterated index. The return value is not guaranteed to be
* within the string bounds.
final var pos = mPos;
return pos + 1 < mLen ? mS.charAt( pos + 1 ) : DONE;
+ }
+
+ /**
+ * Answers whether {@link #next()} followed by {@link #current()} is safe.
+ *
+ * @return {@code true} if there are more characters to be iterated.
+ */
+ public boolean hasNext() {
+ return mPos < mLen;
}
src/main/java/com/whitemagicsoftware/keenquotes/Lexer.java
final Consumer<Lexeme> emitter,
final Consumer<FastCharacterIterator> filter ) {
- var index = i.index();
- var length = i.length();
- var curr = ' ';
- while( index < length ) {
+ while( i.hasNext() ) {
// Allow filters to skip character sequences (such as XML tags).
filter.accept( i );
-
- index = i.index();
- curr = i.current();
+ final var index = i.index();
+ final var curr = i.current();
var token = PUNCT;
}
else if( curr == '.' ) {
- final var start = i.index();
-
i.skip( next -> next == '.' || next == ' ' && i.peek() == '.' );
- token = i.index() - start == 0 ? PERIOD : ELLIPSIS;
+ token = i.index() - index == 0 ? PERIOD : ELLIPSIS;
}
else if( curr == '"' ) {
emitter.accept( new Lexeme( token, index, i.index() + 1 ) );
i.next();
- index = i.index();
}
}
src/main/java/com/whitemagicsoftware/keenquotes/Token.java
final class Token implements Comparable<Token> {
private final TokenType mType;
- final int mBegan;
- final int mEnded;
+ private final int mBegan;
+ private final int mEnded;
/**
Delta15 lines added, 22 lines removed, 7-line decrease