BoldsymbolConfiguration.js 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. "use strict";
  2. var __values = (this && this.__values) || function(o) {
  3. var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
  4. if (m) return m.call(o);
  5. if (o && typeof o.length === "number") return {
  6. next: function () {
  7. if (o && i >= o.length) o = void 0;
  8. return { value: o && o[i++], done: !o };
  9. }
  10. };
  11. throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
  12. };
  13. var __importDefault = (this && this.__importDefault) || function (mod) {
  14. return (mod && mod.__esModule) ? mod : { "default": mod };
  15. };
  16. Object.defineProperty(exports, "__esModule", { value: true });
  17. exports.BoldsymbolConfiguration = exports.rewriteBoldTokens = exports.createBoldToken = exports.BoldsymbolMethods = void 0;
  18. var Configuration_js_1 = require("../Configuration.js");
  19. var NodeUtil_js_1 = __importDefault(require("../NodeUtil.js"));
  20. var TexConstants_js_1 = require("../TexConstants.js");
  21. var SymbolMap_js_1 = require("../SymbolMap.js");
  22. var NodeFactory_js_1 = require("../NodeFactory.js");
  23. var BOLDVARIANT = {};
  24. BOLDVARIANT[TexConstants_js_1.TexConstant.Variant.NORMAL] = TexConstants_js_1.TexConstant.Variant.BOLD;
  25. BOLDVARIANT[TexConstants_js_1.TexConstant.Variant.ITALIC] = TexConstants_js_1.TexConstant.Variant.BOLDITALIC;
  26. BOLDVARIANT[TexConstants_js_1.TexConstant.Variant.FRAKTUR] = TexConstants_js_1.TexConstant.Variant.BOLDFRAKTUR;
  27. BOLDVARIANT[TexConstants_js_1.TexConstant.Variant.SCRIPT] = TexConstants_js_1.TexConstant.Variant.BOLDSCRIPT;
  28. BOLDVARIANT[TexConstants_js_1.TexConstant.Variant.SANSSERIF] = TexConstants_js_1.TexConstant.Variant.BOLDSANSSERIF;
  29. BOLDVARIANT['-tex-calligraphic'] = '-tex-bold-calligraphic';
  30. BOLDVARIANT['-tex-oldstyle'] = '-tex-bold-oldstyle';
  31. BOLDVARIANT['-tex-mathit'] = TexConstants_js_1.TexConstant.Variant.BOLDITALIC;
  32. exports.BoldsymbolMethods = {};
  33. exports.BoldsymbolMethods.Boldsymbol = function (parser, name) {
  34. var boldsymbol = parser.stack.env['boldsymbol'];
  35. parser.stack.env['boldsymbol'] = true;
  36. var mml = parser.ParseArg(name);
  37. parser.stack.env['boldsymbol'] = boldsymbol;
  38. parser.Push(mml);
  39. };
  40. new SymbolMap_js_1.CommandMap('boldsymbol', { boldsymbol: 'Boldsymbol' }, exports.BoldsymbolMethods);
  41. function createBoldToken(factory, kind, def, text) {
  42. var token = NodeFactory_js_1.NodeFactory.createToken(factory, kind, def, text);
  43. if (kind !== 'mtext' &&
  44. factory.configuration.parser.stack.env['boldsymbol']) {
  45. NodeUtil_js_1.default.setProperty(token, 'fixBold', true);
  46. factory.configuration.addNode('fixBold', token);
  47. }
  48. return token;
  49. }
  50. exports.createBoldToken = createBoldToken;
  51. function rewriteBoldTokens(arg) {
  52. var e_1, _a;
  53. try {
  54. for (var _b = __values(arg.data.getList('fixBold')), _c = _b.next(); !_c.done; _c = _b.next()) {
  55. var node = _c.value;
  56. if (NodeUtil_js_1.default.getProperty(node, 'fixBold')) {
  57. var variant = NodeUtil_js_1.default.getAttribute(node, 'mathvariant');
  58. if (variant == null) {
  59. NodeUtil_js_1.default.setAttribute(node, 'mathvariant', TexConstants_js_1.TexConstant.Variant.BOLD);
  60. }
  61. else {
  62. NodeUtil_js_1.default.setAttribute(node, 'mathvariant', BOLDVARIANT[variant] || variant);
  63. }
  64. NodeUtil_js_1.default.removeProperties(node, 'fixBold');
  65. }
  66. }
  67. }
  68. catch (e_1_1) { e_1 = { error: e_1_1 }; }
  69. finally {
  70. try {
  71. if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
  72. }
  73. finally { if (e_1) throw e_1.error; }
  74. }
  75. }
  76. exports.rewriteBoldTokens = rewriteBoldTokens;
  77. exports.BoldsymbolConfiguration = Configuration_js_1.Configuration.create('boldsymbol', {
  78. handler: { macro: ['boldsymbol'] },
  79. nodes: { 'token': createBoldToken },
  80. postprocessors: [rewriteBoldTokens]
  81. });
  82. //# sourceMappingURL=BoldsymbolConfiguration.js.map