JSFiddle - React, Tailwind, and code Playground

by tonyleeper

JavaScript

/**
    Custom JavaScript Object Serializer
*/

var escapeQuotes = function (value) {
    return value.replace('"', '\\"');
};

var serialize = function (obj) {

    var parts = [];

    for (var prop in obj) {
        if (obj.hasOwnProperty(prop)) {
            switch (Object.prototype.toString.call(obj[prop])) {
                /* primitive data types */
                case "[object Null]":
                    parts.push('N:"' + prop + '":null');
                    break;

                case "[object Undefined]":
                    throw new Error("Unsupported Type Exception");
                    break;

                case "[object Number]":
                case "[object Boolean]":
                    parts.push('B:"' + prop + '":' + obj[prop]);
                    break;

                case "[object String]":
                    parts.push('S:"' + prop + '":"' + escapeQuotes(obj[prop]) + '"');
                    break;

                    /* native objects */
                case "[object Array]":
                    break;

                case "[object Date]":
                    parts.push('D:"' + prop + '":' + obj[prop].getTime());
                    break;

                case "[object Error]":
                    throw new Error("Unsupported Type Exception");
                    break;

                case "[object Math]":
                    throw new Error("Unsupported Type Exception");
                    break;

                case "[object RegExp]":
                    throw new Error("Unsupported Type Exception");
                    break;

                case "[object Function]":
                    // ignore functions?
                    break;

                    /* user defined objects */
                case "[object Object]":
                    parts.push('O:"' + prop + '":' + serialize(obj[prop]));
                    break;
            }
        }
    }

    return "{" + parts.join(",") + "}";
};

var splitSpecial =...