selector.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. var TYPE = require('../../tokenizer').TYPE;
  2. var IDENTIFIER = TYPE.Identifier;
  3. var NUMBER = TYPE.Number;
  4. var NUMBERSIGN = TYPE.NumberSign;
  5. var LEFTSQUAREBRACKET = TYPE.LeftSquareBracket;
  6. var PLUSSIGN = TYPE.PlusSign;
  7. var SOLIDUS = TYPE.Solidus;
  8. var ASTERISK = TYPE.Asterisk;
  9. var FULLSTOP = TYPE.FullStop;
  10. var COLON = TYPE.Colon;
  11. var GREATERTHANSIGN = TYPE.GreaterThanSign;
  12. var VERTICALLINE = TYPE.VerticalLine;
  13. var TILDE = TYPE.Tilde;
  14. function getNode(context) {
  15. switch (this.scanner.tokenType) {
  16. case PLUSSIGN:
  17. case GREATERTHANSIGN:
  18. case TILDE:
  19. context.space = null;
  20. context.ignoreWSAfter = true;
  21. return this.Combinator();
  22. case SOLIDUS: // /deep/
  23. return this.Combinator();
  24. case FULLSTOP:
  25. return this.ClassSelector();
  26. case LEFTSQUAREBRACKET:
  27. return this.AttributeSelector();
  28. case NUMBERSIGN:
  29. return this.IdSelector();
  30. case COLON:
  31. if (this.scanner.lookupType(1) === COLON) {
  32. return this.PseudoElementSelector();
  33. } else {
  34. return this.PseudoClassSelector();
  35. }
  36. case IDENTIFIER:
  37. case ASTERISK:
  38. case VERTICALLINE:
  39. return this.TypeSelector();
  40. case NUMBER:
  41. return this.Percentage();
  42. }
  43. };
  44. module.exports = {
  45. getNode: getNode
  46. };