Created
February 20, 2019 11:19
-
-
Save davidroyer/2474e01123f9636926d0e7b6adf2af29 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export const uniqueArray = originalArray => [...new Set(originalArray)] | |
export function slugify(textToSlugify) { | |
return textToSlugify | |
.toLowerCase() | |
.replace(/[^\w\s-]/g, '') // remove non-word [a-z0-9_], non-whitespace, non-hyphen characters | |
.replace(/[\s_-]+/g, '-') // swap any length of whitespace, underscore, hyphen characters with a single - | |
.replace(/^-+|-+$/g, '') // remove leading, trailing - | |
} | |
export const createTagsList = (postsArray) => { | |
const tagsArray = [] | |
postsArray.forEach((post) => { | |
if (post.tags.length) { | |
post.tags.forEach(tag => tagsArray.push(tag)) | |
} | |
}) | |
return uniqueArray(tagsArray) | |
} | |
export const getPostsFromTag = (posts, tag) => | |
posts.filter(post => post.tags.map(tag => slugifyText(tag)).includes(tag)) | |
export const slugifyText = str => | |
slugify(str, { replacement: '-', lower: true, remove: /[$*_+~.()'"!\-:@]/g }) | |
export const arrayToObject = (arr, keyField) => | |
Object.assign({}, ...arr.map(item => ({ [item[keyField]]: item }))) | |
export const arrayFromObject = object => | |
Object.keys(object).map(key => object[key]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment