Punycode slug encoding for non-ascii characters
This commit is contained in:
parent
a73eb76d43
commit
00b47e2656
3 changed files with 21 additions and 8 deletions
|
|
@ -1,20 +1,26 @@
|
|||
const dayjs = require('dayjs');
|
||||
const punycode = require('punycode/');
|
||||
|
||||
const adjectives = require('../res/adjectives.json');
|
||||
const crabs = require('../res/crabs.json');
|
||||
|
||||
const capitalize = (string) => string.charAt(0).toUpperCase() + string.slice(1);
|
||||
|
||||
const generateId = (name) => {
|
||||
const id = name.trim().toLowerCase().replace(/[^A-Za-z0-9 ]/g, '').replace(/\s+/g, '-');
|
||||
const number = Math.floor(100000 + Math.random() * 900000);
|
||||
return `${id}-${number}`;
|
||||
};
|
||||
const capitalize = string => string.charAt(0).toUpperCase() + string.slice(1);
|
||||
|
||||
// Generate a random name based on an adjective and a crab species
|
||||
const generateName = () => {
|
||||
return `${capitalize(adjectives[Math.floor(Math.random() * adjectives.length)])} ${crabs[Math.floor(Math.random() * crabs.length)]} Crab`;
|
||||
};
|
||||
|
||||
// Generate a slug for the crab fit
|
||||
const generateId = name => {
|
||||
let id = punycode.encode(name.trim().toLowerCase()).trim().replace(/[^A-Za-z0-9 ]/g, '').replace(/\s+/g, '-');
|
||||
if (id.replace(/-/g, '') === '') {
|
||||
id = generateName().trim().toLowerCase().replace(/[^A-Za-z0-9 ]/g, '').replace(/\s+/g, '-');
|
||||
}
|
||||
const number = Math.floor(100000 + Math.random() * 900000);
|
||||
return `${id}-${number}`;
|
||||
};
|
||||
|
||||
module.exports = async (req, res) => {
|
||||
const { event } = req.body;
|
||||
|
||||
|
|
@ -23,6 +29,7 @@ module.exports = async (req, res) => {
|
|||
let eventId = generateId(name);
|
||||
const currentTime = dayjs().unix();
|
||||
|
||||
// Check if the event ID already exists, and if so generate a new one
|
||||
let eventResult;
|
||||
do {
|
||||
const query = req.datastore.createQuery(req.types.event)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue