mirror of
https://github.com/kamranahmedse/developer-roadmap.git
synced 2025-08-19 15:43:49 +02:00
Add frontend technologies guide
This commit is contained in:
44
scripts/extract-guide-images.cjs
Normal file
44
scripts/extract-guide-images.cjs
Normal file
@@ -0,0 +1,44 @@
|
||||
// get all the base64 encoded images and save them to a file from the given markdown file
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const matter = require('gray-matter');
|
||||
|
||||
const guidePath = path.join(process.cwd(), 'src/data/guides');
|
||||
const tempDir = path.join(process.cwd(), '.temp');
|
||||
|
||||
const guideId = process.argv[2];
|
||||
if (!guideId) {
|
||||
console.error('Guide ID is required');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const guideContent = fs.readFileSync(
|
||||
path.join(guidePath, `${guideId}.md`),
|
||||
'utf8',
|
||||
);
|
||||
|
||||
// Create temp directory if it doesn't exist
|
||||
const guideTempDir = path.join(tempDir, guideId);
|
||||
if (!fs.existsSync(guideTempDir)) {
|
||||
fs.mkdirSync(guideTempDir, { recursive: true });
|
||||
}
|
||||
|
||||
const { data, content } = matter(guideContent);
|
||||
|
||||
// Find all base64 image references in the content
|
||||
const images = content.match(/\[(.+?)\]:\s+?<data:image\/([^;]+);base64,([^\s]+)/g);
|
||||
|
||||
if (images) {
|
||||
images.forEach((image) => {
|
||||
const imageName = image.match(/\[(.+?)\]/)[1];
|
||||
const imageExtension = image.match(/<data:image\/([^;]+);base64/)[1];
|
||||
const imageData = image.match(/base64,([^\s]+)/)[1];
|
||||
|
||||
// Write file using Buffer to properly decode base64
|
||||
fs.writeFileSync(
|
||||
path.join(guideTempDir, `${imageName}.${imageExtension}`),
|
||||
Buffer.from(imageData, 'base64')
|
||||
);
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user