Spaces:
Sleeping
Sleeping
| export const fileToBase64 = (file: File): Promise<string> => { | |
| return new Promise((resolve, reject) => { | |
| const reader = new FileReader(); | |
| reader.readAsDataURL(file); | |
| reader.onload = () => { | |
| const result = reader.result as string; | |
| // remove "data:*/*;base64," prefix | |
| resolve(result.split(',')[1]); | |
| }; | |
| reader.onerror = (error) => reject(error); | |
| }); | |
| }; | |
| export const parseCsv = (csvText: string): Record<string, string>[] => { | |
| const lines = csvText.trim().split('\n'); | |
| if (lines.length < 2) return []; | |
| const headers = lines[0].split(',').map(h => h.trim()); | |
| const data = []; | |
| const regex = /(?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*)/g; | |
| for (let i = 1; i < lines.length; i++) { | |
| const values = []; | |
| let match; | |
| while ((match = regex.exec(lines[i]))) { | |
| let value = match[1]; | |
| if (value.startsWith('"') && value.endsWith('"')) { | |
| value = value.substring(1, value.length - 1).replace(/""/g, '"'); | |
| } | |
| values.push(value.trim()); | |
| } | |
| if (values.length === headers.length) { | |
| const entry = headers.reduce((obj, header, index) => { | |
| obj[header] = values[index]; | |
| return obj; | |
| }, {} as Record<string, string>); | |
| data.push(entry); | |
| } | |
| } | |
| return data; | |
| }; | |