Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit e96c442

Browse files
Gorashdmo-odoo
authored andcommitted
[IMP] Core: improve perf for modifiers
1 parent 487156a commit e96c442

File tree

6 files changed

+13
-35
lines changed

6 files changed

+13
-35
lines changed

packages/core/src/Modifier.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,11 @@ interface ModifierConstructor {
1313
export interface Modifier {
1414
constructor: ModifierConstructor & this;
1515
}
16-
export interface ModifierPreserve {
17-
after: boolean; // True to preserve modifier after the node that holds it.
18-
paragraphBreak: boolean; // True to preserve modifier after a paragraph break.
19-
lineBreak: boolean; // True to preserve modifier after a line break.
20-
}
2116
export class Modifier extends VersionableObject {
22-
preserve: ModifierPreserve = new VersionableObject({
23-
after: true,
24-
paragraphBreak: true,
25-
lineBreak: true,
26-
}) as ModifierPreserve;
17+
preserveAfterNode = true; // True to preserve modifier after the node that holds it.
18+
preserveAfterParagraphBreak = true; // True to preserve modifier after a paragraph break.
19+
preserveAfterLineBreak = true; // True to preserve modifier after a line break.
20+
2721
get name(): string {
2822
return '';
2923
}

packages/plugin-button/src/ButtonFormat.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
11
import { Format } from '../../core/src/Format';
2-
import { VersionableObject } from '../../core/src/Memory/VersionableObject';
3-
import { ModifierPreserve } from '../../core/src/Modifier';
42

53
export class ButtonFormat extends Format {
6-
preserve = new VersionableObject({
7-
after: true,
8-
paragraphBreak: false,
9-
lineBreak: false,
10-
}) as ModifierPreserve;
4+
preserveAfterParagraphBreak = false;
5+
preserveAfterLineBreak = false;
116
constructor() {
127
super('BUTTON');
138
}

packages/plugin-char/src/Char.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ export class Char<T extends JWPluginConfig = JWPluginConfig> extends JWPlugin<T>
5555
const isAfterLineBreak = previousSibling instanceof LineBreakNode;
5656
const preservedModifiers = modifiers.filter(mod => {
5757
if (isAfterLineBreak) {
58-
return mod.preserve.lineBreak;
58+
return mod.preserveAfterLineBreak;
5959
} else if (previousSibling) {
60-
return mod.preserve.after;
60+
return mod.preserveAfterNode;
6161
} else {
62-
return mod.preserve.paragraphBreak;
62+
return mod.preserveAfterParagraphBreak;
6363
}
6464
});
6565
if (preservedModifiers.length) {

packages/plugin-link/src/LinkFormat.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
import { Format } from '../../core/src/Format';
22
import { Attributes } from '../../plugin-xml/src/Attributes';
3-
import { VersionableObject } from '../../core/src/Memory/VersionableObject';
4-
import { ModifierPreserve } from '../../core/src/Modifier';
53

64
export class LinkFormat extends Format {
5+
preserveAfterParagraphBreak = false;
6+
77
constructor(url = '#', target = '') {
88
super('A');
9-
this.preserve = new VersionableObject({
10-
after: true,
11-
paragraphBreak: false,
12-
lineBreak: true,
13-
}) as ModifierPreserve;
149
this.url = url;
1510
if (target) {
1611
this.target = target;

packages/plugin-table/src/TableRowXmlDomParser.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { XmlDomParsingEngine } from '../../plugin-xml/src/XmlDomParsingEngine';
33
import { TableRowNode } from './TableRowNode';
44
import { nodeName } from '../../utils/src/utils';
55
import { Attributes } from '../../plugin-xml/src/Attributes';
6-
import { Modifiers } from '../../core/src/Modifiers';
76

87
export class TableSectionAttributes extends Attributes {}
98

packages/plugin-xml/src/Attributes.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
1-
import { Modifier, ModifierPreserve } from '../../core/src/Modifier';
1+
import { Modifier } from '../../core/src/Modifier';
22
import { CssStyle } from './CssStyle';
33
import { ClassList } from './ClassList';
44
import { makeVersionable } from '../../core/src/Memory/Versionable';
5-
import { VersionableObject } from '../../core/src/Memory/VersionableObject';
65

76
export class Attributes extends Modifier {
87
private _record: Record<string, string>;
98
style = new CssStyle();
109
// Avoid copiying FontAwesome classes on paragraph break.
1110
// TODO : need to be improved to better take care of color classes, etc.
12-
preserve = new VersionableObject({
13-
after: true,
14-
paragraphBreak: false,
15-
lineBreak: true,
16-
}) as ModifierPreserve;
11+
preserveAfterParagraphBreak = false;
1712
classList = new ClassList();
1813
constructor(attributes?: Attributes | NamedNodeMap | Record<string, string>) {
1914
super();

0 commit comments

Comments
 (0)