mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
IDEA-320457: Move class to top level BaseFileTypeInputFilter.FileTypeStrategy > FileTypeSubstitutionStrategy
GitOrigin-RevId: 2f77cf9428129d5edd82a1e73d1afc8d661ff1f6
This commit is contained in:
committed by
intellij-monorepo-bot
parent
957abe6a71
commit
897f449714
@@ -24,7 +24,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.intellij.util.indexing.hints.BaseFileTypeInputFilter.FileTypeStrategy.BEFORE_SUBSTITUTION;
|
||||
import static com.intellij.util.indexing.hints.FileTypeSubstitutionStrategy.BEFORE_SUBSTITUTION;
|
||||
|
||||
public class JsonSchemaFileValuesIndex extends FileBasedIndexExtension<String, String> {
|
||||
public static final ID<String, String> INDEX_ID = ID.create("json.file.root.values");
|
||||
|
||||
@@ -6,7 +6,6 @@ import com.intellij.util.ThreeState
|
||||
import com.intellij.util.indexing.FileBasedIndex
|
||||
import com.intellij.util.indexing.IndexedFile
|
||||
import com.intellij.util.indexing.SubstitutedFileType
|
||||
import com.intellij.util.indexing.hints.BaseFileTypeInputFilter.FileTypeStrategy
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
/**
|
||||
@@ -16,21 +15,20 @@ import org.jetbrains.annotations.ApiStatus
|
||||
*
|
||||
* If filetype is a [SubstitutedFileType] there are two options how to invoke [acceptFileType]: with filetype before substitution as
|
||||
* an argument ([SubstitutedFileType.getOriginalFileType]), or filetype after substitution ([SubstitutedFileType.getFileType]).
|
||||
* Default behavior is to use filetype after substitution. This can be changed via [FileTypeStrategy]
|
||||
* Default behavior is to use filetype after substitution. This can be changed via [FileTypeSubstitutionStrategy]
|
||||
*
|
||||
* @see com.intellij.psi.LanguageSubstitutor
|
||||
*/
|
||||
@ApiStatus.Experimental
|
||||
abstract class BaseFileTypeInputFilter(private val fileTypeStrategy: FileTypeStrategy) : FileBasedIndex.ProjectSpecificInputFilter,
|
||||
FileTypeIndexingHint {
|
||||
enum class FileTypeStrategy { BEFORE_SUBSTITUTION, AFTER_SUBSTITUTION }
|
||||
abstract class BaseFileTypeInputFilter(private val fileTypeStrategy: FileTypeSubstitutionStrategy) : FileBasedIndex.ProjectSpecificInputFilter,
|
||||
FileTypeIndexingHint {
|
||||
|
||||
constructor() : this(FileTypeStrategy.AFTER_SUBSTITUTION)
|
||||
constructor() : this(FileTypeSubstitutionStrategy.AFTER_SUBSTITUTION)
|
||||
|
||||
final override fun hintAcceptFileType(fileType: FileType): ThreeState {
|
||||
val fileTypeToUse: FileType =
|
||||
if (fileType is SubstitutedFileType) {
|
||||
if (fileTypeStrategy == FileTypeStrategy.BEFORE_SUBSTITUTION) fileType.originalFileType else fileType.fileType
|
||||
if (fileTypeStrategy == FileTypeSubstitutionStrategy.BEFORE_SUBSTITUTION) fileType.originalFileType else fileType.fileType
|
||||
}
|
||||
else {
|
||||
fileType
|
||||
|
||||
@@ -18,7 +18,7 @@ class FileTypeInputFilterPredicate : BaseFileTypeInputFilter {
|
||||
this.predicate = predicate
|
||||
}
|
||||
|
||||
constructor(fileTypeStrategy: FileTypeStrategy, predicate: (filetype: FileType) -> Boolean) : super(fileTypeStrategy) {
|
||||
constructor(fileTypeStrategy: FileTypeSubstitutionStrategy, predicate: (filetype: FileType) -> Boolean) : super(fileTypeStrategy) {
|
||||
this.predicate = predicate
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.util.indexing.hints
|
||||
|
||||
import com.intellij.util.indexing.SubstitutedFileType
|
||||
|
||||
/**
|
||||
* [SubstitutedFileType] is an error-prone way to use filetype. Effectively it means that some file has two file types:
|
||||
* before substitution ([SubstitutedFileType.getOriginalFileType]) and after substitution ([SubstitutedFileType.getFileType]).
|
||||
*
|
||||
* Client code often does not expect that it needs to deal with some artificial [SubstitutedFileType] that is not equal to
|
||||
* any real filetype (e.g. JavaFileType). To simplify API, some classes (e.g. [BaseFileTypeInputFilter]) resolve
|
||||
* [SubstitutedFileType] to real filetype. [FileTypeSubstitutionStrategy] defines the resolution strategy.
|
||||
*/
|
||||
enum class FileTypeSubstitutionStrategy {
|
||||
BEFORE_SUBSTITUTION,
|
||||
AFTER_SUBSTITUTION
|
||||
}
|
||||
@@ -24,7 +24,7 @@ import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.intellij.util.indexing.hints.BaseFileTypeInputFilter.FileTypeStrategy.BEFORE_SUBSTITUTION;
|
||||
import static com.intellij.util.indexing.hints.FileTypeSubstitutionStrategy.BEFORE_SUBSTITUTION;
|
||||
|
||||
public class HtmlTagIdIndex extends XmlIndex<Integer> {
|
||||
public static final ID<String, Integer> INDEX = ID.create("HtmlTagIdIndex");
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static com.intellij.util.indexing.hints.BaseFileTypeInputFilter.FileTypeStrategy.BEFORE_SUBSTITUTION;
|
||||
import static com.intellij.util.indexing.hints.FileTypeSubstitutionStrategy.BEFORE_SUBSTITUTION;
|
||||
|
||||
public class PyModuleNameIndex extends ScalarIndexExtension<String> {
|
||||
public static final ID<String, Void> NAME = ID.create("Py.module.name");
|
||||
|
||||
Reference in New Issue
Block a user