[yaml] numeric value validation
authorSergey.Anchipolevsky <sergey.anchipolevsky@jetbrains.com>
Sun, 18 Feb 2018 12:02:29 +0000 (15:02 +0300)
committerSergey.Anchipolevsky <sergey.anchipolevsky@jetbrains.com>
Sun, 18 Feb 2018 12:02:29 +0000 (15:02 +0300)
plugins/yaml/src/org/jetbrains/yaml/meta/model/YamlIntegerType.java
plugins/yaml/src/org/jetbrains/yaml/meta/model/YamlNumberType.java

index 7d76d5779c06540d1035de14e5c4095c1cf5807e..10f0727bfa858b3a78b28db9537ca9099b7ee267 100644 (file)
@@ -3,7 +3,10 @@
  */
 package org.jetbrains.yaml.meta.model;
 
+import com.intellij.codeInspection.ProblemsHolder;
 import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.yaml.psi.YAMLScalar;
 
 @ApiStatus.Experimental
 public class YamlIntegerType extends YamlScalarType {
@@ -17,4 +20,15 @@ public class YamlIntegerType extends YamlScalarType {
     super("yaml:integer");
     setDisplayName("integer");
   }
+
+  @Override
+  protected void validateScalarValue(@NotNull YAMLScalar scalarValue, @NotNull ProblemsHolder holder) {
+    try {
+      //noinspection ResultOfMethodCallIgnored
+      Integer.parseInt(scalarValue.getTextValue());
+    }
+    catch (NumberFormatException e) {
+      holder.registerProblem(scalarValue, "Integer value expected");
+    }
+  }
 }
index 460e55cd30360f1e4b1d482b5960a6a309f2a8d3..37a05aac43d84b26a0cfa6331a7abb9731a5614e 100644 (file)
@@ -3,7 +3,10 @@
  */
 package org.jetbrains.yaml.meta.model;
 
+import com.intellij.codeInspection.ProblemsHolder;
 import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.yaml.psi.YAMLScalar;
 
 @ApiStatus.Experimental
 public class YamlNumberType extends YamlScalarType {
@@ -17,4 +20,15 @@ public class YamlNumberType extends YamlScalarType {
     super("yaml:number");
     setDisplayName("number");
   }
+
+  @Override
+  protected void validateScalarValue(@NotNull YAMLScalar scalarValue, @NotNull ProblemsHolder holder) {
+    try {
+      //noinspection ResultOfMethodCallIgnored
+      Float.parseFloat(scalarValue.getTextValue());
+    }
+    catch (NumberFormatException e) {
+      holder.registerProblem(scalarValue, "Numeric value expected");
+    }
+  }
 }