You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
754 B
31 lines
754 B
'use strict'; |
|
|
|
function createMap(values, ignoreCase) { |
|
var map = {}; |
|
values.forEach(function(value) { |
|
map[value] = 1; |
|
}); |
|
return ignoreCase ? function(value) { |
|
return map[value.toLowerCase()] === 1; |
|
} : function(value) { |
|
return map[value] === 1; |
|
}; |
|
} |
|
|
|
async function replaceAsync(str, regex, asyncFn) { |
|
const promises = []; |
|
str.replace(regex, (match, ...args) => { |
|
const promise = asyncFn(match, ...args); |
|
promises.push(promise); |
|
}); |
|
const data = await Promise.all(promises); |
|
return str.replace(regex, () => data.shift()); |
|
} |
|
|
|
|
|
exports.createMap = createMap; |
|
exports.createMapFromString = function(values, ignoreCase) { |
|
return createMap(values.split(/,/), ignoreCase); |
|
}; |
|
|
|
exports.replaceAsync = replaceAsync;
|
|
|