| /******************************************************************************* |
| * Copyright (c) 2010, 2011 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 |
| ******************************************************************************/ |
| package org.eclipse.equinox.bidi.internal; |
| |
| import org.eclipse.equinox.bidi.advanced.IStructuredTextExpert; |
| import org.eclipse.equinox.bidi.custom.*; |
| |
| /** |
| * A base handler for structured text composed of two parts separated by a separator. |
| * The first occurrence of the separator delimits the end of the first part |
| * and the start of the second part. Further occurrences of the separator, |
| * if any, are treated like regular characters of the second text part. |
| * The handler makes sure that the text be presented in the form |
| * (assuming that the equal sign is the separator): |
| * <pre> |
| * part1=part2 |
| * </pre> |
| * The string returned by {@link StructuredTextTypeHandler#getSeparators getSeparators} |
| * for this handler should contain exactly one character. |
| * Additional characters will be ignored. |
| */ |
| public class StructuredTextSingle extends StructuredTextTypeHandler { |
| |
| public StructuredTextSingle(String separator) { |
| super(separator); |
| } |
| |
| /** |
| * Locates occurrences of the separator. |
| * |
| * @see #getSeparators getSeparators |
| */ |
| @Override |
| public int indexOfSpecial(IStructuredTextExpert expert, String text, StructuredTextCharTypes charTypes, StructuredTextOffsets offsets, int caseNumber, int fromIndex) { |
| return text.indexOf(this.getSeparators(expert).charAt(0), fromIndex); |
| } |
| |
| /** |
| * Inserts a mark before the separator if needed and |
| * skips to the end of the source string. |
| * |
| * @return the length of <code>text</code>. |
| */ |
| @Override |
| public int processSpecial(IStructuredTextExpert expert, String text, StructuredTextCharTypes charTypes, StructuredTextOffsets offsets, int caseNumber, int separLocation) { |
| StructuredTextTypeHandler.processSeparator(text, charTypes, offsets, separLocation); |
| return text.length(); |
| } |
| |
| /** |
| * Returns 1 as number of special cases handled by this handler. |
| * |
| * @return 1. |
| */ |
| @Override |
| public int getSpecialsCount(IStructuredTextExpert expert) { |
| return 1; |
| } |
| |
| } |