UNPKG

coldstitch

Version:

A code generation library, that helps you craft code snippets in code for multiple languages

17 lines (16 loc) 3.01 kB
"use strict";const T={indentSize:2,indentChar:" ",stringQuote:'"'},m={indentSize:4,indentChar:" ",stringQuote:'"'},d=T,b={js:T,python:m,swift:m,java:m,kotlin:m};function j(t){return{...d,...b[t??""]??{}}}class E{resolve(n){throw new Error("Not implemented")}}function y(t){return t&&typeof t=="object"&&"namespace"in t&&"name"in t}function h(t,n,r=d){const c=Array.isArray(t),[e,o]=c?n.arrayTokens:n.objectTokens,{indentSize:a,indentChar:i,indentLevel:u=0,inlineArrayElements:S=!0}={...d,...r},$=i.repeat(a*u),g=i.repeat(a*(u+1)),A=(s,f)=>{let l;return Array.isArray(s)?l=h(s,n,{...r,indentLevel:S?u:u+1}):I(s)?l=h(s,n,{...r,indentLevel:u+1}):typeof s=="function"?l=`"${s.name} function reference"`:l=n.formatValue(s),c?l:`${n.formatKey(f)}${n.assignToken}${l}`};if(c){const s=t.map(f=>A(f));return S?`${e}${s.join(", ")}${o}`:s.length===0?`${e}${o}`:`${e} ${g}${s.join(`, `+g)} ${$}${o}`}else{const s=[];for(const f in t)s.push(A(t[f],f));return s.length===0?`${e}${o}`:`${e} ${g}${s.join(`, `+g)} ${$}${o}`}}function _(t){const n=t;return Object.defineProperty(n,"raw",{value:t}),n}function L(t){var n;return((n=/^(\s*)/.exec(t))==null?void 0:n[1])??""}function C(t){return t[t.length-1]}function k(t){const n={};return t.forEach(r=>{n[r.namespace]||(n[r.namespace]=[]),n[r.namespace].push(r)}),n}function w(t,n='"'){return t.replace(new RegExp(n,"g"),`\\${n}`)}function I(t){return t!==null&&typeof t=="object"&&t.constructor===Object}function P(t){return t===null||typeof t!="object"&&typeof t!="function"&&!Array.isArray(t)}const N=Symbol("omitLine"),O="__COLDSNIP_OMIT_LINE__";function R(){return N}class p{constructor(n,r=[]){this.literals=n,this.values=r}static fromString(n){return new p(_([n]))}get imports(){const n=[];return this.values.forEach(r=>{y(r)&&n.push(r)}),n}resolveNestedCode(n,r,c){const o=n.toCodeString(c).split(` `),a=o.shift()??"",i=o.map(u=>r+u).join(` `);return a+` `+i}resolveValues(n){const r=this.imports,c=(e,o)=>{var a;if(e instanceof E)return e.resolve(r);if(e===N)return O;if(e instanceof p){const i=C(((a=this.literals[o])==null?void 0:a.split(` `))??[])??"",u=L(i);return this.resolveNestedCode(e,u,n).trim()}return Array.isArray(e)?e.map(i=>c(i,o)).join(` `):y(e)?e.toString():e===!1||e===void 0?"":e};return this.values.map(c)}get unindent(){const n=this.literals[0],r=n.startsWith(` `)?n.slice(1):n;return L(r)}toString(){return this.toCodeString()}toCodeString(n){var a;const r=(a=this.imports[0])==null?void 0:a.language,c=n??j(r),e=this.unindent,o=this.resolveValues(c);return String.raw(this.literals,...o).split(` `).filter(i=>i.includes(O)===!1).map(i=>i.startsWith(e)?i.substring(e.length).trimEnd():i).join(` `).trim()}}function V(t,...n){return new p(t,n)}exports.CodeImpl=p;exports.ImportResolver=E;exports.code=V;exports.escapeStringQuotes=w;exports.formatOptionsForLanguage=j;exports.groupTypesByNamespace=k;exports.isPlainObject=I;exports.isScalar=P;exports.isTypeRef=y;exports.omitLine=R;exports.stringify=h; //# sourceMappingURL=index-lPwhCPkI.cjs.map