blob: b537f5374c53cce5d0c677d81ac8c4d2eebdc143 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2018 NumberFour AG 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:
* NumberFour AG - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.ui.text.spelling;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITypedRegion;
public class SpellCheckDelegate {
public SpellCheckDelegate() {
this(IDocument.DEFAULT_CONTENT_TYPE);
}
public SpellCheckDelegate(String... contentTypes) {
for (String contentType : contentTypes) {
ignoredContentTypes.add(contentType);
}
}
private final Set<String> ignoredContentTypes = new HashSet<>();
/**
* returns the (sub-)regions to be checked in the specified partition or
* <code>null</code> if partition shouldn't be checked at all.
*
* @param partition
* @return
*/
public IRegion[] computeRegions(ITypedRegion partition) {
if (ignoredContentTypes.contains(partition.getType())) {
return null;
}
return asArray(partition);
}
/**
* Returns the specified region as array of the length 1
*
* @param region
* @return
*/
protected final IRegion[] asArray(IRegion region) {
fRegions[0] = region;
return fRegions;
}
/**
* Region array, used to prevent us from creating a new array on each
* reconcile pass.
*/
private final IRegion[] fRegions = new IRegion[1];
}