+/*
+ param data as a two-level array
+
+ data = param.data;
+ */
+static int ejs_param_data(MprVarHandle eid, int argc, char **argv)
+{
+ struct param_context *ctx;
+ struct MprVar ret;
+ struct param_section *sec;
+
+ if (argc != 0) {
+ ejsSetErrorMsg(eid, "param.data does not take arguments");
+ return -1;
+ }
+
+ ctx = mprGetThisPtr(eid, "param");
+ mprAssert(ctx);
+
+ ret = mprObject("array");
+
+ for (sec = ctx->sections; sec; sec = sec->next) {
+ struct MprVar ps = mprObject("array");
+ struct param *p;
+
+ for (p = sec->parameters; p; p = p->next) {
+ mprSetVar(&ps, p->name, mprString(p->value));
+ }
+
+ mprSetVar(&ret, sec->name, ps);
+ }
+
+ mpr_Return(eid, ret);
+
+ return 0;
+}
+