/** * @return an identical copy of this caret, identical to calling the copy constructor. */ public Caret copy() { return new Caret(this); }
caret.walkAfterWhitespaces(); int argumentsBegin = caret.getOffset(); if (caret.endReached()) { caret.goTo(argumentsBegin); return false; } else if (caret.startsWithCheckCase("/") || caret.startsWithCheckCase("?") || caret.startsWithCheckCase(">")) { break; } else if (caret.startsWithCheckCase("\'")) { caret.goN(1); caret.walkAfterCharCheckCase('\''); } else if (caret.startsWithCheckCase("\"")) { caret.goN(1); caret.walkAfterCharCheckCase('\"'); } else { caret.goN(1); caret.goN(-1); // walk back before '/' or '>' caret.walkBackBeforeWhitespaces(); int argumentsEnd = Math.max(argumentsBegin, caret.getOffset() + 1); if ((parsedTokenType == Token.END_TAG) && (argumentsEnd > argumentsBegin)) { caret.goN(1); status = Status.SCAN_FOR_CLOSING_BRACE;
if (caret.wayToEnd() < 2) { return false; if (caret.startsWithCheckCase("!-")) { if (caret.wayToEnd() < 3) { return false; if (caret.startsWithCheckCase("!--") && (parsedTokenType != Token.END_TAG)) { caret.goN("!--".length()); parsedTokenType = Token.COMMENT; status = Status.SCAN_FOR_COMMENT_END; int begin = caret.getOffset(); if ((caret.get(0) == '!') || (caret.get(0) == '?')) { caret.goN(1); char c = caret.get(0); if (((c >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z'))) { caret.goN(1); if (caret.endReached()) { caret.goTo(begin); return false; int end = caret.getOffset(); if (begin == end) {
/** * Walks forward with the caret until it points at a position which matches the given string. * Case-Insensitive comparison is used. * * @param strToMatch * the string to match * @return true if the string was found, false if the end of the string was reached while * searching */ public boolean walkToMatchIgnoreCase(String strToMatch) { while (!endReached() && !startsWithIgnoreCase(strToMatch)) { offset++; } return !endReached(); }
/** * Walks forward with the caret until it points at a position which matches the given string. * Case-sensitive comparison is used. * * @param strToMatch * the string to match * @return true if the string was found, false if the end of the string was reached while * searching */ public boolean walkToMatchCheckCase(String strToMatch) { while (!endReached() && !startsWithCheckCase(strToMatch)) { offset++; } return !endReached(); }
/** * Tries to scan for the end of a comment denoted by the "-->" sequence. * * @return false, if the parsing could not be completed because the end of the HTML source was * reached. True otherwise. */ private boolean scanForCommentEnd() { int pos = caret.getOffset(); if (caret.walkAfterMatchCheckCase("-->")) { status = Status.COMPLETE; return true; } else { caret.goTo(pos); return false; } }
/** * Tries to scan for an opening brace after skipping all preceding whitespace characters. A * correct opening brace is either "<" or "</". * * @return false, if the parsing could not be completed because the end of the HTML source was * reached. True otherwise. */ private boolean scanForOpeningBrace() { caret.walkAfterWhitespaces(); if (caret.wayToEnd() >= 2) { if (caret.startsWithCheckCase("</")) { caret.goN(2); parsedTokenType = Token.END_TAG; status = Status.SCAN_TAG_TYPE; } else if (caret.startsWithCheckCase("<")) { caret.goN(1); parsedTokenType = Token.START_TAG; status = Status.SCAN_TAG_TYPE; } else { status = Status.UNPARSEABLE; } return true; } else { return false; } }
@Test public void test() { String test = " ABCDEFGH\t\r \nabcdefg"; Caret c = new Caret(test); c.walkToCharCheckCase('A'); c.walkBackBeforeWhitespaces(); assertThat(c.get(0), equalTo('A')); c.goN(-1); c.walkBackBeforeWhitespaces(); assertThat(c.getOffset(), equalTo(0)); c.walkToCharCheckCase('a'); c.goN(-1); c.walkBackBeforeWhitespaces(); assertThat(c.get(0), equalTo('H')); } }
@Test public void test() { String test = " ABCDEFGH\t\r \nabcdefg "; Caret c = new Caret(test); c.walkAfterWhitespaces(); assertThat(c.get(0), equalTo('A')); c.walkAfterWhitespaces(); assertThat(c.get(0), equalTo('A')); c.walkAfterCharCheckCase('H'); c.walkAfterWhitespaces(); assertThat(c.get(0), equalTo('a')); c.walkAfterCharCheckCase('g'); c.walkAfterWhitespaces(); assertThat(c.endReached(), equalTo(true)); } }
@Test public void test() { String test = " ABCDEFGH\t\r\nabcdefg"; Caret c = new Caret(test); assertThat(c.walkAfterCharCheckCase('C'), equalTo(true)); assertThat(c.get(0), equalTo('D')); c.goTo(0); assertThat(c.walkAfterCharCheckCase('c'), equalTo(true)); assertThat(c.get(0), equalTo('d')); c.goTo(0); assertThat(c.walkAfterCharCheckCase('z'), equalTo(false)); assertThat(c.endReached(), equalTo(true)); } }
@Test public void test() { String test = " ABCDEFGH\t\r\nabcdefg"; Caret c = new Caret(test); assertThat(c.walkToCharCheckCase('C'), equalTo(true)); assertThat(c.get(0), equalTo('C')); c.goTo(0); assertThat(c.walkToCharCheckCase('c'), equalTo(true)); assertThat(c.get(0), equalTo('c')); c.goTo(0); assertThat(c.walkToCharCheckCase('z'), equalTo(false)); assertThat(c.endReached(), equalTo(true)); } }
@Test public void test() { String test = " ABCDEFGH\t\r\nabcdefgh"; Caret c = new Caret(test, 0); assertThat(c.walkAfterMatchCheckCase("cdefg"), equalTo(true)); assertThat(c.get(0), equalTo('h')); c.goN(1); assertThat(c.walkAfterMatchCheckCase("cdefg"), equalTo(false)); } }
@Test public void test() { String test = " ABCDEFGH\t\r\nabcdefgh"; Caret c = new Caret(test, 0); assertThat(c.walkToMatchCheckCase("cdefg"), equalTo(true)); assertThat(c.get(0), equalTo('c')); c.goN(1); assertThat(c.walkToMatchCheckCase("cdefg"), equalTo(false)); } }
@Test public void test() { String test = " ABCDEFGH\t\r\nabcdefgh"; Caret c = new Caret(test, 0); assertThat(c.walkToMatchIgnoreCase("cdefg"), equalTo(true)); assertThat(c.get(0), equalTo('C')); c.goN(1); assertThat(c.walkToMatchIgnoreCase("cdefg"), equalTo(true)); assertThat(c.get(0), equalTo('c')); c.goN(1); assertThat(c.walkToMatchIgnoreCase("cdefg"), equalTo(false)); } }
@Test public void test() { String test = " ABCDEFGH\t\r\nabcdefgh"; Caret c = new Caret(test, 0); assertThat(c.walkAfterMatchIgnoreCase("cdefg"), equalTo(true)); assertThat(c.get(0), equalTo('H')); assertThat(c.walkAfterMatchIgnoreCase("cdefg"), equalTo(true)); assertThat(c.get(0), equalTo('h')); c.goN(1); assertThat(c.walkAfterMatchIgnoreCase("cdefg"), equalTo(false)); } }
@Test public void test() { String test = "0123456789"; Caret c1 = new Caret(test); assertThat(c1.get(0), equalTo('0')); assertThat(c1.get(3), equalTo('3')); Caret c2 = new Caret(test, 5); assertThat(c2.get(1), equalTo('6')); Caret c3 = c2.copy(); assertThat(c3.get(2), equalTo('7')); c3.goN(2); assertThat(c2.get(1), equalTo('6')); } }
@Test public void test() { String test = "ABCDEFGH\t\r \nabcdefg h"; Caret c = new Caret(test); c.walkToWhitespace(); assertThat(c.get(0), equalTo('\t')); c.walkToWhitespace(); assertThat(c.get(0), equalTo('\t')); c.goN(1); c.walkToWhitespace(); assertThat(c.get(0), equalTo('\r')); c.goN(4); c.walkToWhitespace(); assertThat(c.get(0), equalTo(' ')); c.goN(2); assertThat(c.walkToWhitespace(), equalTo(false)); } }