Pellustro: taxonomyUtility

by Nalin Sajwan

JavaScript

// Text to Json and vice versa.
var taxonomyUtility = {
    textToTreeConvertion: function(text) {
        // console.log("[textToTreeConvertion] text", text);

        var taxoFormat = [];

        var working = {};

        var str = text.trim();

        var strAr = str.split("\n");

        var strObj =[];

        for(i in strAr) {
            var tempStr = strAr[i];
            var tempObj = {};
            tempObj["level"] =  (tempStr.match(/\t/g) || []).length;

            tempObj["value"] = tempStr.replace(/\t/g,"").replace(/- /g, "").trim();

            strObj.push(tempObj);
        };

        addToJson(strObj);

        var taxonomies = taxoFormat.map(function(v) {
            return v.name.split("/");
        });

        for (var i = 0; i < taxonomies.length; i++) {
            addToHeirarchy(taxonomies[i], 1, working);
        };

        // console.log("working ==> ",working);

        return working;

        function addToHeirarchy(val, level, heirarchy) {
            // console.log(val, level, heirarchy,val[level],val[level] && val[level] !== "");
            if (val[level]) {
                if (!heirarchy.hasOwnProperty(val[level])) {

                    heirarchy[val[level]] = {};

                    if(typeof val[level+1] == "undefined") {
                        heirarchy[val[level]] = 0;
                    }
                }
                
                addToHeirarchy(val, level + 1, heirarchy[val[level]]);
            }
        };

        function addToJson(objAr) {
            var str = "";
            for(var i=0;i<objAr.length;i++) {
                str += "/"+objAr[i].value;
                if(typeof objAr[i+1] == "undefined") {
                    taxoFormat.push({'name':str});
                    break;
                } else {
                    if(objAr[i].level == objAr[i+1].level) {
                        taxoFormat.push({'name':str});
                        objAr.splice(i,1);
                       ...