aboutsummaryrefslogtreecommitdiff
path: root/node_modules/stylus/lib/functions/opposite-position.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/stylus/lib/functions/opposite-position.js')
-rw-r--r--node_modules/stylus/lib/functions/opposite-position.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/node_modules/stylus/lib/functions/opposite-position.js b/node_modules/stylus/lib/functions/opposite-position.js
new file mode 100644
index 00000000..8a8f4101
--- /dev/null
+++ b/node_modules/stylus/lib/functions/opposite-position.js
@@ -0,0 +1,32 @@
+var utils = require('../utils')
+ , nodes = require('../nodes');
+
+/**
+ * Return the opposites of the given `positions`.
+ *
+ * Examples:
+ *
+ * opposite-position(top left)
+ * // => bottom right
+ *
+ * @param {Expression} positions
+ * @return {Expression}
+ * @api public
+ */
+
+(module.exports = function oppositePosition(positions){
+ var expr = [];
+ utils.unwrap(positions).nodes.forEach(function(pos, i){
+ utils.assertString(pos, 'position ' + i);
+ pos = (function(){ switch (pos.string) {
+ case 'top': return 'bottom';
+ case 'bottom': return 'top';
+ case 'left': return 'right';
+ case 'right': return 'left';
+ case 'center': return 'center';
+ default: throw new Error('invalid position ' + pos);
+ }})();
+ expr.push(new nodes.Literal(pos));
+ });
+ return expr;
+}).raw = true;