+++ /dev/null
-// Too weird for Flow
-"use strict";
-
-/**
- * Create a collection of Maps that serve to contextualize a given node.
- * This is useful to ensure that you only compare nodes that share a certain
- * context.
- *
- * All nodes are initially contextualized by their input source.
- * From there, you can contextualize them however you want.
- *
- * For a usage example, see `selector-no-descending-specificity`.
- */
-module.exports = function() {
- const contextMap = new Map();
-
- return {
- getContext(node) {
- const nodeSource = node.source.input.from;
- const baseContext = creativeGetMap(contextMap, nodeSource);
- const subContexts = Array.from(arguments).slice(1);
-
- return subContexts.reduce((result, context) => {
- return creativeGetMap(result, context);
- }, baseContext);
- }
- };
-};
-
-function creativeGetMap(someMap, someThing) {
- if (!someMap.has(someThing)) {
- someMap.set(someThing, new Map());
- }
- return someMap.get(someThing);
-}