|
|
@ -409,9 +409,8 @@ public final function MutableText UpperMutableCopy( |
|
|
|
* |
|
|
|
* |
|
|
|
* Valid names are case-insensitive `BaseText`s that: |
|
|
|
* Valid names are case-insensitive `BaseText`s that: |
|
|
|
* 1. No longer than 50 characters long; |
|
|
|
* 1. No longer than 50 characters long; |
|
|
|
* 2. Contain only ASCII characters, digits and '.' / '_' characters; |
|
|
|
* 2. Contain only ASCII letters, digits and '.' / '_' characters; |
|
|
|
* 3. Has to start with a latin letter or '_'; |
|
|
|
* 3. Empty `BaseText` is not considered a valid name. |
|
|
|
* 4. Empty `BaseText` is not considered a valid name. |
|
|
|
|
|
|
|
* |
|
|
|
* |
|
|
|
* @return `true` if caller `BaseText` contains a valid config object name and |
|
|
|
* @return `true` if caller `BaseText` contains a valid config object name and |
|
|
|
* `false` otherwise. |
|
|
|
* `false` otherwise. |
|
|
@ -426,16 +425,7 @@ public final function bool IsValidName() |
|
|
|
if (IsEmpty()) return false; |
|
|
|
if (IsEmpty()) return false; |
|
|
|
if (GetLength() > 50) return false; |
|
|
|
if (GetLength() > 50) return false; |
|
|
|
|
|
|
|
|
|
|
|
// Test first character separately, since it cannot be digit |
|
|
|
for (i = 0; i < GetLength(); i += 1) |
|
|
|
nextCharacter = GetCharacter(0); |
|
|
|
|
|
|
|
codePoint = nextCharacter.codePoint; |
|
|
|
|
|
|
|
isValidCodePoint = ( codePoint == 0x5F // '_' |
|
|
|
|
|
|
|
|| (0x41 <= codePoint && codePoint <= 0x5A) // 'A' to 'Z' |
|
|
|
|
|
|
|
|| (0x61 <= codePoint && codePoint <= 0x7A)); // 'a' to 'z' |
|
|
|
|
|
|
|
if (!isValidCodePoint) { |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
for (i = 1; i < GetLength(); i += 1) |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
nextCharacter = GetCharacter(i); |
|
|
|
nextCharacter = GetCharacter(i); |
|
|
|
codePoint = nextCharacter.codePoint; |
|
|
|
codePoint = nextCharacter.codePoint; |
|
|
|