| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- import { VarType } from '../../types'
 - import type { OutputVar } from './types'
 - import { CodeLanguage } from './types'
 - 
 - export const extractFunctionParams = (code: string, language: CodeLanguage) => {
 -   if (language === CodeLanguage.json)
 -     return []
 - 
 -   const patterns: Record<Exclude<CodeLanguage, CodeLanguage.json>, RegExp> = {
 -     [CodeLanguage.python3]: /def\s+main\s*\((.*?)\)/,
 -     [CodeLanguage.javascript]: /function\s+main\s*\((.*?)\)/,
 -   }
 -   const match = code.match(patterns[language])
 -   const params: string[] = []
 - 
 -   if (match?.[1]) {
 -     params.push(...match[1].split(',')
 -       .map(p => p.trim())
 -       .filter(Boolean)
 -       .map(p => p.split(':')[0].trim()),
 -     )
 -   }
 - 
 -   return params
 - }
 - export const extractReturnType = (code: string, language: CodeLanguage): OutputVar => {
 -   const codeWithoutComments = code.replace(/\/\*\*[\s\S]*?\*\//, '')
 -   console.log(codeWithoutComments)
 - 
 -   const returnIndex = codeWithoutComments.indexOf('return')
 -   if (returnIndex === -1)
 -     return {}
 - 
 -   // returnから始まる部分文字列を取得
 -   const codeAfterReturn = codeWithoutComments.slice(returnIndex)
 - 
 -   let bracketCount = 0
 -   let startIndex = codeAfterReturn.indexOf('{')
 - 
 -   if (language === CodeLanguage.javascript && startIndex === -1) {
 -     const parenStart = codeAfterReturn.indexOf('(')
 -     if (parenStart !== -1)
 -       startIndex = codeAfterReturn.indexOf('{', parenStart)
 -   }
 - 
 -   if (startIndex === -1)
 -     return {}
 - 
 -   let endIndex = -1
 - 
 -   for (let i = startIndex; i < codeAfterReturn.length; i++) {
 -     if (codeAfterReturn[i] === '{')
 -       bracketCount++
 -     if (codeAfterReturn[i] === '}') {
 -       bracketCount--
 -       if (bracketCount === 0) {
 -         endIndex = i + 1
 -         break
 -       }
 -     }
 -   }
 - 
 -   if (endIndex === -1)
 -     return {}
 - 
 -   const returnContent = codeAfterReturn.slice(startIndex + 1, endIndex - 1)
 -   console.log(returnContent)
 - 
 -   const result: OutputVar = {}
 - 
 -   const keyRegex = /['"]?(\w+)['"]?\s*:(?![^{]*})/g
 -   const matches = returnContent.matchAll(keyRegex)
 - 
 -   for (const match of matches) {
 -     console.log(`Found key: "${match[1]}" from match: "${match[0]}"`)
 -     const key = match[1]
 -     result[key] = {
 -       type: VarType.string,
 -       children: null,
 -     }
 -   }
 - 
 -   console.log(result)
 - 
 -   return result
 - }
 
 
  |