ff_i_token
Custom token functions.
Refer to pages Custom Tokens, ff_i_color, and ff_i_token for additional details.
Printing a custom token might not look complete since non-printable characters might not be displayed in your console.
Source code
// @code
// -----------------------------------------------------------------------------
//! @brief Set the value for a custom token.
//! @param nToken Token value. Must be positive and 0-9 are reserved.
//! @param sValue Value to set.
void SetCustomTokenEx(int nToken, string sValue);
void SetCustomTokenEx(int nToken, string sValue)
{
object oModule = GetModule();
if (nToken <= 9)
return;
SetCustomToken(nToken, sValue);
// Table: nToken, sValue
string sSQL = "CREATE TABLE tokens(id INT NON NULL, token STRING NON NULL);";
sqlquery sqlQuery = SqlPrepareQueryObject(oModule, sSQL);
SqlStep(sqlQuery);
sSQL = "INSERT INTO tokens VALUES(@nToken, @sToken);";
sqlQuery = SqlPrepareQueryObject(oModule, sSQL);
SqlBindInt(sqlQuery, "@nToken", nToken);
SqlBindString(sqlQuery, "@sToken", sValue);
SqlStep(sqlQuery);
}
// -----------------------------------------------------------------------------
//! @brief Get the value for a custom token, that was set with SetCustomTokenEx
//! @param nToken Token value. Must be positive and 0-9 are reserved.
string GetCustomTokenEx(int nToken);
string GetCustomTokenEx(int nToken)
{
object oModule = GetModule();
if (nToken <= 9)
return "";
string sSQL = "SELECT FROM tokens WHERE id = @nToken;";
sqlquery sqlQuery = SqlPrepareQueryObject(oModule, sSQL);
SqlBindInt(sqlQuery, "@nToken", nToken);
if (SqlStep(sqlQuery))
return SqlGetString(sqlQuery, 0);
return "";
}
// -----------------------------------------------------------------------------
//! @brief Returns token usable for ordering strings.
//! @param nOrder Order (0 - 255)
//! @return An order token (eg: \<c001>)
string GetOrderToken(int nOrder);
string GetOrderToken(int nOrder)
{
return "<c" + GetStringLeftPad(IntToString(nOrder), 3, "0") + ">";
}
// -----------------------------------------------------------------------------
//! @brief Returns token usable for coloring strings.
//! @param nColor A RGB color value (0 - 0xFFFFFF)
//! @param bPrintable Limit the token to printable characters
//! @return An color token
string GetColorToken(int nColor, int bPrintable = FALSE);
string GetColorToken(int nColor, int bPrintable = FALSE)
{
// Don't use GetRGB from fi_color to avoid circular includes
int nRed = clamp((nColor >> 16) & 0xFF, 1, 255);
int nGreen = clamp((nColor >> 8) & 0xFF, 1, 255);
int nBlue = clamp(nColor & 0xFF, 1, 255);
string sFrom;
if (bPrintable)
sFrom = ASCII_TOKEN_CHARS;
else
sFrom = ASCII_CHARS;
return "<c" + GetSubString(sFrom, nRed, 1) + GetSubString(sFrom, nGreen, 1) + GetSubString(sFrom, nBlue, 1) + ">";
}
// -----------------------------------------------------------------------------
//! @brief Returns token usable for closing other tokens.
//! @return A \</c> token.
string GetCloseColorToken();
string GetCloseColorToken()
{
return "</c>";
}
// -----------------------------------------------------------------------------
//! @brief Returns a tokenized string.
//! @param sString Input string
//! @param sToken Token (eg: "\<cxxx>")
//! @return String wrapped in token start and close
string GetCustomColoredString(string sString, string sToken);
string GetCustomColoredString(string sString, string sToken)
{
return sToken + sString + GetCloseColorToken();
}
// -----------------------------------------------------------------------------
//! @brief Replace <XXX> color aliases with CUSTOMxxx tokens.
//! @param sString Input string
//! @return "<XXX>" alias replaced by CUSTOMxxx token
string ReplaceColorCustomTokens(string sString);
string ReplaceColorCustomTokens(string sString)
{
if (FindSubString(sString, "<") == -1)
return sString;
string sSQL = "SELECT tokenaliases.alias, tokenaliases.id FROM tokenaliases;";
sqlquery sqlQuery = SqlPrepareQueryObject(GetModule(), sSQL);
while (SqlStep(sqlQuery))
{
string sSource = "<" + SqlGetString(sqlQuery, 0) + ">";
string sDest = "<CUSTOM" + SqlGetString(sqlQuery, 1) + ">";
sString = GetStringReplace(sString, sSource, sDest);
}
return sString;
}