Index: lib/src/prism/tests/helper/token-stream-transformer.js |
diff --git a/lib/src/prism/tests/helper/token-stream-transformer.js b/lib/src/prism/tests/helper/token-stream-transformer.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..deb831c45b982f276c710e7bca055aef2b08c5dd |
--- /dev/null |
+++ b/lib/src/prism/tests/helper/token-stream-transformer.js |
@@ -0,0 +1,32 @@ |
+"use strict"; |
+ |
+ |
+module.exports = { |
+ /** |
+ * Simplifies the token stream to ease the matching with the expected token stream. |
+ * |
+ * * Strings are kept as-is |
+ * * In arrays each value is transformed individually |
+ * * Values that are empty (empty arrays or strings only containing whitespace) |
+ * |
+ * |
+ * @param {Array} tokenStream |
+ * @returns {Array.<string[]|Array>} |
+ */ |
+ simplify: function (tokenStream) { |
+ if (Array.isArray(tokenStream)) { |
+ return tokenStream |
+ .map(this.simplify.bind(this)) |
+ .filter(function (value) { |
+ return !(Array.isArray(value) && !value.length) && !(typeof value === "string" && !value.trim().length); |
+ } |
+ ); |
+ } |
+ else if (typeof tokenStream === "object") { |
+ return [tokenStream.type, this.simplify(tokenStream.content)]; |
+ } |
+ else { |
+ return tokenStream; |
+ } |
+ } |
+}; |