Dashboard sipadu mbip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Directive.js 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _constants = require("../constants");
  7. var _Node = _interopRequireDefault(require("./Node"));
  8. var _Range = _interopRequireDefault(require("./Range"));
  9. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  10. class Directive extends _Node.default {
  11. static endOfDirective(src, offset) {
  12. let ch = src[offset];
  13. while (ch && ch !== '\n' && ch !== '#') ch = src[offset += 1]; // last char can't be whitespace
  14. ch = src[offset - 1];
  15. while (ch === ' ' || ch === '\t') {
  16. offset -= 1;
  17. ch = src[offset - 1];
  18. }
  19. return offset;
  20. }
  21. constructor() {
  22. super(_constants.Type.DIRECTIVE);
  23. this.name = null;
  24. }
  25. get parameters() {
  26. const raw = this.rawValue;
  27. return raw ? raw.trim().split(/[ \t]+/) : [];
  28. }
  29. parseName(start) {
  30. const {
  31. src
  32. } = this.context;
  33. let offset = start;
  34. let ch = src[offset];
  35. while (ch && ch !== '\n' && ch !== '\t' && ch !== ' ') ch = src[offset += 1];
  36. this.name = src.slice(start, offset);
  37. return offset;
  38. }
  39. parseParameters(start) {
  40. const {
  41. src
  42. } = this.context;
  43. let offset = start;
  44. let ch = src[offset];
  45. while (ch && ch !== '\n' && ch !== '#') ch = src[offset += 1];
  46. this.valueRange = new _Range.default(start, offset);
  47. return offset;
  48. }
  49. parse(context, start) {
  50. this.context = context;
  51. let offset = this.parseName(start + 1);
  52. offset = this.parseParameters(offset);
  53. offset = this.parseComment(offset);
  54. this.range = new _Range.default(start, offset);
  55. return offset;
  56. }
  57. }
  58. exports.default = Directive;