TextMacrosMethods.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.TextMacrosMethods = void 0;
  7. var TexParser_js_1 = __importDefault(require("../TexParser.js"));
  8. var Retries_js_1 = require("../../../util/Retries.js");
  9. var BaseMethods_js_1 = __importDefault(require("../base/BaseMethods.js"));
  10. exports.TextMacrosMethods = {
  11. Comment: function (parser, _c) {
  12. while (parser.i < parser.string.length && parser.string.charAt(parser.i) !== '\n') {
  13. parser.i++;
  14. }
  15. parser.i++;
  16. },
  17. Math: function (parser, open) {
  18. parser.saveText();
  19. var i = parser.i;
  20. var j, c;
  21. var braces = 0;
  22. while ((c = parser.GetNext())) {
  23. j = parser.i++;
  24. switch (c) {
  25. case '\\':
  26. var cs = parser.GetCS();
  27. if (cs === ')')
  28. c = '\\(';
  29. case '$':
  30. if (braces === 0 && open === c) {
  31. var config = parser.texParser.configuration;
  32. var mml = (new TexParser_js_1.default(parser.string.substr(i, j - i), parser.stack.env, config)).mml();
  33. parser.PushMath(mml);
  34. return;
  35. }
  36. break;
  37. case '{':
  38. braces++;
  39. break;
  40. case '}':
  41. if (braces === 0) {
  42. parser.Error('ExtraCloseMissingOpen', 'Extra close brace or missing open brace');
  43. }
  44. braces--;
  45. break;
  46. }
  47. }
  48. parser.Error('MathNotTerminated', 'Math-mode is not properly terminated');
  49. },
  50. MathModeOnly: function (parser, c) {
  51. parser.Error('MathModeOnly', '\'%1\' allowed only in math mode', c);
  52. },
  53. Misplaced: function (parser, c) {
  54. parser.Error('Misplaced', '\'%1\' can not be used here', c);
  55. },
  56. OpenBrace: function (parser, _c) {
  57. var env = parser.stack.env;
  58. parser.envStack.push(env);
  59. parser.stack.env = Object.assign({}, env);
  60. },
  61. CloseBrace: function (parser, _c) {
  62. if (parser.envStack.length) {
  63. parser.saveText();
  64. parser.stack.env = parser.envStack.pop();
  65. }
  66. else {
  67. parser.Error('ExtraCloseMissingOpen', 'Extra close brace or missing open brace');
  68. }
  69. },
  70. OpenQuote: function (parser, c) {
  71. if (parser.string.charAt(parser.i) === c) {
  72. parser.text += '\u201C';
  73. parser.i++;
  74. }
  75. else {
  76. parser.text += '\u2018';
  77. }
  78. },
  79. CloseQuote: function (parser, c) {
  80. if (parser.string.charAt(parser.i) === c) {
  81. parser.text += '\u201D';
  82. parser.i++;
  83. }
  84. else {
  85. parser.text += '\u2019';
  86. }
  87. },
  88. Tilde: function (parser, _c) {
  89. parser.text += '\u00A0';
  90. },
  91. Space: function (parser, _c) {
  92. parser.text += ' ';
  93. while (parser.GetNext().match(/\s/))
  94. parser.i++;
  95. },
  96. SelfQuote: function (parser, name) {
  97. parser.text += name.substr(1);
  98. },
  99. Insert: function (parser, _name, c) {
  100. parser.text += c;
  101. },
  102. Accent: function (parser, name, c) {
  103. var base = parser.ParseArg(name);
  104. var accent = parser.create('token', 'mo', {}, c);
  105. parser.addAttributes(accent);
  106. parser.Push(parser.create('node', 'mover', [base, accent]));
  107. },
  108. Emph: function (parser, name) {
  109. var variant = (parser.stack.env.mathvariant === '-tex-mathit' ? 'normal' : '-tex-mathit');
  110. parser.Push(parser.ParseTextArg(name, { mathvariant: variant }));
  111. },
  112. SetFont: function (parser, _name, variant) {
  113. parser.saveText();
  114. parser.stack.env.mathvariant = variant;
  115. },
  116. SetSize: function (parser, _name, size) {
  117. parser.saveText();
  118. parser.stack.env.mathsize = size;
  119. },
  120. CheckAutoload: function (parser, name) {
  121. var autoload = parser.configuration.packageData.get('autoload');
  122. var texParser = parser.texParser;
  123. name = name.slice(1);
  124. var macro = texParser.lookup('macro', name);
  125. if (!macro || (autoload && macro._func === autoload.Autoload)) {
  126. texParser.parse('macro', [texParser, name]);
  127. if (!macro)
  128. return;
  129. (0, Retries_js_1.retryAfter)(Promise.resolve());
  130. }
  131. texParser.parse('macro', [parser, name]);
  132. },
  133. Macro: BaseMethods_js_1.default.Macro,
  134. Spacer: BaseMethods_js_1.default.Spacer,
  135. Hskip: BaseMethods_js_1.default.Hskip,
  136. rule: BaseMethods_js_1.default.rule,
  137. Rule: BaseMethods_js_1.default.Rule,
  138. HandleRef: BaseMethods_js_1.default.HandleRef
  139. };
  140. //# sourceMappingURL=TextMacrosMethods.js.map