NewcommandMethods.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. "use strict";
  2. var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
  3. if (k2 === undefined) k2 = k;
  4. var desc = Object.getOwnPropertyDescriptor(m, k);
  5. if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
  6. desc = { enumerable: true, get: function() { return m[k]; } };
  7. }
  8. Object.defineProperty(o, k2, desc);
  9. }) : (function(o, m, k, k2) {
  10. if (k2 === undefined) k2 = k;
  11. o[k2] = m[k];
  12. }));
  13. var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
  14. Object.defineProperty(o, "default", { enumerable: true, value: v });
  15. }) : function(o, v) {
  16. o["default"] = v;
  17. });
  18. var __importStar = (this && this.__importStar) || function (mod) {
  19. if (mod && mod.__esModule) return mod;
  20. var result = {};
  21. if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
  22. __setModuleDefault(result, mod);
  23. return result;
  24. };
  25. var __importDefault = (this && this.__importDefault) || function (mod) {
  26. return (mod && mod.__esModule) ? mod : { "default": mod };
  27. };
  28. Object.defineProperty(exports, "__esModule", { value: true });
  29. var TexError_js_1 = __importDefault(require("../TexError.js"));
  30. var sm = __importStar(require("../SymbolMap.js"));
  31. var BaseMethods_js_1 = __importDefault(require("../base/BaseMethods.js"));
  32. var ParseUtil_js_1 = __importDefault(require("../ParseUtil.js"));
  33. var NewcommandUtil_js_1 = __importDefault(require("./NewcommandUtil.js"));
  34. var NewcommandMethods = {};
  35. NewcommandMethods.NewCommand = function (parser, name) {
  36. var cs = NewcommandUtil_js_1.default.GetCsNameArgument(parser, name);
  37. var n = NewcommandUtil_js_1.default.GetArgCount(parser, name);
  38. var opt = parser.GetBrackets(name);
  39. var def = parser.GetArgument(name);
  40. NewcommandUtil_js_1.default.addMacro(parser, cs, NewcommandMethods.Macro, [def, n, opt]);
  41. };
  42. NewcommandMethods.NewEnvironment = function (parser, name) {
  43. var env = ParseUtil_js_1.default.trimSpaces(parser.GetArgument(name));
  44. var n = NewcommandUtil_js_1.default.GetArgCount(parser, name);
  45. var opt = parser.GetBrackets(name);
  46. var bdef = parser.GetArgument(name);
  47. var edef = parser.GetArgument(name);
  48. NewcommandUtil_js_1.default.addEnvironment(parser, env, NewcommandMethods.BeginEnv, [true, bdef, edef, n, opt]);
  49. };
  50. NewcommandMethods.MacroDef = function (parser, name) {
  51. var cs = NewcommandUtil_js_1.default.GetCSname(parser, name);
  52. var params = NewcommandUtil_js_1.default.GetTemplate(parser, name, '\\' + cs);
  53. var def = parser.GetArgument(name);
  54. !(params instanceof Array) ?
  55. NewcommandUtil_js_1.default.addMacro(parser, cs, NewcommandMethods.Macro, [def, params]) :
  56. NewcommandUtil_js_1.default.addMacro(parser, cs, NewcommandMethods.MacroWithTemplate, [def].concat(params));
  57. };
  58. NewcommandMethods.Let = function (parser, name) {
  59. var cs = NewcommandUtil_js_1.default.GetCSname(parser, name);
  60. var c = parser.GetNext();
  61. if (c === '=') {
  62. parser.i++;
  63. c = parser.GetNext();
  64. }
  65. var handlers = parser.configuration.handlers;
  66. if (c === '\\') {
  67. name = NewcommandUtil_js_1.default.GetCSname(parser, name);
  68. var macro_1 = handlers.get('delimiter').lookup('\\' + name);
  69. if (macro_1) {
  70. NewcommandUtil_js_1.default.addDelimiter(parser, '\\' + cs, macro_1.char, macro_1.attributes);
  71. return;
  72. }
  73. var map_1 = handlers.get('macro').applicable(name);
  74. if (!map_1) {
  75. return;
  76. }
  77. if (map_1 instanceof sm.MacroMap) {
  78. var macro_2 = map_1.lookup(name);
  79. NewcommandUtil_js_1.default.addMacro(parser, cs, macro_2.func, macro_2.args, macro_2.symbol);
  80. return;
  81. }
  82. macro_1 = map_1.lookup(name);
  83. var newArgs = NewcommandUtil_js_1.default.disassembleSymbol(cs, macro_1);
  84. var method = function (p, _cs) {
  85. var rest = [];
  86. for (var _i = 2; _i < arguments.length; _i++) {
  87. rest[_i - 2] = arguments[_i];
  88. }
  89. var symb = NewcommandUtil_js_1.default.assembleSymbol(rest);
  90. return map_1.parser(p, symb);
  91. };
  92. NewcommandUtil_js_1.default.addMacro(parser, cs, method, newArgs);
  93. return;
  94. }
  95. parser.i++;
  96. var macro = handlers.get('delimiter').lookup(c);
  97. if (macro) {
  98. NewcommandUtil_js_1.default.addDelimiter(parser, '\\' + cs, macro.char, macro.attributes);
  99. return;
  100. }
  101. NewcommandUtil_js_1.default.addMacro(parser, cs, NewcommandMethods.Macro, [c]);
  102. };
  103. NewcommandMethods.MacroWithTemplate = function (parser, name, text, n) {
  104. var params = [];
  105. for (var _i = 4; _i < arguments.length; _i++) {
  106. params[_i - 4] = arguments[_i];
  107. }
  108. var argCount = parseInt(n, 10);
  109. if (argCount) {
  110. var args = [];
  111. parser.GetNext();
  112. if (params[0] && !NewcommandUtil_js_1.default.MatchParam(parser, params[0])) {
  113. throw new TexError_js_1.default('MismatchUseDef', 'Use of %1 doesn\'t match its definition', name);
  114. }
  115. for (var i = 0; i < argCount; i++) {
  116. args.push(NewcommandUtil_js_1.default.GetParameter(parser, name, params[i + 1]));
  117. }
  118. text = ParseUtil_js_1.default.substituteArgs(parser, args, text);
  119. }
  120. parser.string = ParseUtil_js_1.default.addArgs(parser, text, parser.string.slice(parser.i));
  121. parser.i = 0;
  122. ParseUtil_js_1.default.checkMaxMacros(parser);
  123. };
  124. NewcommandMethods.BeginEnv = function (parser, begin, bdef, edef, n, def) {
  125. if (begin.getProperty('end') && parser.stack.env['closing'] === begin.getName()) {
  126. delete parser.stack.env['closing'];
  127. var rest = parser.string.slice(parser.i);
  128. parser.string = edef;
  129. parser.i = 0;
  130. parser.Parse();
  131. parser.string = rest;
  132. parser.i = 0;
  133. return parser.itemFactory.create('end').setProperty('name', begin.getName());
  134. }
  135. if (n) {
  136. var args = [];
  137. if (def != null) {
  138. var optional = parser.GetBrackets('\\begin{' + begin.getName() + '}');
  139. args.push(optional == null ? def : optional);
  140. }
  141. for (var i = args.length; i < n; i++) {
  142. args.push(parser.GetArgument('\\begin{' + begin.getName() + '}'));
  143. }
  144. bdef = ParseUtil_js_1.default.substituteArgs(parser, args, bdef);
  145. edef = ParseUtil_js_1.default.substituteArgs(parser, [], edef);
  146. }
  147. parser.string = ParseUtil_js_1.default.addArgs(parser, bdef, parser.string.slice(parser.i));
  148. parser.i = 0;
  149. return parser.itemFactory.create('beginEnv').setProperty('name', begin.getName());
  150. };
  151. NewcommandMethods.Macro = BaseMethods_js_1.default.Macro;
  152. exports.default = NewcommandMethods;
  153. //# sourceMappingURL=NewcommandMethods.js.map