aboutsummaryrefslogtreecommitdiff
path: root/node_modules/stylus/lib/functions/slice.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/stylus/lib/functions/slice.js')
-rw-r--r--node_modules/stylus/lib/functions/slice.js28
1 files changed, 28 insertions, 0 deletions
diff --git a/node_modules/stylus/lib/functions/slice.js b/node_modules/stylus/lib/functions/slice.js
new file mode 100644
index 00000000..d5b9282c
--- /dev/null
+++ b/node_modules/stylus/lib/functions/slice.js
@@ -0,0 +1,28 @@
+var utils = require('../utils'),
+ nodes = require('../nodes');
+
+/**
+ * This is a heler function for the slice method
+ *
+ * @param {String|Ident} vals
+ * @param {Unit} start [0]
+ * @param {Unit} end [vals.length]
+ * @return {String|Literal|Null}
+ * @api public
+*/
+(module.exports = function slice(val, start, end) {
+ start = start && start.nodes[0].val;
+ end = end && end.nodes[0].val;
+
+ val = utils.unwrap(val).nodes;
+
+ if (val.length > 1) {
+ return utils.coerce(val.slice(start, end), true);
+ }
+
+ var result = val[0].string.slice(start, end);
+
+ return val[0] instanceof nodes.Ident
+ ? new nodes.Ident(result)
+ : new nodes.String(result);
+}).raw = true;