53 lines
1.7 KiB
Plaintext
53 lines
1.7 KiB
Plaintext
#ifndef _MR_STRING_HELPERS_
|
|
#define _MR_STRING_HELPERS_
|
|
objectdef MRStringHelpers
|
|
{
|
|
|
|
;;;
|
|
;;; Returns the last word in a string
|
|
;;; @param str The string to get the last word from
|
|
;;; @return The last word in the string
|
|
static member:string GetLastWord(string str)
|
|
{
|
|
variable int tokenCount = ${str.Count[" "]}
|
|
return ${str.Token[${tokenCount:Inc}, " "].Trim}
|
|
}
|
|
|
|
;;;
|
|
;;; Checks if the given string appears to be a roman numeral
|
|
;;; @param value The string to check
|
|
;;; @return TRUE if the string appears to be a roman numeral, FALSE otherwise
|
|
static member:bool IsRomanNumearl(string value)
|
|
{
|
|
variable int currentIndex
|
|
for (currentIndex:Set[1] ; ${currentIndex} < ${value.Length} ; currentIndex:Inc)
|
|
{
|
|
if !${value.Mid[${currentIndex}, 1].Equal["i"]} && !${value.Mid[${currentIndex}, 1].Equal["v"]} && !${value.Mid[${currentIndex}, 1].Equal["x"]}
|
|
{
|
|
return FALSE
|
|
}
|
|
}
|
|
|
|
return TRUE
|
|
}
|
|
|
|
;;;
|
|
;;; Strips roman numerals from the end of a string, andy when working with spell names
|
|
;;; @param str The string to strip roman numerals from
|
|
;;; @return The string with roman numerals stripped from the end
|
|
static member:string StripRomanNumerals(string str)
|
|
{
|
|
variable string lastWord = ${MRStringHelpers.GetLastWord[${str}]}
|
|
|
|
|
|
if ${MRStringHelpers.IsRomanNumearl[${lastWord}]}
|
|
{
|
|
variable int baseStringLength
|
|
baseStringLength:Set[${str.Length} - ${lastWord.Length}]
|
|
return ${str.Mid[1, ${baseStringLength}].Trim}
|
|
}
|
|
|
|
return ${str}
|
|
}
|
|
}
|
|
#endif |