diff --git a/libs/yscript/script.cpp b/libs/yscript/script.cpp index f7e1b575..93729a94 100644 --- a/libs/yscript/script.cpp +++ b/libs/yscript/script.cpp @@ -182,6 +182,18 @@ bool ScriptContext::copyFields(ObjList& stack, const ScriptContext& original, Ge return ok; } +// Add string parameters from list +void ScriptContext::addFields(const NamedList& list, const char* skipPrefix) +{ + if (TelEngine::null(skipPrefix)) + skipPrefix = 0; + for (const ObjList* o = list.paramList()->skipNull(); o; o = o->skipNext()) { + const NamedString* p = static_cast(o->get()); + if (!(skipPrefix && p->name().startsWith(skipPrefix))) + m_params.addParam(new ExpOperation(p->c_str(),p->name())); + } +} + void ScriptContext::fillFieldNames(ObjList& names) { bool checkDupl = !(YOBJECT(JsObject,this)); diff --git a/libs/yscript/yatescript.h b/libs/yscript/yatescript.h index 799a8f02..2843e889 100644 --- a/libs/yscript/yatescript.h +++ b/libs/yscript/yatescript.h @@ -1517,6 +1517,13 @@ public: */ virtual bool copyFields(ObjList& stack, const ScriptContext& original, GenObject* context); + /** + * Add string parameters from list + * @param list Parameters list + * @param skipPrefix Skip parameters whose name start with specified prefix + */ + virtual void addFields(const NamedList& list, const char* skipPrefix = "__"); + /** * Try to evaluate a single field searching for a matching context * @param stack Evaluation stack in use, field value must be pushed on it