package com.taobao.weex.attributes; import com.intellij.psi.xml.XmlTag; import com.intellij.xml.XmlAttributeDescriptor; import com.intellij.xml.XmlAttributeDescriptorsProvider; import com.taobao.weex.lint.DirectiveLint; import com.taobao.weex.lint.WeexTag; import com.taobao.weex.utils.WeexFileUtil; import org.jetbrains.annotations.Nullable; import java.util.LinkedHashMap; import java.util.Map; /** * Created by moxun on 16/10/11. */ public class WeexAttrDescriptorProvider implements XmlAttributeDescriptorsProvider { @Override public XmlAttributeDescriptor[] getAttributeDescriptors(XmlTag xmlTag) { if (!WeexFileUtil.isOnWeexFile(xmlTag)) { return new XmlAttributeDescriptor[0]; } final Map<String, XmlAttributeDescriptor> result = new LinkedHashMap<String, XmlAttributeDescriptor>(); WeexTag tag = DirectiveLint.getWeexTag(xmlTag.getName()); if (tag == null) { return new XmlAttributeDescriptor[0]; } for (String attributeName : tag.getExtAttrs()) { result.put(attributeName, new WeexAttrDescriptor(attributeName, tag.getAttribute(attributeName).valueEnum, null)); } return result.values().toArray(new XmlAttributeDescriptor[result.size()]); } @Nullable @Override public XmlAttributeDescriptor getAttributeDescriptor(String s, XmlTag xmlTag) { if (!WeexFileUtil.isOnWeexFile(xmlTag)) { return null; } WeexTag tag = DirectiveLint.getWeexTag(xmlTag.getName()); if (tag == null) { return null; } if (tag.getExtAttrs().contains(s)) { return new WeexAttrDescriptor(s, tag.getAttribute(s).valueEnum, null); } return null; } }