PageRenderTime 78ms CodeModel.GetById 24ms RepoModel.GetById 1ms app.codeStats 0ms

/jEdit/tags/jedit-4-0-pre5/gnu/regexp/RETokenEnd.java

#
Java | 55 lines | 29 code | 5 blank | 21 comment | 7 complexity | 0d02cd0172eb6ebbfc2ca894647b2cdc 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. /*
  2. * gnu/regexp/RETokenEnd.java
  3. * Copyright (C) 1998-2001 Wes Biggs
  4. *
  5. * This library is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU Lesser General Public License as published
  7. * by the Free Software Foundation; either version 2.1 of the License, or
  8. * (at your option) any later version.
  9. *
  10. * This library is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU Lesser General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU Lesser General Public License
  16. * along with this program; if not, write to the Free Software
  17. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18. */
  19. package gnu.regexp;
  20. final class RETokenEnd extends REToken {
  21. /**
  22. * Indicates whether this token should match on a line break.
  23. */
  24. private String newline;
  25. RETokenEnd(int subIndex,String newline) {
  26. super(subIndex);
  27. this.newline = newline;
  28. }
  29. boolean match(CharIndexed input, REMatch mymatch) {
  30. char ch = input.charAt(mymatch.index);
  31. if (ch == CharIndexed.OUT_OF_BOUNDS)
  32. return ((mymatch.eflags & RE.REG_NOTEOL)>0) ?
  33. false : next(input, mymatch);
  34. if (newline != null) {
  35. char z;
  36. int i = 0; // position in newline
  37. do {
  38. z = newline.charAt(i);
  39. if (ch != z) return false;
  40. ++i;
  41. ch = input.charAt(mymatch.index + i);
  42. } while (i < newline.length());
  43. return next(input, mymatch);
  44. }
  45. return false;
  46. }
  47. void dump(StringBuffer os) {
  48. os.append('$');
  49. }
  50. }