guards.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. "use strict";
  2. var _a;
  3. Object.defineProperty(exports, "__esModule", { value: true });
  4. exports.isUniversal = exports.isTag = exports.isString = exports.isSelector = exports.isRoot = exports.isPseudo = exports.isNesting = exports.isIdentifier = exports.isComment = exports.isCombinator = exports.isClassName = exports.isAttribute = void 0;
  5. exports.isNode = isNode;
  6. exports.isPseudoElement = isPseudoElement;
  7. exports.isPseudoClass = isPseudoClass;
  8. exports.isContainer = isContainer;
  9. exports.isNamespace = isNamespace;
  10. var types_1 = require("./types");
  11. var IS_TYPE = (_a = {},
  12. _a[types_1.ATTRIBUTE] = true,
  13. _a[types_1.CLASS] = true,
  14. _a[types_1.COMBINATOR] = true,
  15. _a[types_1.COMMENT] = true,
  16. _a[types_1.ID] = true,
  17. _a[types_1.NESTING] = true,
  18. _a[types_1.PSEUDO] = true,
  19. _a[types_1.ROOT] = true,
  20. _a[types_1.SELECTOR] = true,
  21. _a[types_1.STRING] = true,
  22. _a[types_1.TAG] = true,
  23. _a[types_1.UNIVERSAL] = true,
  24. _a);
  25. function isNode(node) {
  26. return typeof node === "object" && IS_TYPE[node.type];
  27. }
  28. function isNodeType(type, node) {
  29. return isNode(node) && node.type === type;
  30. }
  31. exports.isAttribute = isNodeType.bind(null, types_1.ATTRIBUTE);
  32. exports.isClassName = isNodeType.bind(null, types_1.CLASS);
  33. exports.isCombinator = isNodeType.bind(null, types_1.COMBINATOR);
  34. exports.isComment = isNodeType.bind(null, types_1.COMMENT);
  35. exports.isIdentifier = isNodeType.bind(null, types_1.ID);
  36. exports.isNesting = isNodeType.bind(null, types_1.NESTING);
  37. exports.isPseudo = isNodeType.bind(null, types_1.PSEUDO);
  38. exports.isRoot = isNodeType.bind(null, types_1.ROOT);
  39. exports.isSelector = isNodeType.bind(null, types_1.SELECTOR);
  40. exports.isString = isNodeType.bind(null, types_1.STRING);
  41. exports.isTag = isNodeType.bind(null, types_1.TAG);
  42. exports.isUniversal = isNodeType.bind(null, types_1.UNIVERSAL);
  43. function isPseudoElement(node) {
  44. return ((0, exports.isPseudo)(node) &&
  45. node.value &&
  46. (node.value.startsWith("::") ||
  47. node.value.toLowerCase() === ":before" ||
  48. node.value.toLowerCase() === ":after" ||
  49. node.value.toLowerCase() === ":first-letter" ||
  50. node.value.toLowerCase() === ":first-line"));
  51. }
  52. function isPseudoClass(node) {
  53. return (0, exports.isPseudo)(node) && !isPseudoElement(node);
  54. }
  55. function isContainer(node) {
  56. return !!(isNode(node) && node.walk);
  57. }
  58. function isNamespace(node) {
  59. return (0, exports.isAttribute)(node) || (0, exports.isTag)(node);
  60. }
  61. //# sourceMappingURL=guards.js.map