Howto:Serializing Nasal data structures: Difference between revisions

(→‎Proof of concept: beautified)
Line 66: Line 66:


var serializeVector = func(vector) {
var serializeVector = func(vector) {
retVal = "[";
    retVal = "[";
foreach(var item; vector) {
    foreach(var item; vector) {
retVal ~= serialize(item) ~ ',';
    retVal ~= serialize(item) ~ ',';
}  
}  


Line 75: Line 75:


var serializeHash = func(hash) {
var serializeHash = func(hash) {
var retVal = "{";
    var retVal = "{";
foreach(var member; keys(hash)) {
    foreach(var member; keys(hash)) {
retVal ~= serialize(member) ~ ',';
    retVal ~= serialize(member) ~ ',';


}
}
Line 86: Line 86:


var serialize = func (data) {
var serialize = func (data) {
var type = typeof(data);
    var type = typeof(data);
if (type == "scalar") return data;
    if (type == "scalar") return data;
if (type == "vector") return serializeVector(data);
    if (type == "vector") return serializeVector(data);
if (type == "hash") return serializeHash(data);
    if (type == "hash") return serializeHash(data);
if (type == "ghost" or type == "func") return "nil";
    if (type == "ghost" or type == "func") return "nil";
die("cannot serialize unsupported data type:", type);
    die("cannot serialize unsupported data type:", type);
}  
}  


Line 100: Line 100:
# populate the vector with elements with [index, index^2]
# populate the vector with elements with [index, index^2]
for (var i=0;i<=40;i+=1) {
for (var i=0;i<=40;i+=1) {
append(myVector,[i, i*i]);
    append(myVector,[i, i*i]);
}
}


574

edits