All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.jface.text.ConfigurableLineTracker Maven / Gradle / Ivy

Go to download

AspectJ tools most notably contains the AspectJ compiler (AJC). AJC applies aspects to Java classes during compilation, fully replacing Javac for plain Java classes and also compiling native AspectJ or annotation-based @AspectJ syntax. Furthermore, AJC can weave aspects into existing class files in a post-compile binary weaving step. This library is a superset of AspectJ weaver and hence also of AspectJ runtime.

There is a newer version: 1.9.22.1
Show newest version
/*******************************************************************************
 * Copyright (c) 2000, 2019 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     Thomas Wolf - Bug 545252: improved search performance for multiple delimiters
 *******************************************************************************/
package org.eclipse.jface.text;

import org.eclipse.core.runtime.Assert;

import org.eclipse.jface.text.MultiStringMatcher.Match;


/**
 * Standard implementation of a generic
 * {@link org.eclipse.jface.text.ILineTracker}.
 * 

* The line tracker can be configured with the set of legal line delimiters. * Line delimiters are unconstrained. The line delimiters are used to compute * the tracker's line structure. In the case of overlapping line delimiters, the * longest line delimiter is given precedence of the shorter ones. *

* This class is not intended to be subclassed. *

* @noextend This class is not intended to be subclassed by clients. */ public class ConfigurableLineTracker extends AbstractLineTracker { /** The strings which are considered being the line delimiter */ private final String[] fDelimiters; /** A predefined delimiter information which is always reused as return value */ private final DelimiterInfo fDelimiterInfo= new DelimiterInfo(); /** Util to search the configured line delimiters in text. null if only one delimiter is used. */ private final MultiStringMatcher fMatcher; /** * Creates a standard line tracker for the given line delimiters. * * @param legalLineDelimiters the tracker's legal line delimiters, * may not be null and must be longer than 0 */ public ConfigurableLineTracker(String[] legalLineDelimiters) { Assert.isTrue(legalLineDelimiters != null && legalLineDelimiters.length > 0); fDelimiters= TextUtilities.copy(legalLineDelimiters); fMatcher= legalLineDelimiters.length > 1 ? MultiStringMatcher.create(legalLineDelimiters) : null; } @Override public String[] getLegalLineDelimiters() { return TextUtilities.copy(fDelimiters); } @Override protected DelimiterInfo nextDelimiterInfo(String text, int offset) { if (fMatcher != null) { Match m = fMatcher.indexOf(text, offset); if (m == null) { return null; } fDelimiterInfo.delimiterIndex= m.getOffset(); fDelimiterInfo.delimiter= m.getText(); } else { int index= text.indexOf(fDelimiters[0], offset); if (index == -1) return null; fDelimiterInfo.delimiterIndex= index; fDelimiterInfo.delimiter= fDelimiters[0]; } fDelimiterInfo.delimiterLength= fDelimiterInfo.delimiter.length(); return fDelimiterInfo; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy