summaryrefslogtreecommitdiff
path: root/src-migrate/libs/slug.ts
blob: 5ab3b3dd0b79372c1206707aa3a4a6425626a5c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { toTitleCase } from './toTitleCase';

export const createSlug = (
  prefix: string,
  name: string,
  id: string,
  withHost = false
) => {
  const cleanName = name
    .trim()
    .replace(new RegExp(/[^A-Za-z0-9]/, 'g'), '-')
    .toLowerCase();

  let slug = `${cleanName}-${id}`;
  const splitSlug = slug.split('-');
  const filterSlug = splitSlug.filter((x) => x !== '');

  slug = `${prefix}${filterSlug.join('-')}`;

  if (withHost) slug = process.env.NEXT_PUBLIC_SELF_HOST + slug;

  return slug;
};

export const getIdFromSlug = (slug: string) => {
  let id = slug.split('-');
  return id[id.length - 1];
};

export const getNameFromSlug = (slug: string) => {
  let name = slug.split('-');
  name.pop();
  return toTitleCase(name.join(' '));
};