PageRenderTime 46ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/bundles/plugins-trunk/RubyPlugin/src/org/jedit/ruby/structure/RubyToken.java

#
Java | 89 lines | 71 code | 15 blank | 3 comment | 24 complexity | ef2d1bab3baecab8939d6269d16fd62c MD5 | raw file
Possible License(s): BSD-3-Clause, AGPL-1.0, Apache-2.0, LGPL-2.0, LGPL-3.0, GPL-2.0, CC-BY-SA-3.0, LGPL-2.1, GPL-3.0, MPL-2.0-no-copyleft-exception, IPL-1.0
  1. package org.jedit.ruby.structure;
  2. import org.gjt.sp.jedit.syntax.Token;
  3. /**
  4. * @author robmckinnon at users,sourceforge,net
  5. */
  6. public final class RubyToken extends Token {
  7. private final Token firstToken;
  8. private RubyToken previousToken;
  9. private RubyToken nextToken;
  10. public RubyToken(Token token, Token firstToken) {
  11. super(token.id, token.offset, token.length, token.rules);
  12. this.next = token.next;
  13. this.firstToken = firstToken;
  14. }
  15. public final RubyToken getPreviousToken() {
  16. if (previousToken == null) {
  17. Token token = firstToken;
  18. Token previous = null;
  19. while (token != null && token.next != null) {
  20. if (isEqual(token.next)) {
  21. previous = token;
  22. break;
  23. }
  24. token = token.next;
  25. }
  26. previousToken = previous == null ? null : new RubyToken(previous, firstToken);
  27. }
  28. return previousToken;
  29. }
  30. public final RubyToken getNextToken() {
  31. if (nextToken == null) {
  32. nextToken = next == null ? null : new RubyToken(next, firstToken);
  33. }
  34. return nextToken;
  35. }
  36. public final boolean isNextLiteral() {
  37. return getNextToken() != null && getNextToken().isLiteral();
  38. }
  39. public final boolean isPreviousLiteral() {
  40. return getPreviousToken() != null && getPreviousToken().isLiteral();
  41. }
  42. public final boolean isOperator() {
  43. return id == Token.OPERATOR;
  44. }
  45. public final boolean isLiteral() {
  46. switch (id) {
  47. case Token.LITERAL1:
  48. case Token.LITERAL2:
  49. case Token.LITERAL3:
  50. case Token.LITERAL4:
  51. return true;
  52. default:
  53. return false;
  54. }
  55. }
  56. public final boolean isComment() {
  57. switch(id) {
  58. case Token.COMMENT1:
  59. case Token.COMMENT2:
  60. case Token.COMMENT3:
  61. case Token.COMMENT4:
  62. return true;
  63. default:
  64. return false;
  65. }
  66. }
  67. public final String toString() {
  68. String id = this.id < Token.TOKEN_TYPES.length ? Token.TOKEN_TYPES[this.id] : String.valueOf(this.id);
  69. return id + '['+offset+','+(offset+length)+']';
  70. }
  71. private boolean isEqual(Token token) {
  72. return token != null && token.id == id && token.offset == offset && token.length == length;
  73. }
  74. }