elmer-ui-core
Version:
web app framework
90 lines (89 loc) • 3.52 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.ElmerDomQuery = void 0;
var elmer_common_1 = require("elmer-common");
var ElmerDomQuery = (function (_super) {
__extends(ElmerDomQuery, _super);
function ElmerDomQuery() {
return _super !== null && _super.apply(this, arguments) || this;
}
ElmerDomQuery.prototype.getSelectors = function (selector) {
var _this = this;
var regs = [];
if (!this.isEmpty(selector)) {
var rgs = selector.split(",");
rgs.map(function (tmpRegStr) {
regs.push(_this.getSelector(tmpRegStr));
});
}
return regs;
};
ElmerDomQuery.prototype.getSelector = function (querySelector) {
var result = {};
var queryStr = querySelector.replace(/^\s*/, "").replace(/\s*$/, "");
var prefReg = /^(\>|\+)([a-z0-9\-_\.#\[\]\s=\>\+\:]*)$/i;
var prefMatch = queryStr.match(prefReg);
var leftCode = "";
var nodeQueryStr = queryStr;
var nodeMode = "";
if (prefMatch) {
nodeQueryStr = prefMatch[2];
nodeMode = prefMatch[1];
}
var queryNodeResult = this.getSelectorNode(nodeQueryStr);
if (queryNodeResult) {
result.mode = nodeMode;
result.type = queryNodeResult.type;
result.value = queryNodeResult.value;
leftCode = queryNodeResult.leftCode || "";
}
leftCode = leftCode.replace(/^\s*/, "").replace(/\s*$/, "");
if (!this.isEmpty(leftCode) && leftCode.length > 0) {
result.child = this.getSelector(leftCode);
}
return result;
};
ElmerDomQuery.prototype.getSelectorNode = function (queryStr) {
var prefReg = /^([\.#])([a-z0-9][a-z0-9\-_\.#\[\]\s=\>\+\:]*)$/i;
var prefMatch = queryStr.match(prefReg);
var result = {};
var nodeReg = /^([a-z0-9][a-z0-9\-_\[\]=\.\:]*)([\s\>\+])/i;
var nodeEndReg = /^([a-z0-9][a-z0-9\-_\[\]=\.\:]*)\s*$/i;
var nodeValueStr = queryStr;
var pref = "";
if (prefMatch) {
pref = prefMatch[1];
nodeValueStr = prefMatch[2];
}
var nodeMatch = nodeValueStr.match(nodeReg);
result.type = pref;
if (nodeMatch) {
result.value = nodeMatch[1];
result.leftCode = nodeValueStr.replace(nodeReg, "$2");
}
else {
var endNodeMatch = nodeValueStr.match(nodeEndReg);
if (endNodeMatch) {
result.value = endNodeMatch[0];
}
}
return result;
};
return ElmerDomQuery;
}(elmer_common_1.Common));
exports.ElmerDomQuery = ElmerDomQuery;