@gram-data/gram-stringify
Version:
Pretty print gram data graphs
3 lines (2 loc) • 3.02 kB
JavaScript
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(((e=e||self).gram=e.gram||{},e.gram.stringify={}))}(this,(function(e){"use strict";var n=function(e){return!!e.type&&"path"===e.type},r=function(e){return n(e)&&e.children&&0===e.children.length&&"ø"!==e.id},t=function(e){return!!e.type&&!!e.value&&"property"!==e.type},i=function(e){switch(e.type){case"integer":case"boolean":case"octal":case"hexadecimal":case"decimal":return e.value;case"string":return"`"+e.value+"`";case"tagged":return e.tag+"`"+e.value+"`";case"measurement":return""+e.value+e.unit;default:return function(e){throw new Error("Unexpected object: "+e)}(e)}},c=function(e){return function(e){return Array.isArray(e)&&t(e[0])}(e)?"["+e.map((function(e){return i(e)})).join(",")+"]":t(e)?i(e):l(e)},u=function(e){return"{"+Array.from(e,(function(e,n){return(n>0?",":"")+e[0]+":"+c(e[1])})).join("")+"}"},o=function(e){return"["+e.map(h).join(",")+"]"},l=function(e){return"{"+Object.entries(e).map((function(e,n){return(n>0?",":"")+e[0]+":"+h(e[1])})).join("")+"}"},a=function(e){var n=e.id||"",r=e.labels&&e.labels.length>0?":"+e.labels.join(":"):"",t=e.record&&0!==e.record.size?u(e.record):"";return""+n+r+(((n.length>0||r.length>0)&&t.length)>0?" ":"")+t},d=function(e){return"("+a(e)+")"},f=function(e){var t,i;return e?""+(n(i=e)&&"ø"===i.id?"":r(e)?d(e):function(e){return n(e)&&void 0!==e.kind&&"pair"!==e.kind&&void 0!==e.children&&e.children.every((function(e){return r(e)}))}(e)?function e(n){var t="left"===n.kind?"<-":"-",i="right"===n.kind?"->":"-",c=r(n.children[0])?d(n.children[0]):e(n.children[0]),u=r(n.children[1])?d(n.children[1]):e(n.children[1]),o=a(n);return""+c+t+(o.length>0?"["+o+"]":"")+i+u}(e):(t=e).id||t.labels||t.record?function(e){var n=e.children&&e.children.length>0?f(e.children[0]):"",r=e.children&&e.children.length>1?f(e.children[1]):"",t="left"===e.kind?"<--":"right"===e.kind?"--\x3e":"either"===e.kind?"--":n.length>0&&r.length>0?",":"";return"["+a(e)+(t.length>0?" ":"")+t+(n.length>0?" ":"")+n+(r.length>0?" ":"")+r+"]"}(e):function(e){var n=e.children&&e.children.length>0?f(e.children[0]):"",r=e.children&&e.children.length>1?f(e.children[1]):"";return n+","+(r.length>0?" ":"")+r}(e)):""},h=function e(r){var a,d;if(Array.isArray(r))return r.length>0?n(r[0])?r.map(e).join(" "):o(r):"[]";if(void 0!==r.type)switch(r.type){case"path":return f(r);case"seq":return e(r.children);case"property":return(d=r).name+":"+c(d.value);default:return t(r)?i(r):l(r)}else if("object"==typeof r)return"object"==typeof(a=r)&&a instanceof Map?u(r):l(r);throw new Error("Can't stringify <"+r+">")},s=function(e){if(n(e))return h(e);if((r=e).type&&"seq"===r.type)return h(e);throw new Error("Don't know how to stringify \""+e.type+'"');var r};e.gramStringifyPlugin=function(){this.Compiler=s},e.stringify=h,e.toGram=h,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=gram-stringify.umd.production.min.js.map