add-orig-range.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. "use strict";
  2. exports.__esModule = true;
  3. var FINISH = true;
  4. function addOrigRange(cst) {
  5. if (!cst.setOrigRanges()) {
  6. var fn_1 = function (obj) {
  7. if (isRange(obj)) {
  8. obj.origStart = obj.start;
  9. obj.origEnd = obj.end;
  10. return FINISH;
  11. }
  12. if (isFlowChar(obj)) {
  13. obj.origOffset = obj.offset;
  14. return FINISH;
  15. }
  16. };
  17. cst.forEach(function (document) { return visit(document, fn_1); });
  18. }
  19. }
  20. exports.addOrigRange = addOrigRange;
  21. function visit(obj, fn) {
  22. if (!obj || typeof obj !== "object") {
  23. return;
  24. }
  25. if (fn(obj) === FINISH) {
  26. return;
  27. }
  28. for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {
  29. var key = _a[_i];
  30. if (key === "context" || key === "error") {
  31. continue;
  32. }
  33. var value = obj[key];
  34. if (Array.isArray(value)) {
  35. value.forEach(function (x) { return visit(x, fn); });
  36. }
  37. else {
  38. visit(value, fn);
  39. }
  40. }
  41. }
  42. function isRange(obj) {
  43. return typeof obj.start === "number";
  44. }
  45. function isFlowChar(obj) {
  46. return typeof obj.offset === "number";
  47. }