summaryrefslogtreecommitdiff
path: root/node_modules/postcss-discard-comments/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/postcss-discard-comments/src/lib')
-rw-r--r--node_modules/postcss-discard-comments/src/lib/commentParser.js31
-rw-r--r--node_modules/postcss-discard-comments/src/lib/commentRemover.js32
2 files changed, 63 insertions, 0 deletions
diff --git a/node_modules/postcss-discard-comments/src/lib/commentParser.js b/node_modules/postcss-discard-comments/src/lib/commentParser.js
new file mode 100644
index 00000000..a8834701
--- /dev/null
+++ b/node_modules/postcss-discard-comments/src/lib/commentParser.js
@@ -0,0 +1,31 @@
+'use strict';
+
+/**
+ * @param {string} input
+ * @return {[number, number, number][]}
+ */
+module.exports = function commentParser(input) {
+ /** @type [number, number, number][] */
+ const tokens = [];
+ const length = input.length;
+ let pos = 0;
+ let next;
+
+ while (pos < length) {
+ next = input.indexOf('/*', pos);
+
+ if (~next) {
+ tokens.push([0, pos, next]);
+ pos = next;
+
+ next = input.indexOf('*/', pos + 2);
+ tokens.push([1, pos + 2, next]);
+ pos = next + 2;
+ } else {
+ tokens.push([0, pos, length]);
+ pos = length;
+ }
+ }
+
+ return tokens;
+};
diff --git a/node_modules/postcss-discard-comments/src/lib/commentRemover.js b/node_modules/postcss-discard-comments/src/lib/commentRemover.js
new file mode 100644
index 00000000..6d0dd81b
--- /dev/null
+++ b/node_modules/postcss-discard-comments/src/lib/commentRemover.js
@@ -0,0 +1,32 @@
+'use strict';
+
+/** @param {import('../index.js').Options} options */
+function CommentRemover(options) {
+ this.options = options;
+}
+/**
+ * @param {string} comment
+ * @return {boolean | undefined}
+ */
+CommentRemover.prototype.canRemove = function (comment) {
+ const remove = this.options.remove;
+
+ if (remove) {
+ return remove(comment);
+ } else {
+ const isImportant = comment.indexOf('!') === 0;
+
+ if (!isImportant) {
+ return true;
+ }
+
+ if (this.options.removeAll || this._hasFirst) {
+ return true;
+ } else if (this.options.removeAllButFirst && !this._hasFirst) {
+ this._hasFirst = true;
+ return false;
+ }
+ }
+};
+
+module.exports = CommentRemover;