From efe3d3e29f9de3d9ac5803a4c778951351ba9d9e Mon Sep 17 00:00:00 2001 From: "Adam D. Ruppe" Date: Mon, 2 Dec 2013 13:01:06 -0500 Subject: [PATCH] new literal helpers varArray and varObject --- jsvar.d | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/jsvar.d b/jsvar.d index 8b18760..fb916ff 100644 --- a/jsvar.d +++ b/jsvar.d @@ -260,6 +260,36 @@ template json(string s) { } } +// literals + +// var a = varArray(10, "cool", 2); +// assert(a[0] == 10); assert(a[1] == "cool"); assert(a[2] == 2); +var varArray(T...)(T t) { + var a = var.emptyArray; + foreach(arg; t) + a ~= var(arg); + return a; +} + +// var a = varObject("cool", 10, "bar", "baz"); +// assert(a.cool == 10 && a.bar == "baz"); +var varObject(T...)(T t) { + var a = var.emptyObject; + + string lastString; + foreach(idx, arg; t) { + static if(idx % 2 == 0) { + lastString = arg; + } else { + assert(lastString !is null); + a[lastString] = arg; + lastString = null; + } + } + return a; +} + + private real stringToNumber(string s) { real r; try {