From 96a0255bbade45f3ad9e0fbe9a9c28a734ff1e08 Mon Sep 17 00:00:00 2001 From: irengrig Date: Tue, 21 Feb 2017 21:57:04 +0100 Subject: [PATCH] WEB-25462 Module Dependencies Diagram: HTML: recognize image included via "img" tag --- .../src/com/intellij/xml/util/HtmlUtil.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/xml/xml-psi-impl/src/com/intellij/xml/util/HtmlUtil.java b/xml/xml-psi-impl/src/com/intellij/xml/util/HtmlUtil.java index 56b843854c39..36792d3145d2 100644 --- a/xml/xml-psi-impl/src/com/intellij/xml/util/HtmlUtil.java +++ b/xml/xml-psi-impl/src/com/intellij/xml/util/HtmlUtil.java @@ -23,6 +23,7 @@ import com.intellij.javaee.ExternalResourceManagerEx; import com.intellij.lang.Language; import com.intellij.lang.html.HTMLLanguage; import com.intellij.lang.xhtml.XHTMLLanguage; +import com.intellij.lang.xml.XMLLanguage; import com.intellij.openapi.Disposable; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileTypes.FileType; @@ -38,6 +39,7 @@ import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.FileViewProvider; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; +import com.intellij.psi.XmlRecursiveElementWalkingVisitor; import com.intellij.psi.html.HtmlTag; import com.intellij.psi.impl.source.html.HtmlDocumentImpl; import com.intellij.psi.impl.source.html.dtd.HtmlAttributeDescriptorImpl; @@ -757,4 +759,34 @@ public class HtmlUtil { } return false; } + + public static List getIncludedPaths(@NotNull final XmlFile file) { + final List result = new ArrayList<>(); + file.acceptChildren(new XmlRecursiveElementWalkingVisitor() { + @Override + public void visitXmlTag(XmlTag tag) { + if ("link".equalsIgnoreCase(tag.getName())) { + String href = tag.getAttributeValue("href"); + if (!StringUtil.isEmpty(href)) { + result.add(href); + } + } + else if ("script".equalsIgnoreCase(tag.getName()) || "img".equalsIgnoreCase(tag.getName())) { + String src = tag.getAttributeValue("src"); + if (!StringUtil.isEmpty(src)) { + result.add(src); + } + } + super.visitXmlTag(tag); + } + + @Override + public void visitElement(PsiElement element) { + if (element.getLanguage() instanceof XMLLanguage) { + super.visitElement(element); + } + } + }); + return result.isEmpty() ? Collections.emptyList() : result; + } }