diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 024b1439..32481e4a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4745,7 +4745,7 @@ packages: dependencies: lilconfig: 3.0.0 postcss: 8.4.33 - yaml: 2.3.4 + yaml: 2.4.2 dev: true /postcss-nested@6.0.1(postcss@8.4.33): @@ -6267,9 +6267,10 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml@2.3.4: - resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + /yaml@2.4.2: + resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} engines: {node: '>= 14'} + hasBin: true dev: true /yargs-parser@18.1.3: diff --git a/src/ts/parser.ts b/src/ts/parser.ts index 7128f9a7..2163c5dc 100644 --- a/src/ts/parser.ts +++ b/src/ts/parser.ts @@ -1468,3 +1468,49 @@ async function editDisplay(text){ } return rt } + +export type PromptParsed ={[key:string]:string|PromptParsed} + +export async function promptTypeParser(prompt:string):Promise{ + //XML type + try { + const parser = new DOMParser() + const dom = `${prompt}` + const xmlDoc = parser.parseFromString(dom, "text/xml") + const root = xmlDoc.documentElement + + const errorNode = root.getElementsByTagName('parsererror') + + if(errorNode.length > 0){ + throw new Error('XML Parse Error') //fallback to other parser + } + + const parseNode = (node:Element):string|PromptParsed => { + if(node.children.length === 0){ + return node.textContent + } + + const data:{[key:string]:string|PromptParsed} = {} + + for(let i=0;i