/******************************************************************************* * Copyright (c) 2001, 2004 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Jens Lukowski/Innoopract - initial renaming/restructuring * *******************************************************************************/ package org.eclipse.wst.sse.core.internal.document; /** * Collection of text functions. * * @deprecated - marked as deprecated to remind us to phase this out (and/or * move to "finished" version). */ public class TextUtilities { /** * @deprecated if possible, its best to use * IDocument.getLegalLineDelimiters() */ public final static String[] fgDelimiters = new String[]{"\n", "\r", "\r\n"};//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$ /** * Determines which one of fgDelimiters appears first in the text. If none * of them the hint is returned. */ public static String determineLineDelimiter(StringBuffer textBuffer, String[] possibles, String hint) { try { // TODO: avoid use of String instance String text = textBuffer.toString(); int[] info = indexOf(possibles, text, 0); return possibles[info[1]]; } catch (ArrayIndexOutOfBoundsException x) { } return hint; } /** * Returns the position in the string greater than offset of the longest * matching search string. */ private static int[] indexOf(String[] searchStrings, String text, int offset) { int[] result = {-1, -1}; for (int i = 0; i < searchStrings.length; i++) { int index = text.indexOf(searchStrings[i], offset); if (index >= 0) { if (result[0] == -1) { result[0] = index; result[1] = i; } else if (index < result[0]) { result[0] = index; result[1] = i; } else if (index == result[0] && searchStrings[i].length() > searchStrings[result[1]].length()) { result[0] = index; result[1] = i; } } } return result; } }