mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-22 00:16:15 -04:00
49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
![]() |
'use strict';
|
||
|
// support for older node versions (<12)
|
||
|
const assert = require('assert');
|
||
|
|
||
|
const internalMatch = (string, regexp, message, fn) => {
|
||
|
if (!regexp.test) {
|
||
|
throw new Error('regexp parameter is not a RegExp');
|
||
|
}
|
||
|
if (typeof string !== 'string') {
|
||
|
throw new Error('string parameter is not a string');
|
||
|
}
|
||
|
const match = fn.name === 'match';
|
||
|
|
||
|
const result = string.match(regexp);
|
||
|
if (match && !result) {
|
||
|
if (message) {
|
||
|
throw message;
|
||
|
} else {
|
||
|
throw new Error(`${string} does not match regex ${regexp}`);
|
||
|
}
|
||
|
}
|
||
|
if (!match && result) {
|
||
|
if (message) {
|
||
|
throw message;
|
||
|
} else {
|
||
|
throw new Error(`${string} does match regex ${regexp}`);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
if (!assert.match) {
|
||
|
const match = (string, regexp, message) => {
|
||
|
internalMatch(string, regexp, message, match);
|
||
|
};
|
||
|
assert.match = match;
|
||
|
}
|
||
|
if (!assert.strict.match) assert.strict.match = assert.match;
|
||
|
|
||
|
if (!assert.doesNotMatch) {
|
||
|
const doesNotMatch = (string, regexp, message) => {
|
||
|
internalMatch(string, regexp, message, doesNotMatch);
|
||
|
};
|
||
|
assert.doesNotMatch = doesNotMatch;
|
||
|
}
|
||
|
if (!assert.strict.doesNotMatch) assert.strict.doesNotMatch = assert.doesNotMatch;
|
||
|
|
||
|
module.exports = assert;
|