@vulppi/env
Version:
A ENV utilities for Vulppi
8 lines (7 loc) • 881 B
JavaScript
;(()=>{var p=/^\s*#/,u=/^[a-zA-Z0-9_]+=.*/,c=/^[a-zA-Z0-9_]+=.*/m;function E(a){let o=a.split(`
`),t=[],e=-1,r=[],s="";return o.forEach(n=>{if(p.test(n)){r.push(n.replace(p,"").trim());return}if(!u.test(n)){s&&(t[e].value+=`
`+n,/["']\s*$/.test(n)&&s===n.trim().at(-1)&&(s="",t[e].value=t[e].value.trim().replace(/^["']/g,"").replace(/["']$/g,"")));return}let[l,i]=n.split("=").map(m=>m.trim());e++,t[e]=t[e]||{key:"",value:"",description:""},t[e].key=l,t[e].value=i,/^\s*['"]/.test(i)&&(!/["']\s*$/.test(i)||i.trim().at(-1)!==i.trim().at(0))&&(s=i[0]),r.length>0&&(t[e].description=r.join(`
`),r=[])}),t}function v(a){return a.map(({key:o,value:t,description:e=""},r)=>{if(!o)throw new Error(`Element '${r}' is missing a key`);if(!t)throw new Error(`Element '${r}' is missing a value`);let s=`${o}=${t}`;return e?`# ${e.replace(/\n/g,`
# `)}
${s}`:s}).join(`
`)}})();