.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / regex-not / index.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/regex-not/index.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/regex-not/index.js
new file mode 100644 (file)
index 0000000..02bfed4
--- /dev/null
@@ -0,0 +1,72 @@
+'use strict';
+
+var extend = require('extend-shallow');
+var safe = require('safe-regex');
+
+/**
+ * The main export is a function that takes a `pattern` string and an `options` object.
+ *
+ * ```js
+ & var not = require('regex-not');
+ & console.log(not('foo'));
+ & //=> /^(?:(?!^(?:foo)$).)*$/
+ * ```
+ *
+ * @param {String} `pattern`
+ * @param {Object} `options`
+ * @return {RegExp} Converts the given `pattern` to a regex using the specified `options`.
+ * @api public
+ */
+
+function toRegex(pattern, options) {
+  return new RegExp(toRegex.create(pattern, options));
+}
+
+/**
+ * Create a regex-compatible string from the given `pattern` and `options`.
+ *
+ * ```js
+ & var not = require('regex-not');
+ & console.log(not.create('foo'));
+ & //=> '^(?:(?!^(?:foo)$).)*$'
+ * ```
+ * @param {String} `pattern`
+ * @param {Object} `options`
+ * @return {String}
+ * @api public
+ */
+
+toRegex.create = function(pattern, options) {
+  if (typeof pattern !== 'string') {
+    throw new TypeError('expected a string');
+  }
+
+  var opts = extend({}, options);
+  if (opts.contains === true) {
+    opts.strictNegate = false;
+  }
+
+  var open = opts.strictOpen !== false ? '^' : '';
+  var close = opts.strictClose !== false ? '$' : '';
+  var endChar = opts.endChar ? opts.endChar : '+';
+  var str = pattern;
+
+  if (opts.strictNegate === false) {
+    str = '(?:(?!(?:' + pattern + ')).)' + endChar;
+  } else {
+    str = '(?:(?!^(?:' + pattern + ')$).)' + endChar;
+  }
+
+  var res = open + str + close;
+  if (opts.safe === true && safe(res) === false) {
+    throw new Error('potentially unsafe regular expression: ' + res);
+  }
+
+  return res;
+};
+
+/**
+ * Expose `toRegex`
+ */
+
+module.exports = toRegex;