74 lines
2.0 KiB
TypeScript
74 lines
2.0 KiB
TypeScript
import * as fs from 'fs';
|
|
|
|
interface MuscleEntry {
|
|
muscle: string;
|
|
location: string;
|
|
origin: string;
|
|
insertion: string;
|
|
artery: string;
|
|
nerve: string;
|
|
action: string;
|
|
antagonist: string;
|
|
o: number;
|
|
ta: number;
|
|
}
|
|
|
|
function parseMuscleTable(table: string): MuscleEntry[] {
|
|
const rows = table.split(/\|- style="vertical-align: top;"/).slice(1); // Split rows and ignore header
|
|
|
|
return rows.map(row => {
|
|
const columns = row.split('\n').map(chopUntilPipe);
|
|
columns.shift();
|
|
// .replace(/\{\{[^}]+\}\}/g, '') // Remove templates like {{...}}
|
|
// .replace(/<[^>]+>/g, '') // Remove HTML tags
|
|
// .split('|').slice(1); // Split columns and ignore the first empty element
|
|
|
|
return {
|
|
muscle: extractText(columns[0]),
|
|
location: extractText(columns[1]),
|
|
origin: extractText(columns[2]),
|
|
insertion: extractText(columns[3]),
|
|
artery: extractText(columns[4]),
|
|
nerve: extractText(columns[5]),
|
|
action: extractText(columns[6]),
|
|
antagonist: extractText(columns[7] || '?'),
|
|
o: parseInt(columns[8] || '0', 10),
|
|
ta: parseInt(columns[9] || '0', 10),
|
|
};
|
|
});
|
|
}
|
|
|
|
function extractText(input: string): string {
|
|
return input
|
|
.replace(/\[\[(.*?)\|(.*?)\]\]/g, "$2")
|
|
.replace(/\[\[(.*?)\]\]/g, "$1")
|
|
.replace(/\<ref[^>]*>.*?<\/ref>/g, '') // Remove references like <ref>...</ref>
|
|
.trim();
|
|
}
|
|
|
|
|
|
function chopUntilPipe(input: string): string {
|
|
const pipeIndex = input.indexOf('|');
|
|
return pipeIndex >= 0 ? input.slice(pipeIndex + 1) : input;
|
|
}
|
|
|
|
// Read data from file
|
|
fs.readFile('data.txt', 'utf8', (err, data) => {
|
|
if (err) {
|
|
console.error('Error reading file:', err);
|
|
return;
|
|
}
|
|
|
|
const parsedData = parseMuscleTable(data);
|
|
// console.log(parsedData[0]);
|
|
console.log(parsedData);
|
|
|
|
fs.writeFile('muscle-data.json', JSON.stringify(parsedData, null, 2), (err) => {
|
|
if (err) {
|
|
console.error('Error writing file:', err);
|
|
return;
|
|
}
|
|
console.log('Data written to muscle-data.json');
|
|
});
|
|
});
|