mirror of
https://github.com/JasonYANG170/IOTConnect-Web.git
synced 2024-11-23 20:26:28 +00:00
28 lines
942 B
JavaScript
28 lines
942 B
JavaScript
|
"use strict";
|
||
|
|
||
|
var from = require("es5-ext/array/from")
|
||
|
, ensureString = require("type/string/ensure")
|
||
|
, primitiveSet = require("es5-ext/object/primitive-set")
|
||
|
, esniff = require("./");
|
||
|
|
||
|
var allowedSeparators = primitiveSet.apply(null, from(".+-*/,&|;"));
|
||
|
|
||
|
module.exports = function (code, sep/*, limit*/) {
|
||
|
var expressions, fromIndex, limit = arguments[2] || Infinity;
|
||
|
code = ensureString(code);
|
||
|
sep = ensureString(sep);
|
||
|
if (!allowedSeparators[sep]) throw new Error(sep + " is not supported separator");
|
||
|
expressions = [];
|
||
|
fromIndex = 0;
|
||
|
esniff(code, function (emitter) {
|
||
|
emitter.on("trigger:" + sep, function (accessor) {
|
||
|
if (accessor.scopeDepth !== 0) return;
|
||
|
var index = accessor.index;
|
||
|
if (expressions.push(code.slice(fromIndex, index)) === limit) accessor.stop();
|
||
|
fromIndex = index + 1;
|
||
|
});
|
||
|
});
|
||
|
if (expressions.length < limit) expressions.push(code.slice(fromIndex));
|
||
|
return expressions;
|
||
|
};
|