Java 类com.intellij.psi.xml.XmlTagValue 实例源码
项目:intellij-ce-playground
文件:XmlTagManipulator.java
@Override
@NotNull
public TextRange getRangeInElement(@NotNull final XmlTag tag) {
if (tag.getSubTags().length > 0) {
// Text range in tag with subtags is not supported, return empty range, consider making this function nullable.
return TextRange.EMPTY_RANGE;
}
final XmlTagValue value = tag.getValue();
final XmlText[] texts = value.getTextElements();
switch (texts.length) {
case 0:
return value.getTextRange().shiftRight(-tag.getTextOffset());
case 1:
return getValueRange(texts[0]);
default:
return TextRange.EMPTY_RANGE;
}
}
项目:intellij-ce-playground
文件:PackageDotHtmlMayBePackageInfoInspection.java
@Nullable
private static String getPackageInfoText(XmlFile xmlFile) {
final XmlTag rootTag = xmlFile.getRootTag();
if (rootTag == null) {
return null;
}
final PsiElement[] children = rootTag.getChildren();
for (PsiElement child : children) {
if (!(child instanceof HtmlTag)) {
continue;
}
final HtmlTag htmlTag = (HtmlTag)child;
@NonNls final String name = htmlTag.getName();
if ("body".equalsIgnoreCase(name)) {
final XmlTagValue value = htmlTag.getValue();
return value.getText();
}
}
return null;
}
项目:tools-idea
文件:XmlTagManipulator.java
public TextRange getRangeInElement(final XmlTag tag) {
if (tag.getSubTags().length > 0) {
// Text range in tag with subtags is not supported, return empty range, consider making this function nullable.
return TextRange.EMPTY_RANGE;
}
final XmlTagValue value = tag.getValue();
final XmlText[] texts = value.getTextElements();
switch (texts.length) {
case 0:
return value.getTextRange().shiftRight(-tag.getTextOffset());
case 1:
return getValueRange(texts[0]);
default:
return TextRange.EMPTY_RANGE;
}
}
项目:tools-idea
文件:PackageDotHtmlMayBePackageInfoInspection.java
@Nullable
private static String getPackageInfoText(XmlFile xmlFile) {
final XmlTag rootTag = xmlFile.getRootTag();
if (rootTag == null) {
return null;
}
final PsiElement[] children = rootTag.getChildren();
for (PsiElement child : children) {
if (!(child instanceof HtmlTag)) {
continue;
}
final HtmlTag htmlTag = (HtmlTag)child;
@NonNls final String name = htmlTag.getName();
if ("body".equals(name)) {
final XmlTagValue value = htmlTag.getValue();
return value.getText();
}
}
return null;
}
项目:consulo-xml
文件:XmlTagManipulator.java
@Override
@NotNull
public TextRange getRangeInElement(@NotNull final XmlTag tag)
{
if(tag.getSubTags().length > 0)
{
// Text range in tag with subtags is not supported, return empty range, consider making this function nullable.
return TextRange.EMPTY_RANGE;
}
final XmlTagValue value = tag.getValue();
final XmlText[] texts = value.getTextElements();
switch(texts.length)
{
case 0:
return value.getTextRange().shiftRight(-tag.getTextOffset());
case 1:
return getValueRange(texts[0]);
default:
return TextRange.EMPTY_RANGE;
}
}
项目:consulo-xml
文件:XmlTagManipulator.java
public static TextRange[] getValueRanges(@NotNull final XmlTag tag)
{
final XmlTagValue value = tag.getValue();
final XmlText[] texts = value.getTextElements();
if(texts.length == 0)
{
return new TextRange[]{value.getTextRange().shiftRight(-tag.getTextOffset())};
}
else
{
final TextRange[] ranges = new TextRange[texts.length];
for(int i = 0; i < texts.length; i++)
{
ranges[i] = getValueRange(texts[i]);
}
return ranges;
}
}
项目:consulo-java
文件:PackageDotHtmlMayBePackageInfoInspection.java
@Nullable
private static String getPackageInfoText(XmlFile xmlFile)
{
final XmlTag rootTag = xmlFile.getRootTag();
if(rootTag == null)
{
return null;
}
final PsiElement[] children = rootTag.getChildren();
for(PsiElement child : children)
{
if(!(child instanceof HtmlTag))
{
continue;
}
final HtmlTag htmlTag = (HtmlTag) child;
@NonNls final String name = htmlTag.getName();
if("body".equals(name))
{
final XmlTagValue value = htmlTag.getValue();
return value.getText();
}
}
return null;
}
项目:hybris-integration-intellij-idea-plugin
文件:TSStructureTreeElement.java
private String localizeDescription(final DomElement dom) {
if (dom instanceof Description) {
final XmlElement xmlElement = dom.getXmlElement();
if (xmlElement instanceof XmlTag) {
final XmlTagValue value = ((XmlTag) xmlElement).getValue();
if (value != null) {
return value.getTrimmedText();
}
}
}
return null;
}
项目:intellij-ce-playground
文件:DomTarget.java
@Nullable
public static DomTarget getTarget(DomElement element, GenericDomValue nameElement) {
if (nameElement instanceof GenericAttributeValue) {
final GenericAttributeValue genericAttributeValue = (GenericAttributeValue)nameElement;
final XmlAttributeValue attributeValue = genericAttributeValue.getXmlAttributeValue();
if (attributeValue == null) {
return null;
}
final int length = attributeValue.getTextLength();
if (length >= 2) {
return new DomTarget(element, attributeValue, new TextRange(1, length - 1), nameElement);
}
}
final XmlTag tag = nameElement.getXmlTag();
if (tag == null) {
return null;
}
XmlTagValue tagValue = tag.getValue();
if (StringUtil.isEmpty(tagValue.getTrimmedText())) {
return null;
}
return new DomTarget(element, tag, XmlTagUtil.getTrimmedValueRange(tag), nameElement);
}
项目:intellij-ce-playground
文件:XmlTagManipulator.java
public static TextRange[] getValueRanges(@NotNull final XmlTag tag) {
final XmlTagValue value = tag.getValue();
final XmlText[] texts = value.getTextElements();
if (texts.length == 0) {
return new TextRange[] { value.getTextRange().shiftRight(-tag.getTextOffset()) };
} else {
final TextRange[] ranges = new TextRange[texts.length];
for (int i = 0; i < texts.length; i++) {
ranges[i] = getValueRange(texts[i]);
}
return ranges;
}
}
项目:intellij-ce-playground
文件:DomReferencesTest.java
public void testPsiPrimitiveTypeArray() throws Throwable {
final MyElement element = createElement("<a><psi-type>int[]</psi-type></a>");
final GenericDomValue value = element.getPsiType();
final XmlTagValue tagValue = value.getXmlTag().getValue();
final int i = tagValue.getText().indexOf(value.getStringValue());
assertReference(value, value.getXmlTag(), tagValue.getTextRange().getStartOffset() + i + "int".length());
}
项目:intellij-ce-playground
文件:DomHardCoreTestCase.java
protected PsiReference assertReference(final GenericDomValue value, PsiElement resolveTo) {
final XmlTagValue tagValue = value.getXmlTag().getValue();
final TextRange textRange = tagValue.getTextRange();
final String s = value.getStringValue();
assertNotNull(s);
final int i = tagValue.getText().indexOf(s);
return assertReference(value, resolveTo, textRange.getStartOffset() + i + s.length());
}
项目:intellij-ce-playground
文件:XmlTagUtil.java
@NotNull
public static TextRange getTrimmedValueRange(final @NotNull XmlTag tag) {
XmlTagValue tagValue = tag.getValue();
final String text = tagValue.getText();
final String trimmed = text.trim();
final int index = text.indexOf(trimmed);
final int startOffset = tagValue.getTextRange().getStartOffset() - tag.getTextRange().getStartOffset() + index;
return new TextRange(startOffset, startOffset + trimmed.length());
}
项目:tools-idea
文件:DomTarget.java
@Nullable
public static DomTarget getTarget(DomElement element, GenericDomValue nameElement) {
if (nameElement instanceof GenericAttributeValue) {
final GenericAttributeValue genericAttributeValue = (GenericAttributeValue)nameElement;
final XmlAttributeValue attributeValue = genericAttributeValue.getXmlAttributeValue();
if (attributeValue == null) {
return null;
}
final int length = attributeValue.getTextLength();
if (length >= 2) {
return new DomTarget(element, attributeValue, new TextRange(1, length - 1), nameElement);
}
}
final XmlTag tag = nameElement.getXmlTag();
if (tag == null) {
return null;
}
XmlTagValue tagValue = tag.getValue();
if (StringUtil.isEmpty(tagValue.getTrimmedText())) {
return null;
}
return new DomTarget(element, tag, XmlTagUtil.getTrimmedValueRange(tag), nameElement);
}
项目:tools-idea
文件:DomReferencesTest.java
public void testPsiPrimitiveTypeArray() throws Throwable {
final MyElement element = createElement("<a><psi-type>int[]</psi-type></a>");
final GenericDomValue value = element.getPsiType();
final XmlTagValue tagValue = value.getXmlTag().getValue();
final int i = tagValue.getText().indexOf(value.getStringValue());
assertReference(value, value.getXmlTag(), tagValue.getTextRange().getStartOffset() + i + "int".length());
}
项目:tools-idea
文件:DomHardCoreTestCase.java
protected PsiReference assertReference(final GenericDomValue value, PsiElement resolveTo) {
final XmlTagValue tagValue = value.getXmlTag().getValue();
final TextRange textRange = tagValue.getTextRange();
final String s = value.getStringValue();
final int i = tagValue.getText().indexOf(s);
return assertReference(value, resolveTo, textRange.getStartOffset() + i + s.length());
}
项目:tools-idea
文件:XmlTagManipulator.java
public static TextRange[] getValueRanges(final @NotNull XmlTag tag) {
final XmlTagValue value = tag.getValue();
final XmlText[] texts = value.getTextElements();
if (texts.length == 0) {
return new TextRange[] { value.getTextRange().shiftRight(-tag.getTextOffset()) };
} else {
final TextRange[] ranges = new TextRange[texts.length];
for (int i = 0; i < texts.length; i++) {
ranges[i] = getValueRange(texts[i]);
}
return ranges;
}
}
项目:tools-idea
文件:XmlTagUtil.java
@NotNull
public static TextRange getTrimmedValueRange(final @NotNull XmlTag tag) {
XmlTagValue tagValue = tag.getValue();
final String text = tagValue.getText();
final String trimmed = text.trim();
final int index = text.indexOf(trimmed);
final int startOffset = tagValue.getTextRange().getStartOffset() - tag.getTextRange().getStartOffset() + index;
return new TextRange(startOffset, startOffset + trimmed.length());
}
项目:idea-php-symfony2-plugin
文件:ProfilerUtil.java
/**
* "_controller" and "_route"
* "/_profiler/242e61?panel=request"
*
* <tr>
* <th>_route</th>
* <td>foo_route</td>
* </tr>
*/
@NotNull
public static Map<String, String> getRequestAttributes(@NotNull Project project, @NotNull String html) {
HtmlFileImpl htmlFile = (HtmlFileImpl) PsiFileFactory.getInstance(project).createFileFromText(HTMLLanguage.INSTANCE, html);
String[] keys = new String[] {"_controller", "_route"};
Map<String, String> map = new HashMap<>();
PsiTreeUtil.processElements(htmlFile, psiElement -> {
if(!(psiElement instanceof XmlTag) || !"th".equals(((XmlTag) psiElement).getName())) {
return true;
}
XmlTagValue keyTag = ((XmlTag) psiElement).getValue();
String key = StringUtils.trim(keyTag.getText());
if(!ArrayUtils.contains(keys, key)) {
return true;
}
XmlTag tdTag = PsiTreeUtil.getNextSiblingOfType(psiElement, XmlTag.class);
if(tdTag == null || !"td".equals(tdTag.getName())) {
return true;
}
XmlTagValue valueTag = tdTag.getValue();
String value = valueTag.getText();
if(StringUtils.isBlank(value)) {
return true;
}
// Symfony 3.2 profiler debug? strip html
map.put(key, stripHtmlTags(value));
// exit if all item found
return map.size() != keys.length;
});
return map;
}
项目:consulo-xml
文件:DomHardCoreTestCase.java
protected PsiReference assertReference(final GenericDomValue value, PsiElement resolveTo) {
final XmlTagValue tagValue = value.getXmlTag().getValue();
final TextRange textRange = tagValue.getTextRange();
final String s = value.getStringValue();
final int i = tagValue.getText().indexOf(s);
return assertReference(value, resolveTo, textRange.getStartOffset() + i + s.length());
}
项目:consulo-xml
文件:XmlElementDescriptorImpl.java
@Override
public PsiReference[] getValueReferences(XmlTag xmlTag, @NotNull String text)
{
XmlTagValue value = xmlTag.getValue();
XmlText[] elements = value.getTextElements();
if(elements.length == 0 || xmlTag.getSubTags().length > 0)
{
return PsiReference.EMPTY_ARRAY;
}
return new PsiReference[]{
new XmlEnumeratedValueReference(xmlTag, this, ElementManipulators.getValueTextRange(xmlTag))
};
}
项目:consulo-xml
文件:XmlTagValueImpl.java
public static XmlTagValue createXmlTagValue(XmlTag tag)
{
final List<XmlTagChild> bodyElements = new ArrayList<XmlTagChild>();
tag.processElements(new PsiElementProcessor()
{
boolean insideBody = false;
@Override
public boolean execute(@NotNull PsiElement element)
{
final ASTNode treeElement = element.getNode();
if(insideBody)
{
if(treeElement != null && treeElement.getElementType() == XmlTokenType.XML_END_TAG_START)
{
return false;
}
if(!(element instanceof XmlTagChild))
{
return true;
}
bodyElements.add((XmlTagChild) element);
}
else if(treeElement != null && treeElement.getElementType() == XmlTokenType.XML_TAG_END)
{
insideBody = true;
}
return true;
}
}, tag);
XmlTagChild[] tagChildren = ContainerUtil.toArray(bodyElements, new XmlTagChild[bodyElements.size()]);
return new XmlTagValueImpl(tagChildren, tag);
}
项目:consulo-xml
文件:XmlTagUtil.java
@NotNull
public static TextRange getTrimmedValueRange(final @NotNull XmlTag tag) {
XmlTagValue tagValue = tag.getValue();
final String text = tagValue.getText();
final String trimmed = text.trim();
final int index = text.indexOf(trimmed);
final int startOffset = tagValue.getTextRange().getStartOffset() - tag.getTextRange().getStartOffset() + index;
return new TextRange(startOffset, startOffset + trimmed.length());
}
项目:consulo-xml
文件:DomTarget.java
@Nullable
public static DomTarget getTarget(DomElement element, GenericDomValue nameElement) {
if (nameElement instanceof GenericAttributeValue) {
final GenericAttributeValue genericAttributeValue = (GenericAttributeValue)nameElement;
final XmlAttributeValue attributeValue = genericAttributeValue.getXmlAttributeValue();
if (attributeValue == null) {
return null;
}
final int length = attributeValue.getTextLength();
if (length >= 2) {
return new DomTarget(element, attributeValue, new TextRange(1, length - 1), nameElement);
}
}
final XmlTag tag = nameElement.getXmlTag();
if (tag == null) {
return null;
}
XmlTagValue tagValue = tag.getValue();
if (StringUtil.isEmpty(tagValue.getTrimmedText())) {
return null;
}
return new DomTarget(element, tag, XmlTagUtil.getTrimmedValueRange(tag), nameElement);
}
项目:consulo-javascript
文件:JSLanguageInjector.java
private boolean doInjectTo(final XmlTag tag)
{
final XmlTagValue value = tag.getValue();
final XmlTagChild[] tagChildren = value.getChildren();
return tagChildren.length == 1 && (tagChildren[0].getNode().getElementType() == XmlElementType.XML_CDATA || !tagChildren[0].textContains('<'));
}
项目:magento2-phpstorm-plugin
文件:LineMarkerXmlTagDecorator.java
@Override
@NotNull
public XmlTagValue getValue() {
return xmlTag.getValue();
}
项目:intellij-ce-playground
文件:IncludedXmlTag.java
@Override
@NotNull
public XmlTagValue getValue() {
return XmlTagValueImpl.createXmlTagValue(this);
}
项目:intellij-ce-playground
文件:ResourceResolverCacheTest.java
public void test() throws Exception {
VirtualFile file1 = myFixture.copyFileToProject("render/layout1.xml", "res/layout/layout1.xml");
VirtualFile file2 = myFixture.copyFileToProject("render/layout2.xml", "res/layout/layout2.xml");
VirtualFile file3 = myFixture.copyFileToProject("javadoc/strings/strings.xml", "res/values/strings.xml");
assertNotNull(file1);
assertNotNull(file2);
assertNotNull(file3);
AndroidFacet facet = AndroidFacet.getInstance(myModule);
assertNotNull(facet);
Project project = getProject();
PsiFile psiFile1 = PsiManager.getInstance(project).findFile(file1);
assertNotNull(psiFile1);
PsiFile psiFile2 = PsiManager.getInstance(project).findFile(file2);
assertNotNull(psiFile2);
final PsiFile psiFile3 = PsiManager.getInstance(project).findFile(file3);
assertNotNull(psiFile3);
ConfigurationManager configurationManager = facet.getConfigurationManager();
assertNotNull(configurationManager);
final Configuration configuration1 = configurationManager.getConfiguration(file1);
Configuration configuration2 = configurationManager.getConfiguration(file2);
assertNotNull(configuration1.getTheme());
assertEquals(configuration2.getTheme(), configuration1.getTheme());
ResourceResolver resolver1 = configuration1.getResourceResolver();
ResourceResolver resolver2 = configuration2.getResourceResolver();
assertSame(resolver1, resolver2);
assertSame(resolver1, configuration1.getResourceResolver());
configuration1.setTheme("Theme.Light");
final ResourceResolver resolver1b = configuration1.getResourceResolver();
assertNotSame(resolver1b, resolver1);
assertNotSame(resolver1b, resolver2);
assertSame(resolver1b, configuration1.getResourceResolver());
configuration2.setTheme("Theme.Light");
assertSame(resolver1b, configuration2.getResourceResolver());
// Test project resource changes, should invalidate
final LocalResourceRepository resources = myFacet.getModuleResources(true);
assertNotNull(resources); final long generation = resources.getModificationCount();
assertEquals("Cancel", configuration1.getResourceResolver().findResValue("@string/cancel", false).getValue());
WriteCommandAction.runWriteCommandAction(null, new Runnable() {
@Override
public void run() {
//noinspection ConstantConditions
XmlTagValue value = ((XmlFile)psiFile3).getRootTag().getSubTags()[1].getValue();
assertEquals("Cancel", value.getTrimmedText());
value.setText("\"FooBar\"");
}
});
assertTrue(resources.isScanPending(psiFile3));
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
assertTrue(generation < resources.getModificationCount());
assertNotSame(resolver1b, configuration1.getResourceResolver());
assertEquals("FooBar", configuration1.getResourceResolver().findResValue("@string/cancel", false).getValue());
}
});
ResourceResolverCache cache = configuration1.getConfigurationManager().getResolverCache();
assertSame(cache, configuration2.getConfigurationManager().getResolverCache());
ResourceRepository frameworkResources = cache.getFrameworkResources(configuration1.getFullConfig(), configuration1.getTarget());
assertTrue(frameworkResources instanceof FrameworkResourceLoader.IdeFrameworkResources);
assertTrue(((FrameworkResourceLoader.IdeFrameworkResources)frameworkResources).getSkippedLocales());
}
项目:magento2plugin
文件:LineMarkerXmlTagDecorator.java
@Override
@NotNull
public XmlTagValue getValue() {
return xmlTag.getValue();
}
项目:tools-idea
文件:IncludedXmlTag.java
@Override
@NotNull
public XmlTagValue getValue() {
return XmlTagValueImpl.createXmlTagValue(this);
}
项目:idea-php-symfony2-plugin
文件:ProfilerUtil.java
/**
* ["foo/foo.html.twig": 1]
*
* <tr>
* <td>@Twig/Exception/traces_text.html.twig</td>
* <td class="font-normal">1</td>
* </tr>
*/
public static Map<String, Integer> getRenderedElementTwigTemplates(@NotNull Project project, @NotNull String html) {
HtmlFileImpl htmlFile = (HtmlFileImpl) PsiFileFactory.getInstance(project).createFileFromText(HTMLLanguage.INSTANCE, html);
final XmlTag[] xmlTag = new XmlTag[1];
PsiTreeUtil.processElements(htmlFile, psiElement -> {
if(!(psiElement instanceof XmlTag) || !"h2".equals(((XmlTag) psiElement).getName())) {
return true;
}
XmlTagValue keyTag = ((XmlTag) psiElement).getValue();
String contents = StringUtils.trim(keyTag.getText());
if(!"Rendered Templates".equalsIgnoreCase(contents)) {
return true;
}
xmlTag[0] = (XmlTag) psiElement;
return true;
});
if(xmlTag[0] == null) {
return Collections.emptyMap();
}
XmlTag tableTag = PsiTreeUtil.getNextSiblingOfType(xmlTag[0], XmlTag.class);
if(tableTag == null || !"table".equals(tableTag.getName())) {
return Collections.emptyMap();
}
XmlTag tbody = tableTag.findFirstSubTag("tbody");
if(tbody == null) {
return Collections.emptyMap();
}
Map<String, Integer> templates = new HashMap<>();
for (XmlTag tag : PsiTreeUtil.getChildrenOfTypeAsList(tbody, XmlTag.class)) {
if(!"tr".equals(tag.getName())) {
continue;
}
XmlTag[] tds = tag.findSubTags("td");
if(tds.length < 2) {
continue;
}
String template = stripHtmlTags(StringUtils.trim(tds[0].getValue().getText()));
if(StringUtils.isBlank(template)) {
continue;
}
Integer count;
try {
count = Integer.valueOf(stripHtmlTags(StringUtils.trim(tds[1].getValue().getText())));
} catch (NumberFormatException e) {
count = 0;
}
templates.put(template, count);
}
return templates;
}
项目:consulo-xml
文件:IncludedXmlTag.java
@Override
@NotNull
public XmlTagValue getValue()
{
return XmlTagValueImpl.createXmlTagValue(this);
}
项目:intellij-ce-playground
文件:ComponentType.java
boolean process(ComponentType type, XmlTag component, @Nullable XmlTagValue impl, @Nullable XmlTagValue intf);
项目:tools-idea
文件:ComponentType.java
boolean process(ComponentType type, XmlTag component, @Nullable XmlTagValue impl, @Nullable XmlTagValue intf);