shnippet
Version:
A snippet extraction tool for various programming languages.
5 lines (4 loc) • 1.15 kB
JavaScript
var p=class{constructor(t={}){this.cache=new Map;this.languageToDirectory={python:"py",typescript:"ts",kotlin:"kt",javascript:"js"};this.config={baseUrl:"http://localhost:3000/snippets",supportedLanguages:["python","kotlin"],...t}}updateConfig(t){this.config={...this.config,...t},this.cache.clear()}async getSnippet(t){if(this.cache.has(t))return this.cache.get(t);let o=this.config.supportedLanguages||["python","kotlin"],n={},i={},a=this.config.defaultImports||{python:["from typing import Any"],kotlin:["import java.util.*"]};try{for(let e of o)try{let s=this.languageToDirectory[e]||e,c=`${this.config.baseUrl}/${s}/${t}.snippet.txt`,g=await fetch(c);g.ok&&(n[e]=await g.text(),a[e]&&(i[e]=a[e]))}catch(s){console.error(`Error fetching ${e} snippet for ${t}:`,s)}let r={name:t,languages:Object.keys(n),defaultLanguage:o[0],content:n,...Object.keys(i).length>0&&{imports:i}};return this.cache.set(t,r),r}catch(r){throw console.error(`Error fetching snippet ${t}:`,r),r}}formatSnippet(t,o){return o.showLineNumbers?t.split(`
`).map((n,i)=>`${i+1} | ${n}`).join(`
`):t}},l=new p;export{l as snippetManager};
//# sourceMappingURL=client.browser.js.map