diff options
Diffstat (limited to 'glcdskin/function.c')
-rw-r--r-- | glcdskin/function.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/glcdskin/function.c b/glcdskin/function.c index c6089bc..6d96c57 100644 --- a/glcdskin/function.c +++ b/glcdskin/function.c @@ -360,8 +360,21 @@ cType cSkinFunction::Evaluate(void) const case variable: { cSkinVariable * variable = mSkin->GetVariable(mVariableId); - if (variable) - return variable->Value(); + if (variable) { + cType rv = variable->Value(); + if (rv.IsString()) { + std::string val = rv; + if (val.find("{") != std::string::npos || val.find("#") != std::string::npos) { + cSkinString *result = new cSkinString(mObject, false); + if (result->Parse(val)) { + val = (std::string) result->Evaluate(); + rv = cType(val); + } + delete result; + } + } + return rv; + } return false; } |