mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Web Symbols: refactor DisablementRules and EnablementRules to interfaces and introduce builders.
GitOrigin-RevId: bc2d0b920960dbd8082644a03f7faf7f2dd39b41
This commit is contained in:
committed by
intellij-monorepo-bot
parent
419a9628ee
commit
cd58b46aef
@@ -432,38 +432,46 @@
|
||||
*:com.intellij.webSymbols.context.WebSymbolsContextKindRules
|
||||
- *sf:Companion:com.intellij.webSymbols.context.WebSymbolsContextKindRules$Companion
|
||||
- s:create(java.util.Map,java.util.Map):com.intellij.webSymbols.context.WebSymbolsContextKindRules
|
||||
- s:create(kotlin.jvm.functions.Function1):com.intellij.webSymbols.context.WebSymbolsContextKindRules
|
||||
- s:createDisablementRules(kotlin.jvm.functions.Function1):com.intellij.webSymbols.context.WebSymbolsContextKindRules$DisablementRules
|
||||
- s:createEnablementRules(kotlin.jvm.functions.Function1):com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRules
|
||||
- s:disablementRulesBuilder():com.intellij.webSymbols.context.WebSymbolsContextKindRules$DisablementRulesBuilder
|
||||
- s:enablementRulesBuilder():com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRulesBuilder
|
||||
- a:getDisable():java.util.Map
|
||||
- a:getEnable():java.util.Map
|
||||
*:com.intellij.webSymbols.context.WebSymbolsContextKindRules$Builder
|
||||
- a:contextName(java.lang.String,kotlin.jvm.functions.Function1):V
|
||||
*f:com.intellij.webSymbols.context.WebSymbolsContextKindRules$Companion
|
||||
- f:create(java.util.Map,java.util.Map):com.intellij.webSymbols.context.WebSymbolsContextKindRules
|
||||
*f:com.intellij.webSymbols.context.WebSymbolsContextKindRules$DisablementRules
|
||||
- <init>(java.util.List,java.util.List):V
|
||||
- f:component1():java.util.List
|
||||
- f:component2():java.util.List
|
||||
- f:copy(java.util.List,java.util.List):com.intellij.webSymbols.context.WebSymbolsContextKindRules$DisablementRules
|
||||
- bs:copy$default(com.intellij.webSymbols.context.WebSymbolsContextKindRules$DisablementRules,java.util.List,java.util.List,I,java.lang.Object):com.intellij.webSymbols.context.WebSymbolsContextKindRules$DisablementRules
|
||||
- equals(java.lang.Object):Z
|
||||
- f:getFileExtensions():java.util.List
|
||||
- f:getFileNamePatterns():java.util.List
|
||||
- hashCode():I
|
||||
- toString():java.lang.String
|
||||
*f:com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRules
|
||||
- <init>(java.util.Map,java.util.List,java.util.List,java.util.List,java.util.List):V
|
||||
- f:component1():java.util.Map
|
||||
- f:component2():java.util.List
|
||||
- f:component3():java.util.List
|
||||
- f:component4():java.util.List
|
||||
- f:component5():java.util.List
|
||||
- f:copy(java.util.Map,java.util.List,java.util.List,java.util.List,java.util.List):com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRules
|
||||
- bs:copy$default(com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRules,java.util.Map,java.util.List,java.util.List,java.util.List,java.util.List,I,java.lang.Object):com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRules
|
||||
- equals(java.lang.Object):Z
|
||||
- f:getFileExtensions():java.util.List
|
||||
- f:getFileNamePatterns():java.util.List
|
||||
- f:getIdeLibraries():java.util.List
|
||||
- f:getPkgManagerDependencies():java.util.Map
|
||||
- f:getProjectToolExecutables():java.util.List
|
||||
- hashCode():I
|
||||
- toString():java.lang.String
|
||||
- f:create(kotlin.jvm.functions.Function1):com.intellij.webSymbols.context.WebSymbolsContextKindRules
|
||||
- f:createDisablementRules(kotlin.jvm.functions.Function1):com.intellij.webSymbols.context.WebSymbolsContextKindRules$DisablementRules
|
||||
- f:createEnablementRules(kotlin.jvm.functions.Function1):com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRules
|
||||
- f:disablementRulesBuilder():com.intellij.webSymbols.context.WebSymbolsContextKindRules$DisablementRulesBuilder
|
||||
- f:enablementRulesBuilder():com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRulesBuilder
|
||||
*:com.intellij.webSymbols.context.WebSymbolsContextKindRules$ContextKindBuilder
|
||||
- a:disableWhen(kotlin.jvm.functions.Function1):V
|
||||
- a:enabledWhen(kotlin.jvm.functions.Function1):V
|
||||
*:com.intellij.webSymbols.context.WebSymbolsContextKindRules$DisablementRules
|
||||
- a:getFileExtensions():java.util.List
|
||||
- a:getFileNamePatterns():java.util.List
|
||||
*:com.intellij.webSymbols.context.WebSymbolsContextKindRules$DisablementRulesBuilder
|
||||
- a:build():com.intellij.webSymbols.context.WebSymbolsContextKindRules$DisablementRules
|
||||
- a:fileExtensions(java.util.List):com.intellij.webSymbols.context.WebSymbolsContextKindRules$DisablementRulesBuilder
|
||||
- a:fileNamePatterns(java.util.List):com.intellij.webSymbols.context.WebSymbolsContextKindRules$DisablementRulesBuilder
|
||||
*:com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRules
|
||||
- a:getFileExtensions():java.util.List
|
||||
- a:getFileNamePatterns():java.util.List
|
||||
- a:getIdeLibraries():java.util.List
|
||||
- a:getPkgManagerDependencies():java.util.Map
|
||||
- a:getProjectToolExecutables():java.util.List
|
||||
*:com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRulesBuilder
|
||||
- a:build():com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRules
|
||||
- a:fileExtensions(java.util.List):com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRulesBuilder
|
||||
- a:fileNamePatterns(java.util.List):com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRulesBuilder
|
||||
- a:ideLibraries(java.util.List):com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRulesBuilder
|
||||
- a:pkgManagerDependencies(java.lang.String,java.util.List):com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRulesBuilder
|
||||
- a:pkgManagerDependencies(java.util.Map):com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRulesBuilder
|
||||
- a:projectToolExecutables(java.util.List):com.intellij.webSymbols.context.WebSymbolsContextKindRules$EnablementRulesBuilder
|
||||
*:com.intellij.webSymbols.context.WebSymbolsContextProvider
|
||||
- isEnabled(com.intellij.openapi.project.Project,com.intellij.openapi.vfs.VirtualFile):com.intellij.psi.util.CachedValueProvider$Result
|
||||
- isEnabled(com.intellij.openapi.vfs.VirtualFile,com.intellij.openapi.project.Project):Z
|
||||
|
||||
+64
-7
@@ -2,21 +2,58 @@
|
||||
package com.intellij.webSymbols.context
|
||||
|
||||
import com.intellij.webSymbols.ContextName
|
||||
import com.intellij.webSymbols.context.impl.WebSymbolsContextKindRulesBuilderImpl
|
||||
import com.intellij.webSymbols.context.impl.WebSymbolsContextKindRulesImpl
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
interface WebSymbolsContextKindRules {
|
||||
|
||||
val enable: Map<ContextName, List<EnablementRules>>
|
||||
val disable: Map<ContextName, List<DisablementRules>>
|
||||
|
||||
data class DisablementRules(val fileExtensions: List<String>,
|
||||
val fileNamePatterns: List<Regex>)
|
||||
@ApiStatus.NonExtendable
|
||||
interface DisablementRules {
|
||||
val fileExtensions: List<String>
|
||||
val fileNamePatterns: List<Regex>
|
||||
}
|
||||
|
||||
data class EnablementRules(val pkgManagerDependencies: Map<String, List<String>>,
|
||||
val projectToolExecutables: List<String>,
|
||||
val fileExtensions: List<String>,
|
||||
val ideLibraries: List<String>,
|
||||
val fileNamePatterns: List<Regex>)
|
||||
@ApiStatus.NonExtendable
|
||||
interface EnablementRules {
|
||||
val pkgManagerDependencies: Map<String, List<String>>
|
||||
val projectToolExecutables: List<String>
|
||||
val fileExtensions: List<String>
|
||||
val ideLibraries: List<String>
|
||||
val fileNamePatterns: List<Regex>
|
||||
}
|
||||
|
||||
@ApiStatus.NonExtendable
|
||||
interface Builder {
|
||||
fun contextName(name: ContextName, builder: ContextKindBuilder.() -> Unit)
|
||||
}
|
||||
|
||||
@ApiStatus.NonExtendable
|
||||
interface ContextKindBuilder {
|
||||
fun enabledWhen(builder: EnablementRulesBuilder.() -> Unit)
|
||||
fun disableWhen(builder: DisablementRulesBuilder.() -> Unit)
|
||||
}
|
||||
|
||||
@ApiStatus.NonExtendable
|
||||
interface DisablementRulesBuilder {
|
||||
fun fileExtensions(fileExtensions: List<String>): DisablementRulesBuilder
|
||||
fun fileNamePatterns(filenamePatterns: List<Regex>): DisablementRulesBuilder
|
||||
fun build(): DisablementRules
|
||||
}
|
||||
|
||||
@ApiStatus.NonExtendable
|
||||
interface EnablementRulesBuilder {
|
||||
fun fileExtensions(fileExtensions: List<String>): EnablementRulesBuilder
|
||||
fun fileNamePatterns(filenamePatterns: List<Regex>): EnablementRulesBuilder
|
||||
fun ideLibraries(ideLibraries: List<String>): EnablementRulesBuilder
|
||||
fun projectToolExecutables(projectToolExecutables: List<String>): EnablementRulesBuilder
|
||||
fun pkgManagerDependencies(packageManager: String, dependencies: List<String>): EnablementRulesBuilder
|
||||
fun pkgManagerDependencies(dependencies: Map<String, List<String>>): EnablementRulesBuilder
|
||||
fun build(): EnablementRules
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -25,6 +62,26 @@ interface WebSymbolsContextKindRules {
|
||||
disable: Map<ContextName, List<DisablementRules>>): WebSymbolsContextKindRules =
|
||||
WebSymbolsContextKindRulesImpl(enable, disable)
|
||||
|
||||
|
||||
@JvmStatic
|
||||
fun create(builder: Builder.() -> Unit): WebSymbolsContextKindRules =
|
||||
WebSymbolsContextKindRulesBuilderImpl().apply(builder).build()
|
||||
|
||||
@JvmStatic
|
||||
fun createEnablementRules(builder: EnablementRulesBuilder.() -> Unit): EnablementRules =
|
||||
WebSymbolsContextKindRulesBuilderImpl.EnablementRulesBuilderImpl().apply(builder).build()
|
||||
|
||||
@JvmStatic
|
||||
fun createDisablementRules(builder: DisablementRulesBuilder.() -> Unit): DisablementRules =
|
||||
WebSymbolsContextKindRulesBuilderImpl.DisablementRulesBuilderImpl().apply(builder).build()
|
||||
|
||||
@JvmStatic
|
||||
fun enablementRulesBuilder(): EnablementRulesBuilder =
|
||||
WebSymbolsContextKindRulesBuilderImpl.EnablementRulesBuilderImpl()
|
||||
|
||||
@JvmStatic
|
||||
fun disablementRulesBuilder(): DisablementRulesBuilder =
|
||||
WebSymbolsContextKindRulesBuilderImpl.DisablementRulesBuilderImpl()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.webSymbols.context.impl
|
||||
|
||||
import com.intellij.util.SmartList
|
||||
import com.intellij.webSymbols.ContextName
|
||||
import com.intellij.webSymbols.context.WebSymbolsContextKindRules
|
||||
import java.util.Collections.unmodifiableList
|
||||
|
||||
class WebSymbolsContextKindRulesBuilderImpl : WebSymbolsContextKindRules.Builder {
|
||||
|
||||
private val contextNames = mutableMapOf<ContextName, ContextKindBuilderImpl>()
|
||||
|
||||
override fun contextName(name: ContextName, builder: WebSymbolsContextKindRules.ContextKindBuilder.() -> Unit) {
|
||||
contextNames.computeIfAbsent(name) { ContextKindBuilderImpl() }.apply(builder)
|
||||
}
|
||||
|
||||
fun build(): WebSymbolsContextKindRules =
|
||||
WebSymbolsContextKindRulesImpl(
|
||||
contextNames.mapValues { listOf(it.value.enableWhen.build()) },
|
||||
contextNames.mapValues { listOf(it.value.disableWhen.build()) },
|
||||
)
|
||||
|
||||
private class ContextKindBuilderImpl : WebSymbolsContextKindRules.ContextKindBuilder {
|
||||
val enableWhen = EnablementRulesBuilderImpl()
|
||||
val disableWhen = DisablementRulesBuilderImpl()
|
||||
|
||||
override fun enabledWhen(builder: WebSymbolsContextKindRules.EnablementRulesBuilder.() -> Unit) {
|
||||
enableWhen.apply(builder)
|
||||
}
|
||||
|
||||
override fun disableWhen(builder: WebSymbolsContextKindRules.DisablementRulesBuilder.() -> Unit) {
|
||||
disableWhen.apply(builder)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class EnablementRulesBuilderImpl : WebSymbolsContextKindRules.EnablementRulesBuilder {
|
||||
private val fileExtensions = SmartList<String>()
|
||||
private val fileNamePatterns = SmartList<Regex>()
|
||||
private val ideLibraries = SmartList<String>()
|
||||
private val projectToolExecutables = SmartList<String>()
|
||||
private val pkgManagerDependencies = HashMap<String, MutableList<String>>()
|
||||
|
||||
override fun fileExtensions(fileExtensions: List<String>): WebSymbolsContextKindRules.EnablementRulesBuilder = apply {
|
||||
this.fileExtensions.addAll(fileExtensions)
|
||||
}
|
||||
|
||||
override fun fileNamePatterns(filenamePatterns: List<Regex>): WebSymbolsContextKindRules.EnablementRulesBuilder = apply {
|
||||
this.fileNamePatterns.addAll(filenamePatterns)
|
||||
}
|
||||
|
||||
override fun ideLibraries(ideLibraries: List<String>): WebSymbolsContextKindRules.EnablementRulesBuilder = apply {
|
||||
this.ideLibraries.addAll(ideLibraries)
|
||||
}
|
||||
|
||||
override fun projectToolExecutables(projectToolExecutables: List<String>): WebSymbolsContextKindRules.EnablementRulesBuilder = apply {
|
||||
this.projectToolExecutables.addAll(projectToolExecutables)
|
||||
}
|
||||
|
||||
override fun pkgManagerDependencies(packageManager: String, dependencies: List<String>): WebSymbolsContextKindRules.EnablementRulesBuilder = apply {
|
||||
pkgManagerDependencies.computeIfAbsent(packageManager) { SmartList() }.addAll(dependencies)
|
||||
}
|
||||
|
||||
override fun pkgManagerDependencies(dependencies: Map<String, List<String>>): WebSymbolsContextKindRules.EnablementRulesBuilder = apply {
|
||||
dependencies.forEach {
|
||||
pkgManagerDependencies(it.key, it.value)
|
||||
}
|
||||
}
|
||||
|
||||
override fun build(): WebSymbolsContextKindRules.EnablementRules = EnablementRulesData(
|
||||
pkgManagerDependencies = pkgManagerDependencies.mapValues { unmodifiableList(it.value) },
|
||||
projectToolExecutables = unmodifiableList(projectToolExecutables),
|
||||
fileExtensions = unmodifiableList(fileExtensions),
|
||||
ideLibraries = unmodifiableList(ideLibraries),
|
||||
fileNamePatterns = unmodifiableList(fileNamePatterns),
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
class DisablementRulesBuilderImpl : WebSymbolsContextKindRules.DisablementRulesBuilder {
|
||||
private val fileExtensions = SmartList<String>()
|
||||
private val fileNamePatterns = SmartList<Regex>()
|
||||
|
||||
override fun fileExtensions(fileExtensions: List<String>): WebSymbolsContextKindRules.DisablementRulesBuilder = apply {
|
||||
this.fileExtensions.addAll(fileExtensions)
|
||||
}
|
||||
|
||||
override fun fileNamePatterns(filenamePatterns: List<Regex>): WebSymbolsContextKindRules.DisablementRulesBuilder = apply {
|
||||
this.fileNamePatterns.addAll(filenamePatterns)
|
||||
}
|
||||
|
||||
override fun build(): WebSymbolsContextKindRules.DisablementRules = DisablementRulesData(
|
||||
fileExtensions = unmodifiableList(fileExtensions),
|
||||
fileNamePatterns = unmodifiableList(fileNamePatterns),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private data class EnablementRulesData(
|
||||
override val pkgManagerDependencies: Map<String, List<String>>,
|
||||
override val projectToolExecutables: List<String>,
|
||||
override val fileExtensions: List<String>,
|
||||
override val ideLibraries: List<String>,
|
||||
override val fileNamePatterns: List<Regex>
|
||||
) : WebSymbolsContextKindRules.EnablementRules
|
||||
|
||||
private data class DisablementRulesData(
|
||||
override val fileExtensions: List<String>,
|
||||
override val fileNamePatterns: List<Regex>
|
||||
) : WebSymbolsContextKindRules.DisablementRules
|
||||
+13
-11
@@ -280,19 +280,21 @@ internal fun Reference.codeCompletion(name: String,
|
||||
}
|
||||
|
||||
internal fun EnablementRules.wrap(): WebSymbolsContextKindRules.EnablementRules =
|
||||
WebSymbolsContextKindRules.EnablementRules(
|
||||
mapOf(PKG_MANAGER_NODE_PACKAGES to nodePackages, PKG_MANAGER_RUBY_GEMS to rubyGems) + additionalProperties,
|
||||
projectToolExecutables,
|
||||
fileExtensions,
|
||||
ideLibraries,
|
||||
fileNamePatterns.mapNotNull { it.toRegex() }
|
||||
)
|
||||
WebSymbolsContextKindRules.createEnablementRules {
|
||||
pkgManagerDependencies(PKG_MANAGER_NODE_PACKAGES, nodePackages)
|
||||
pkgManagerDependencies(PKG_MANAGER_RUBY_GEMS, rubyGems)
|
||||
pkgManagerDependencies(additionalProperties)
|
||||
projectToolExecutables(projectToolExecutables)
|
||||
fileExtensions(fileExtensions)
|
||||
ideLibraries(ideLibraries)
|
||||
fileNamePatterns(fileNamePatterns.mapNotNull { it.toRegex() })
|
||||
}
|
||||
|
||||
internal fun DisablementRules.wrap(): WebSymbolsContextKindRules.DisablementRules =
|
||||
WebSymbolsContextKindRules.DisablementRules(
|
||||
fileExtensions,
|
||||
fileNamePatterns.mapNotNull { it.toRegex() },
|
||||
)
|
||||
WebSymbolsContextKindRules.createDisablementRules {
|
||||
fileExtensions(fileExtensions)
|
||||
fileNamePatterns(fileNamePatterns.mapNotNull { it.toRegex() })
|
||||
}
|
||||
|
||||
internal fun BaseContribution.Priority.wrap() =
|
||||
WebSymbol.Priority.values()[ordinal]
|
||||
|
||||
Reference in New Issue
Block a user