mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 06:36:56 +07:00
[images] platform.images: extract SvgParserDefinition and get rid of xml dependency
GitOrigin-RevId: 18d5caef028c77a362671a489ac4001aa2479eba
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6ae5a06f0a
commit
265737f489
1
.idea/modules.xml
generated
1
.idea/modules.xml
generated
@@ -633,6 +633,7 @@
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/ijent/intellij.platform.ijent.iml" filepath="$PROJECT_DIR$/platform/ijent/intellij.platform.ijent.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/ijent/impl/intellij.platform.ijent.community.impl.iml" filepath="$PROJECT_DIR$/platform/ijent/impl/intellij.platform.ijent.community.impl.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/images/intellij.platform.images.iml" filepath="$PROJECT_DIR$/images/intellij.platform.images.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/images/backend.svg/intellij.platform.images.backend.svg.iml" filepath="$PROJECT_DIR$/images/backend.svg/intellij.platform.images.backend.svg.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/build-scripts/icons/intellij.platform.images.build.iml" filepath="$PROJECT_DIR$/platform/build-scripts/icons/intellij.platform.images.build.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/images/intellij.platform.images.copyright/intellij.platform.images.copyright.iml" filepath="$PROJECT_DIR$/images/intellij.platform.images.copyright/intellij.platform.images.copyright.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/indexing-api/intellij.platform.indexing.iml" filepath="$PROJECT_DIR$/platform/indexing-api/intellij.platform.indexing.iml" />
|
||||
|
||||
0
images/backend.svg/api-dump.txt
Normal file
0
images/backend.svg/api-dump.txt
Normal file
17
images/backend.svg/intellij.platform.images.backend.svg.iml
Normal file
17
images/backend.svg/intellij.platform.images.backend.svg.iml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="com.intellij.platform.images.backend.svg" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="intellij.platform.images" />
|
||||
<orderEntry type="library" name="kotlin-stdlib" level="project" />
|
||||
<orderEntry type="module" module-name="intellij.xml.psi.impl" />
|
||||
<orderEntry type="module" module-name="intellij.platform.lang" />
|
||||
<orderEntry type="module" module-name="intellij.platform.core.impl" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,10 @@
|
||||
<idea-plugin package="com.intellij.platform.images.backend.svg">
|
||||
<dependencies>
|
||||
<plugin id="com.intellij.modules.xml"/>
|
||||
<plugin id="com.intellij.modules.lang"/>
|
||||
<plugin id="com.intellij.platform.images"/>
|
||||
</dependencies>
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<lang.parserDefinition language="SVG" implementationClass="com.intellij.platform.images.backend.svg.SvgParserDefinition"/>
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
19
images/backend.svg/src/SvgParserDefinition.kt
Normal file
19
images/backend.svg/src/SvgParserDefinition.kt
Normal file
@@ -0,0 +1,19 @@
|
||||
// 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.platform.images.backend.svg
|
||||
|
||||
import com.intellij.lang.xml.XMLParserDefinition
|
||||
import com.intellij.psi.FileViewProvider
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.impl.source.xml.XmlFileImpl
|
||||
import com.intellij.psi.tree.IFileElementType
|
||||
import org.intellij.images.fileTypes.impl.SvgLanguage
|
||||
import org.jetbrains.annotations.NotNull
|
||||
|
||||
internal class SvgParserDefinition : XMLParserDefinition() {
|
||||
|
||||
override fun getFileNodeType(): IFileElementType = SVG_FILE
|
||||
|
||||
override fun createFile(viewProvider: @NotNull FileViewProvider): @NotNull PsiFile = XmlFileImpl(viewProvider, SVG_FILE)
|
||||
|
||||
private val SVG_FILE = IFileElementType(SvgLanguage.INSTANCE)
|
||||
}
|
||||
@@ -33,7 +33,6 @@
|
||||
<orderEntry type="module" module-name="intellij.platform.lang" />
|
||||
<orderEntry type="module" module-name="intellij.platform.lang.impl" />
|
||||
<orderEntry type="library" name="commons-imaging" level="project" />
|
||||
<orderEntry type="module" module-name="intellij.xml.psi.impl" />
|
||||
<orderEntry type="module" module-name="intellij.platform.testFramework" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.platform.core.ui" />
|
||||
<orderEntry type="module" module-name="intellij.platform.ide.util.io" />
|
||||
@@ -41,5 +40,6 @@
|
||||
<orderEntry type="library" name="jcef" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-serialization-core" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-serialization-json" level="project" />
|
||||
<orderEntry type="module" module-name="intellij.xml.frontback" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -1,4 +1,4 @@
|
||||
<idea-plugin implementation-detail="true" package="org.intellij.images">
|
||||
<idea-plugin implementation-detail="true">
|
||||
<vendor>JetBrains</vendor>
|
||||
<name>Images</name>
|
||||
<id>com.intellij.platform.images</id>
|
||||
@@ -12,7 +12,6 @@
|
||||
|
||||
<dependencies>
|
||||
<plugin id="com.intellij.modules.lang"/>
|
||||
<plugin id="com.intellij.modules.xml"/>
|
||||
</dependencies>
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
@@ -29,7 +28,6 @@
|
||||
<!-- ImageIO.getReaderFormatNames() -->
|
||||
<fileType name="Image" implementationClass="org.intellij.images.fileTypes.impl.ImageFileType" fieldName="INSTANCE" extensions="bigtiff;bmp;dcx;gif;icns;ico;jbig2;jpeg;jpg;pam;pbm;pcx;pgm;png;pnm;ppm;psd;rgbe;tga;tif;tiff;wbmp;xbm;xpm" />
|
||||
<fileType name="SVG" implementationClass="org.intellij.images.fileTypes.impl.SvgFileType" fieldName="INSTANCE" extensions="svg" language="SVG"/>
|
||||
<lang.parserDefinition language="SVG" implementationClass="org.intellij.images.fileTypes.impl.SvgParserDefinition"/>
|
||||
<fileLookupInfoProvider implementation="org.intellij.images.completion.ImageLookupInfoProvider"/>
|
||||
<documentationProvider implementation="org.intellij.images.fileTypes.ImageDocumentationProvider"/>
|
||||
|
||||
|
||||
@@ -1,25 +1,52 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.intellij.images.fileTypes.impl;
|
||||
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.IdeBundle;
|
||||
import com.intellij.ide.highlighter.XmlLikeFileType;
|
||||
import com.intellij.openapi.fileEditor.impl.LoadTextUtil;
|
||||
import com.intellij.openapi.fileTypes.LanguageFileType;
|
||||
import com.intellij.openapi.fileTypes.UIBasedFileType;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.CharsetToolkit;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.text.XmlCharsetDetector;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
/**
|
||||
* @author Konstantin Bulenkov
|
||||
*/
|
||||
public final class SvgFileType extends XmlLikeFileType implements UIBasedFileType {
|
||||
public final class SvgFileType extends LanguageFileType implements UIBasedFileType {
|
||||
public static final SvgFileType INSTANCE = new SvgFileType();
|
||||
|
||||
private SvgFileType() {
|
||||
super(SvgLanguage.INSTANCE);
|
||||
}
|
||||
|
||||
// copy-pasted from XmlLikeFileType
|
||||
@Override
|
||||
public String getCharset(@NotNull VirtualFile file, final byte @NotNull [] content) {
|
||||
LoadTextUtil.DetectResult guessed = LoadTextUtil.guessFromContent(file, content);
|
||||
String charset =
|
||||
guessed.hardCodedCharset != null
|
||||
? guessed.hardCodedCharset.name()
|
||||
: XmlCharsetDetector.extractXmlEncodingFromProlog(content);
|
||||
return charset == null ? CharsetToolkit.UTF8 : charset;
|
||||
}
|
||||
|
||||
// copy-pasted from XmlLikeFileType
|
||||
@Override
|
||||
public Charset extractCharsetFromFileContent(final Project project, final @Nullable VirtualFile file, final @NotNull CharSequence content) {
|
||||
String name = XmlCharsetDetector.extractXmlEncodingFromProlog(content);
|
||||
Charset charset = CharsetToolkit.forName(name);
|
||||
return charset == null ? StandardCharsets.UTF_8 : charset;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getName() {
|
||||
|
||||
@@ -2,26 +2,10 @@
|
||||
package org.intellij.images.fileTypes.impl
|
||||
|
||||
import com.intellij.lang.xml.XMLLanguage
|
||||
import com.intellij.lang.xml.XMLParserDefinition
|
||||
import com.intellij.psi.FileViewProvider
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.impl.source.xml.XmlFileImpl
|
||||
import com.intellij.psi.tree.IFileElementType
|
||||
import org.jetbrains.annotations.NotNull
|
||||
|
||||
class SvgLanguage private constructor(): XMLLanguage(XMLLanguage.INSTANCE, "SVG", "image/svg+xml") {
|
||||
companion object {
|
||||
@JvmField
|
||||
val INSTANCE = SvgLanguage()
|
||||
}
|
||||
}
|
||||
|
||||
internal class SvgParserDefinition : XMLParserDefinition() {
|
||||
|
||||
override fun getFileNodeType(): IFileElementType = SVG_FILE
|
||||
|
||||
override fun createFile(viewProvider: @NotNull FileViewProvider): @NotNull PsiFile = XmlFileImpl(viewProvider, SVG_FILE)
|
||||
|
||||
private val SVG_FILE = IFileElementType(SvgLanguage.INSTANCE)
|
||||
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
<content>
|
||||
<module name="intellij.platform.images.copyright"/>
|
||||
<module name="intellij.platform.images.backend.svg"/>
|
||||
<module name="intellij.platform.lvcs.impl"/>
|
||||
<module name="intellij.platform.smRunner.vcs"/>
|
||||
<module name="intellij.platform.collaborationTools"/>
|
||||
|
||||
@@ -158,5 +158,6 @@
|
||||
<orderEntry type="library" scope="TEST" name="assertJ" level="project" />
|
||||
<orderEntry type="module" module-name="intellij.platform.testFramework.junit5" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.tools.ide.metrics.benchmark" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.platform.images.backend.svg" scope="TEST" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -28,6 +28,7 @@
|
||||
<orderEntry type="library" scope="TEST" name="Guava" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="jackson" level="project" />
|
||||
<orderEntry type="module" module-name="intellij.tools.ide.metrics.benchmark" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.platform.images.backend.svg" scope="TEST" />
|
||||
</component>
|
||||
<component name="copyright">
|
||||
<Base>
|
||||
|
||||
Reference in New Issue
Block a user