mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-02-22 04:30:33 +09:00
34 lines
944 B
JavaScript
34 lines
944 B
JavaScript
export function camelize(dashString) {
|
|
const element = document.createElement("span")
|
|
element.setAttribute(`data-${dashString}`, "")
|
|
return Object.keys(element.dataset)[0]
|
|
}
|
|
|
|
export function memoize(object, name, value) {
|
|
Object.defineProperty(object, name, { value })
|
|
return value
|
|
}
|
|
|
|
export function normalize(string) {
|
|
return string.normalize("NFKD").replace(/\p{Diacritic}/gu, "")
|
|
}
|
|
|
|
export function regexpForQuery(query, prefix = "") {
|
|
return new RegExp(prefix + patternForQuery(query), "i")
|
|
}
|
|
|
|
export function patternForQuery(query) {
|
|
return normalize(query.toString()).split("").map(regexpEscape).join("(.*\\s)?").replace(/\(\.\*\\s\)\? /g, "[^ ]* ")
|
|
}
|
|
|
|
|
|
export function uniqueValues(array) {
|
|
const set = new Set()
|
|
Array.from(array).forEach(value => set.add(value))
|
|
return Array.from(set)
|
|
}
|
|
|
|
export function regexpEscape(string) {
|
|
return string.toString().replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&")
|
|
}
|