@Override public PsiElement extractObjectForValidation(final PsiElement psiElement) { final Optional<PsiElement> thirdParent = Optional.ofNullable(psiElement.getParent()) .map(PsiElement::getParent) .map(PsiElement::getParent); if (thirdParent.isPresent() && thirdParent.get() instanceof YAMLSequenceItem) { return ((YAMLSequenceItem) thirdParent.get()).getValue(); } else if (thirdParent.isPresent() && thirdParent.get() instanceof YAMLKeyValue) { return ((YAMLKeyValue) thirdParent.get()).getKey(); } else { return psiElement.getParent(); } }
@Override public boolean isUniqueArrayStringValue(final String value, final PsiElement psiElement) { return Optional.ofNullable(psiElement.getParent()) .map(PsiElement::getParent) .map(PsiElement::getParent) .filter(el -> el instanceof YAMLSequence) .map(el -> Arrays.asList(el.getChildren())) .map(children -> children.stream().filter(c -> c instanceof YAMLSequenceItem)) .map(childrenStream -> childrenStream.map(YAMLSequenceItem.class::cast)) .map( childrenStream -> childrenStream.noneMatch( item -> item.getValue() != null && value.equals( StringUtils.removeAllQuotes(item.getValue().getText())))) .orElse(true); }
/** * [ROLE_USER, FEATURE_ALPHA, ROLE_ALLOWED_TO_SWITCH] */ @NotNull static public Collection<String> getYamlArrayValuesAsList(@NotNull YAMLSequence yamlArray) { Collection<String> keys = new ArrayList<>(); for (YAMLSequenceItem yamlSequenceItem : yamlArray.getItems()) { YAMLValue value = yamlSequenceItem.getValue(); if(!(value instanceof YAMLScalar)) { continue; } String textValue = ((YAMLScalar) value).getTextValue(); if(StringUtils.isNotBlank(textValue)) { keys.add(textValue); } } return keys; }
/** * environment: * - FOOBAR=0 */ private static void visitEnvironmentSquenceItems(@NotNull Consumer<Pair<String, PsiElement>> consumer, @NotNull YAMLKeyValue yamlKeyValue) { YAMLKeyValue environment = YamlHelper.getYamlKeyValue(yamlKeyValue, "environment"); if (environment != null) { for (YAMLSequenceItem yamlSequenceItem : YamlHelper.getSequenceItems(environment)) { YAMLValue value = yamlSequenceItem.getValue(); if (value instanceof YAMLScalar) { String textValue = ((YAMLScalar) value).getTextValue(); if (StringUtils.isNotBlank(textValue)) { String[] split = textValue.split("="); if (split.length > 1) { consumer.accept(Pair.create(split[0], value)); } } } } } } }
YAMLValue value = yamlSequenceItem.getValue(); if(value instanceof YAMLMapping) {
/** * Returns "@foo" value of ["@foo", "fo<caret>o"] */ @Nullable public static String getPreviousSequenceItemAsText(@NotNull PsiElement psiElement) { PsiElement yamlScalar = psiElement.getParent(); if(!(yamlScalar instanceof YAMLScalar)) { return null; } PsiElement yamlSequence = yamlScalar.getParent(); if(!(yamlSequence instanceof YAMLSequenceItem)) { return null; } // @TODO: catch new lexer error on empty item [<caret>,@foo] "PsiErrorElement:Sequence item expected" YAMLSequenceItem prevSequenceItem = PsiTreeUtil.getPrevSiblingOfType(yamlSequence, YAMLSequenceItem.class); if(prevSequenceItem == null) { return null; } YAMLValue value = prevSequenceItem.getValue(); if(!(value instanceof YAMLScalar)) { return null; } return ((YAMLScalar) value).getTextValue(); }
if(yamlPsiElement instanceof YAMLSequence) { for (YAMLSequenceItem yamlSequenceItem : ((YAMLSequence) yamlPsiElement).getItems()) { YAMLValue value = yamlSequenceItem.getValue(); if(value instanceof YAMLSequence) { List<YAMLSequenceItem> callItem = ((YAMLSequence) value).getItems(); YAMLValue methodArguments = callItem.get(1).getValue(); if(methodArguments instanceof YAMLSequence) { YAMLValue value2 = methodArgument.getValue();
final YAMLValue itemValue = yamlSequenceItem.getValue();
YAMLValue methodNameElement = methodParameter.get(0).getValue(); if(methodNameElement instanceof YAMLScalar) { String methodName = ((YAMLScalar) methodNameElement).getTextValue();
YAMLValue value1 = ((YAMLSequenceItem) yamlPsiElement).getValue(); if(!(value1 instanceof YAMLMapping)) { continue;