0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-02 15:02:38 +00:00

Update brew text merge and split functions to include metadata

#1838
This commit is contained in:
Charlie Humphreys
2021-11-18 23:23:05 -06:00
parent 0d685acfca
commit f40b4b2f30
2 changed files with 29 additions and 8 deletions

View File

@@ -32,7 +32,7 @@ const getBrewFromId = asyncHandler(async (id, accessType)=>{
if(accessType == 'raw') { if(accessType == 'raw') {
return brew; return brew;
} }
splitTextAndStyle(brew); splitTextStyleAndMetadata(brew);
return brew; return brew;
}); });
@@ -45,8 +45,14 @@ const sanitizeBrew = (brew, full=false)=>{
return brew; return brew;
}; };
const splitTextAndStyle = (brew)=>{ const splitTextStyleAndMetadata = (brew)=>{
brew.text = brew.text.replaceAll('\r\n', '\n'); brew.text = brew.text.replaceAll('\r\n', '\n');
if(brew.text.startsWith('```metadata')) {
const index = brew.text.indexOf('```\n\n');
const metadata = brew.text.slice(12, index - 1);
Object.assign(brew, JSON.parse(metadata));
brew.text = brew.text.slice(index + 5);
}
if(brew.text.startsWith('```css')) { if(brew.text.startsWith('```css')) {
const index = brew.text.indexOf('```\n\n'); const index = brew.text.indexOf('```\n\n');
brew.style = brew.text.slice(7, index - 1); brew.style = brew.text.slice(7, index - 1);
@@ -128,7 +134,7 @@ app.get('/v3_preview', async (req, res, next)=>{
text : welcomeTextV3, text : welcomeTextV3,
renderer : 'V3' renderer : 'V3'
}; };
splitTextAndStyle(brew); splitTextStyleAndMetadata(brew);
req.brew = brew; req.brew = brew;
return next(); return next();
}); });
@@ -140,7 +146,7 @@ app.get('/changelog', async (req, res, next)=>{
text : changelogText, text : changelogText,
renderer : 'V3' renderer : 'V3'
}; };
splitTextAndStyle(brew); splitTextStyleAndMetadata(brew);
req.brew = brew; req.brew = brew;
return next(); return next();
}); });
@@ -152,7 +158,7 @@ app.get('/faq', async (req, res, next)=>{
text : faqText, text : faqText,
renderer : 'V3' renderer : 'V3'
}; };
splitTextAndStyle(brew); splitTextStyleAndMetadata(brew);
req.brew = brew; req.brew = brew;
return next(); return next();
}); });

View File

@@ -28,13 +28,28 @@ const excludePropsFromUpdate = (brew)=>{
return brew; return brew;
}; };
const mergeBrewText = (text, style)=>{ const mergeBrewText = (text, style, brew)=>{
if(typeof style !== 'undefined') { if(typeof style !== 'undefined') {
text = `\`\`\`css\n` + text = `\`\`\`css\n` +
`${style}\n` + `${style}\n` +
`\`\`\`\n\n` + `\`\`\`\n\n` +
`${text}`; `${text}`;
} }
if(typeof brew !== 'undefined') {
const metadata = {
title : brew.title,
description : brew.description,
tags : brew.tags,
systems : brew.systems,
renderer : brew.renderer,
authors : brew.authors,
published : brew.published
};
text = `\`\`\`metadata\n` +
`${JSON.stringify(metadata)}\n` +
`\`\`\`\n\n` +
`${text}`;
}
return text; return text;
}; };
@@ -143,7 +158,7 @@ const newGoogleBrew = async (req, res, next)=>{
} }
brew.authors = (req.account) ? [req.account.username] : []; brew.authors = (req.account) ? [req.account.username] : [];
brew.text = mergeBrewText(brew.text, brew.style); brew.text = mergeBrewText(brew.text, brew.style, brew);
delete brew.editId; delete brew.editId;
delete brew.shareId; delete brew.shareId;
@@ -165,7 +180,7 @@ const updateGoogleBrew = async (req, res, next)=>{
try { oAuth2Client = GoogleActions.authCheck(req.account, res); } catch (err) { return res.status(err.status).send(err.message); } try { oAuth2Client = GoogleActions.authCheck(req.account, res); } catch (err) { return res.status(err.status).send(err.message); }
const brew = excludePropsFromUpdate(req.body); const brew = excludePropsFromUpdate(req.body);
brew.text = mergeBrewText(brew.text, brew.style); brew.text = mergeBrewText(brew.text, brew.style, brew);
try { try {
const updatedBrew = await GoogleActions.updateGoogleBrew(oAuth2Client, brew); const updatedBrew = await GoogleActions.updateGoogleBrew(oAuth2Client, brew);