mrbot/common/StringHelpers.iss

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