Skip to content

Commit 30e42a2

Browse files
committed
Moves configuration of ParseOptions into its constructor.
1 parent 794b6ac commit 30e42a2

File tree

3 files changed

+20
-41
lines changed

3 files changed

+20
-41
lines changed

mathjax3-ts/input/tex.ts

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ import TexError from './tex/TexError.js';
3535
import ParseOptions from './tex/ParseOptions.js';
3636
import {TagsFactory} from './tex/Tags.js';
3737
import {Configuration, ConfigurationHandler} from './tex/Configuration.js';
38-
import {SubHandlers} from './tex/MapHandler.js';
3938
// Import base as it is the default package loaded.
4039
import './tex/base/BaseConfiguration.js';
4140

@@ -102,26 +101,6 @@ export class TeX<N, T, D> extends AbstractInputJax<N, T, D> {
102101

103102

104103

105-
/**
106-
* Initialises the parse options.
107-
* @param {Configuration} configuration A configuration.
108-
* @return {ParseOptions} The initialised parse options.
109-
*/
110-
private static options(configuration: Configuration): ParseOptions {
111-
let options = new ParseOptions();
112-
options.handlers = new SubHandlers(configuration);
113-
options.itemFactory.configuration = options;
114-
// Add node factory methods from packages.
115-
options.nodeFactory.configuration = options;
116-
options.nodeFactory.setCreators(configuration.nodes);
117-
// Add stackitems from packages.
118-
options.itemFactory.addStackItems(configuration.items);
119-
// Set default options for parser from packages and for tags.
120-
defaultOptions(options.options, TeX.OPTIONS, TagsFactory.OPTIONS, configuration.options);
121-
return options;
122-
};
123-
124-
125104
/**
126105
* Initialises the Tags factory. Add tagging structures from packages and set
127106
* tagging to given default.
@@ -141,8 +120,8 @@ export class TeX<N, T, D> extends AbstractInputJax<N, T, D> {
141120
constructor(options: OptionList = {}) {
142121
let packages = options['packages'] || TeX.OPTIONS['packages'];
143122
let configuration = TeX.configure(packages);
144-
let parseOptions = TeX.options(configuration);
145-
defaultOptions(parseOptions.options, {'packages': packages});
123+
let parseOptions = new ParseOptions(configuration,
124+
[TeX.OPTIONS, TagsFactory.OPTIONS, {'packages': packages}]);
146125
let [tex, find, rest] = separateOptions(options, FindTeX.OPTIONS, parseOptions.options);
147126
super(tex);
148127
userOptions(parseOptions.options, options);

mathjax3-ts/input/tex/ParseOptions.ts

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ import {HandlerType, SubHandlers} from './MapHandler.js';
2828
import {NodeFactory} from './NodeFactory.js';
2929
import {MmlNode} from '../../core/MmlTree/MmlNode.js';
3030
import TexParser from './TexParser.js';
31-
import {OptionList} from '../../util/Options.js';
31+
import {defaultOptions, OptionList} from '../../util/Options.js';
32+
import {Configuration} from './Configuration.js';
3233

3334

3435
/**
@@ -46,19 +47,19 @@ export default class ParseOptions {
4647
* A set of options, mapping names to string or boolean values.
4748
* @type {OptionList}
4849
*/
49-
public options: OptionList;
50+
public options: OptionList = {};
5051

5152
/**
5253
* The current item factory.
5354
* @type {StackItemFactory}
5455
*/
55-
public itemFactory: StackItemFactory = new StackItemFactory();
56+
public itemFactory: StackItemFactory;
5657

5758
/**
5859
* The current node factory.
5960
* @type {NodeFactory}
6061
*/
61-
public nodeFactory: NodeFactory = new NodeFactory();
62+
public nodeFactory: NodeFactory;
6263

6364
/**
6465
* The current tagging object.
@@ -101,8 +102,18 @@ export default class ParseOptions {
101102
* @param {{[key: string]: (string|boolean)}} setting A list of option
102103
* settings. Those are added to the default options.
103104
*/
104-
public constructor(setting: OptionList = {}) {
105-
this.options = setting;
105+
public constructor(configuration: Configuration, options: OptionList[] = []) {
106+
this.handlers = new SubHandlers(configuration);
107+
// Add node factory methods from packages.
108+
this.nodeFactory = new NodeFactory();
109+
this.nodeFactory.configuration = this;
110+
this.nodeFactory.setCreators(configuration.nodes);
111+
// Add stackitems from packages.
112+
this.itemFactory = new StackItemFactory(configuration.items);
113+
this.itemFactory.configuration = this;
114+
// Set default options for parser from packages and for tags.
115+
defaultOptions(this.options, ...options);
116+
defaultOptions(this.options, configuration.options);
106117
}
107118

108119

mathjax3-ts/input/tex/StackItemFactory.ts

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class DummyItem extends BaseItem {}
3838
* @constructor
3939
* @extends {AbstractFactory}
4040
*/
41-
export default class StackItemFactory extends AbstractFactory<StackItem, StackItemClass>{
41+
export default class StackItemFactory extends AbstractFactory<StackItem, StackItemClass> {
4242

4343
/**
4444
* @override
@@ -60,15 +60,4 @@ export default class StackItemFactory extends AbstractFactory<StackItem, StackIt
6060
*/
6161
public configuration: ParseOptions = null;
6262

63-
64-
/**
65-
* Adds a list of stack items to the current factory.
66-
* @param {Object.<string, StackItemClass>} stackItems A list of stackitems.
67-
*/
68-
public addStackItems(stackItems: {[kind: string]: StackItemClass}) {
69-
for (const kind of Object.keys(stackItems)) {
70-
this.setNodeClass(kind, stackItems[kind]);
71-
}
72-
}
73-
7463
}

0 commit comments

Comments
 (0)