57 lines
1.2 KiB
JavaScript
57 lines
1.2 KiB
JavaScript
export class CodeUtil {
|
|
|
|
codeType = []
|
|
|
|
constructor(codeType) {
|
|
if (!Array.isArray(codeType)) {
|
|
console.error('codeType should be an array')
|
|
return
|
|
}
|
|
this.codeType = codeType
|
|
}
|
|
|
|
scan(options = {}) {
|
|
return uni.scanCode(options)
|
|
}
|
|
|
|
async getCodeInfo(options) {
|
|
const { scanType, result } = await this.scan(options)
|
|
return this.parseCode(result)
|
|
}
|
|
|
|
makeCode(type, content) {
|
|
const t = this.codeType.indexOf(type)
|
|
|
|
if (t == -1) {
|
|
console.error(`codeType ${type} is undefined`, this.codeType)
|
|
return null
|
|
}
|
|
|
|
return JSON.stringify({
|
|
t,
|
|
c: content
|
|
})
|
|
}
|
|
|
|
parseCode(codeInfo) {
|
|
try {
|
|
const info = JSON.parse(codeInfo)
|
|
|
|
const { t, c } = info
|
|
|
|
const type = this.codeType[t]
|
|
|
|
if (type) return { type, content: c }
|
|
|
|
return { type: 'unknown', content: info }
|
|
|
|
} catch (err) {
|
|
|
|
console.error('parseCode error', err)
|
|
|
|
return { type: 'error', content: codeInfo }
|
|
}
|
|
}
|
|
}
|
|
|
|
export const codeUtil = new CodeUtil([]) |