2 * Svjatoslav Commons - shared library of common functionality.
3 * Copyright ©2012-2017, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of version 3 of the GNU Lesser General Public License
7 * or later as published by the Free Software Foundation.
10 package eu.svjatoslav.commons.string.tokenizer;
12 public class Terminator {
14 public final String startSequence;
15 public final String endSequence;
16 public final TerminationStrategy termination;
18 public Terminator(final String startSequence, TerminationStrategy termination) {
19 this.startSequence = startSequence;
20 this.endSequence = null;
21 this.termination = termination;
24 public Terminator(final String startSequence, final String endSequence, TerminationStrategy termination) {
25 this.startSequence = startSequence;
26 this.endSequence = endSequence;
27 this.termination = termination;
30 public boolean matches(String source, int index) {
32 if (source.length() < (index + startSequence.length()))
36 for (int i = 0; i < startSequence.length(); i++)
37 if (startSequence.charAt(i) != source.charAt(index + i))
43 public enum TerminationStrategy {
48 public boolean hasEndSequence(){
49 return endSequence != null;
53 public String toString() {
54 return "Terminator{" +
55 "startSequence='" + startSequence + '\'' +
56 ", endSequence='" + endSequence + '\'' +
57 ", termination=" + termination +