mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[yaml, kubernetes, docker-compose] numeric types now have a switch to allow/disallow quoted values
This commit is contained in:
@@ -8,24 +8,32 @@ import com.intellij.codeInspection.ProblemsHolder;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.yaml.YAMLBundle;
|
||||
import org.jetbrains.yaml.psi.YAMLQuotedText;
|
||||
import org.jetbrains.yaml.psi.YAMLScalar;
|
||||
|
||||
@ApiStatus.Experimental
|
||||
public class YamlIntegerType extends YamlScalarType {
|
||||
private static final YamlIntegerType SHARED_INSTANCE = new YamlIntegerType();
|
||||
private static final YamlIntegerType SHARED_INSTANCE_NO_QUOTED_VALUES_ALLOWED = new YamlIntegerType(false);
|
||||
private static final YamlIntegerType SHARED_INSTANCE_QUOTED_VALUES_ALLOWED = new YamlIntegerType(true);
|
||||
|
||||
public static YamlIntegerType getInstance() {
|
||||
return SHARED_INSTANCE;
|
||||
private final boolean myQuotedValuesAllowed;
|
||||
|
||||
public static YamlIntegerType getInstance(boolean quotedValuesAllowed) {
|
||||
return quotedValuesAllowed ? SHARED_INSTANCE_QUOTED_VALUES_ALLOWED : SHARED_INSTANCE_NO_QUOTED_VALUES_ALLOWED;
|
||||
}
|
||||
|
||||
public YamlIntegerType() {
|
||||
public YamlIntegerType(boolean quotedValuesAllowed) {
|
||||
super("yaml:integer");
|
||||
myQuotedValuesAllowed = quotedValuesAllowed;
|
||||
setDisplayName("integer");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void validateScalarValue(@NotNull YAMLScalar scalarValue, @NotNull ProblemsHolder holder) {
|
||||
try {
|
||||
if (!myQuotedValuesAllowed && scalarValue instanceof YAMLQuotedText) {
|
||||
throw new NumberFormatException("no quoted values allowed");
|
||||
}
|
||||
//noinspection ResultOfMethodCallIgnored
|
||||
Integer.parseInt(scalarValue.getTextValue());
|
||||
}
|
||||
|
||||
@@ -52,11 +52,6 @@ public class YamlMetaClass extends YamlMetaType {
|
||||
return addFeature(new Field(name, YamlStringType.getInstance()));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected final Field addIntegerFeature(@NotNull String name) {
|
||||
return addScalarFeature(name, YamlIntegerType.getInstance());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected Field addBooleanFeature(@NotNull String name) {
|
||||
return addScalarFeature(name, YamlBooleanType.getSharedInstance());
|
||||
|
||||
@@ -8,24 +8,33 @@ import com.intellij.codeInspection.ProblemsHolder;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.yaml.YAMLBundle;
|
||||
import org.jetbrains.yaml.psi.YAMLQuotedText;
|
||||
import org.jetbrains.yaml.psi.YAMLScalar;
|
||||
|
||||
@ApiStatus.Experimental
|
||||
public class YamlNumberType extends YamlScalarType {
|
||||
private static final YamlNumberType SHARED_INSTANCE = new YamlNumberType();
|
||||
private static final YamlNumberType SHARED_INSTANCE_NO_QUOTED_VALUES_ALLOWED = new YamlNumberType(false);
|
||||
private static final YamlNumberType SHARED_INSTANCE_QUOTED_VALUES_ALLOWED = new YamlNumberType(true);
|
||||
|
||||
public static YamlNumberType getInstance() {
|
||||
return SHARED_INSTANCE;
|
||||
private final boolean myQuotedValuesAllowed;
|
||||
|
||||
public static YamlNumberType getInstance(boolean quotedValuesAllowed) {
|
||||
return quotedValuesAllowed ? SHARED_INSTANCE_QUOTED_VALUES_ALLOWED : SHARED_INSTANCE_NO_QUOTED_VALUES_ALLOWED;
|
||||
}
|
||||
|
||||
public YamlNumberType() {
|
||||
public YamlNumberType(boolean quotedValuesAllowed) {
|
||||
super("yaml:number");
|
||||
myQuotedValuesAllowed = quotedValuesAllowed;
|
||||
setDisplayName("number");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void validateScalarValue(@NotNull YAMLScalar scalarValue, @NotNull ProblemsHolder holder) {
|
||||
try {
|
||||
if (!myQuotedValuesAllowed && scalarValue instanceof YAMLQuotedText) {
|
||||
throw new NumberFormatException("no quoted values allowed");
|
||||
}
|
||||
|
||||
final String textValue = scalarValue.getTextValue();
|
||||
|
||||
// Float.parseFloat() successfully parses values like " 1.0 ", i.e. starting or ending with spaces,
|
||||
|
||||
Reference in New Issue
Block a user