Add prompt type parser
This commit is contained in:
7
pnpm-lock.yaml
generated
7
pnpm-lock.yaml
generated
@@ -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:
|
||||
|
||||
@@ -1468,3 +1468,49 @@ async function editDisplay(text){
|
||||
}
|
||||
return rt
|
||||
}
|
||||
|
||||
export type PromptParsed ={[key:string]:string|PromptParsed}
|
||||
|
||||
export async function promptTypeParser(prompt:string):Promise<string | PromptParsed>{
|
||||
//XML type
|
||||
try {
|
||||
const parser = new DOMParser()
|
||||
const dom = `<root>${prompt}</root>`
|
||||
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<node.children.length;i++){
|
||||
const child = node.children[i]
|
||||
data[child.tagName] = parseNode(child)
|
||||
}
|
||||
|
||||
return data
|
||||
}
|
||||
|
||||
const pnresult = parseNode(root)
|
||||
|
||||
if(typeof(pnresult) === 'string'){
|
||||
throw new Error('XML Parse Error') //fallback to other parser
|
||||
}
|
||||
|
||||
return pnresult
|
||||
|
||||
} catch (error) {
|
||||
|
||||
}
|
||||
|
||||
return prompt
|
||||
}
|
||||
Reference in New Issue
Block a user