[yaml] numeric value validation
[idea/community.git] / plugins / yaml / src / org / jetbrains / yaml / meta / model / YamlNumberType.java
1 /*
2  * Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
3  */
4 package org.jetbrains.yaml.meta.model;
5
6 import com.intellij.codeInspection.ProblemsHolder;
7 import org.jetbrains.annotations.ApiStatus;
8 import org.jetbrains.annotations.NotNull;
9 import org.jetbrains.yaml.psi.YAMLScalar;
10
11 @ApiStatus.Experimental
12 public class YamlNumberType extends YamlScalarType {
13   private static final YamlNumberType SHARED_INSTANCE = new YamlNumberType();
14
15   public static YamlNumberType getInstance() {
16     return SHARED_INSTANCE;
17   }
18
19   public YamlNumberType() {
20     super("yaml:number");
21     setDisplayName("number");
22   }
23
24   @Override
25   protected void validateScalarValue(@NotNull YAMLScalar scalarValue, @NotNull ProblemsHolder holder) {
26     try {
27       //noinspection ResultOfMethodCallIgnored
28       Float.parseFloat(scalarValue.getTextValue());
29     }
30     catch (NumberFormatException e) {
31       holder.registerProblem(scalarValue, "Numeric value expected");
32     }
33   }
34 }