node-query/node_modules/grunt-istanbul/node_modules/istanbul/node_modules/js-yaml/benchmark/implementations/js-yaml-3.0.2/lib/js-yaml/type/js/regexp.js

57 lines
1.1 KiB
JavaScript

'use strict';
var Type = require('../../type');
function resolveJavascriptRegExp(state) {
var regexp = state.result,
tail = /\/([gim]*)$/.exec(state.result),
modifiers;
// `/foo/gim` - tail can be maximum 4 chars
if ('/' === regexp[0] && tail && 4 >= tail[0].length) {
regexp = regexp.slice(1, regexp.length - tail[0].length);
modifiers = tail[1];
}
try {
state.result = new RegExp(regexp, modifiers);
return true;
} catch (error) {
return false;
}
}
function representJavascriptRegExp(object /*, style*/) {
var result = '/' + object.source + '/';
if (object.global) {
result += 'g';
}
if (object.multiline) {
result += 'm';
}
if (object.ignoreCase) {
result += 'i';
}
return result;
}
function isRegExp(object) {
return '[object RegExp]' === Object.prototype.toString.call(object);
}
module.exports = new Type('tag:yaml.org,2002:js/regexp', {
loadKind: 'scalar',
loadResolver: resolveJavascriptRegExp,
dumpPredicate: isRegExp,
dumpRepresenter: representJavascriptRegExp
});