in nuget-common/src/jetbrains/buildServer/nuget/common/version/VersionConstraint.java [22:89]
public static VersionConstraint valueOf(@Nullable String value) {
if(StringUtil.isEmpty(value)) return null;
value = value.trim();
final VersionConstraint versionSpec = new VersionConstraint();
final SemanticVersion version = SemanticVersion.valueOf(value);
if ( version != null )
{
versionSpec.myIsMinInclusive = true;
versionSpec.myMinVersion = version;
return versionSpec;
}
if ( value.length() < 3 ) return null;
switch ( value.charAt( 0 ) )
{
case '[':
versionSpec.myIsMinInclusive = true;
break;
case '(':
versionSpec.myIsMinInclusive = false;
break;
default:
return null;
}
switch ( value.charAt( value.length() - 1 ) )
{
case ']':
versionSpec.myIsMaxInclusive = true;
break;
case ')':
versionSpec.myIsMaxInclusive = false;
break;
default:
return null;
}
final String valueTrimmed = value.substring(1, value.length() - 1);
final List<String> parts = StringUtil.split(valueTrimmed, ",");
String minVersionString = "";
String maxVersionString = "";
if(parts.size() == 2){
minVersionString = parts.get(0);
maxVersionString = parts.get(1);
} else if (parts.size() == 1){
if(valueTrimmed.indexOf(',') == -1){
minVersionString = maxVersionString = parts.get(0);
} else{
if(valueTrimmed.startsWith(",")){
maxVersionString = parts.get(0);
} else if(valueTrimmed.endsWith(",")){
minVersionString = parts.get(0);
} else return null;
}
} else return null;
SemanticVersion minVersion = SemanticVersion.valueOf(minVersionString);
SemanticVersion maxVersion = SemanticVersion.valueOf(maxVersionString);
if ( minVersion == null && maxVersion == null ) return null;
versionSpec.myMinVersion = minVersion;
versionSpec.myMaxVersion = maxVersion;
return versionSpec;
}