1
1
import { expect , test } from '@jest/globals' ;
2
2
import { parseEditorContent } from './src/htmlparser.mjs' ;
3
3
4
- test ( 'html 1 ' , ( ) => {
4
+ test ( 'Language markers spread via several block elements. ' , ( ) => {
5
5
const html = '<p class="clo">{mlang de}</p><div>Foo bar {mlang}</div>' ;
6
6
const parsed = '<p class="clo"><span contenteditable="false" class="multilang-begin mceNonEditable" '
7
7
+ 'data-mce-contenteditable="false" lang="de" xml:lang="de">{mlang de}</span>'
@@ -12,15 +12,15 @@ test('html 1', () => {
12
12
expect ( parseEditorContent ( html ) ) . toEqual ( parsed ) ;
13
13
} ) ;
14
14
15
- test ( 'html 2 ' , ( ) => {
15
+ test ( 'Only one closing language tag. ' , ( ) => {
16
16
const html = '<div>Foo bar {mlang}</div>' ;
17
17
const parsed = '<div>Foo bar <span contenteditable="false" class="multilang-begin mceNonEditable" '
18
18
+ 'data-mce-contenteditable="false" lang="other" xml:lang="other">{mlang other}</span>'
19
19
+ '<span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span>' ;
20
20
expect ( parseEditorContent ( html ) ) . toEqual ( parsed ) ;
21
21
} ) ;
22
22
23
- test ( 'html 3 ' , ( ) => {
23
+ test ( 'Language tags in text and attribures, attributes without value. ' , ( ) => {
24
24
const html = '<p>{mlang en}This is a test{mlang}{mlang de}Das ist ein Test{mlang}.</p>\n'
25
25
+ '<p>This is a multilang link: <a\n'
26
26
+ ' href="https://google.com?lang={mlang de}de-DE{mlang}{mlang en}en-EN{mlang}" target="_blank">{mlang\n'
@@ -66,7 +66,7 @@ test('html 3', () => {
66
66
+ 'contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span></p>' ;
67
67
expect ( parseEditorContent ( html ) ) . toEqual ( parsed ) ;
68
68
} ) ;
69
- test ( 'html 4 ' , ( ) => {
69
+ test ( 'Already containing tiny tags for language markers. ' , ( ) => {
70
70
const html = '<p><span contenteditable="false" class="multilang-begin mceNonEditable"\n'
71
71
+ 'data-mce-contenteditable="false" lang="en" xml:lang="en">{mlang en}</span>English rules'
72
72
+ '<span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}'
@@ -76,7 +76,7 @@ test('html 4', () => {
76
76
+ 'contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span></p>' ;
77
77
expect ( parseEditorContent ( html ) ) . toEqual ( parsed ) ;
78
78
} ) ;
79
- test ( 'html 5 ' , ( ) => {
79
+ test ( 'Html containing comments. ' , ( ) => {
80
80
const html = '<p><!-- {mlang de}</p>\n'
81
81
+ '<p>Hallo</p>\n'
82
82
+ '<p>{mlang}--></p>\n'
@@ -91,4 +91,30 @@ test('html 5', () => {
91
91
+ 'data-mce-contenteditable="false">{mlang}</span></p>\n'
92
92
+ '<p>Done</p>\n' ;
93
93
expect ( parseEditorContent ( html ) ) . toEqual ( parsed ) ;
94
+ } ) ;
95
+ test ( 'Html containing a svg.' , ( ) => {
96
+ const html = '<p>Resistor: <svg xmlns="http://www.w3.org/2000/svg"\n'
97
+ + ' version="1.1" baseProfile="full"\n'
98
+ + ' width="700px" height="400px" viewBox="0 0 700 400">\n'
99
+ + '\n'
100
+ + '<!-- Connectors left and right -->\n'
101
+ + '<line x1="0" y1="200" x2="700" y2="200" stroke="black" stroke-width="20px"/>\n'
102
+ + '<!-- The rectangle -->\n'
103
+ + '<rect x="100" y="100" width="500" height="200" fill="white" stroke="black" stroke-width="20px"/>\n'
104
+ + '</svg></p>' ;
105
+ expect ( parseEditorContent ( html ) ) . toEqual ( html ) ;
106
+ } ) ;
107
+ test ( 'Html with tex anotations.' , ( ) => {
108
+ const html = '<p>The Quadratic Equation: <span class="math-tex">\\(ax^2 + bx + c = 0\\)</span></p>' ;
109
+ expect ( parseEditorContent ( html ) ) . toEqual ( html ) ;
110
+ } ) ;
111
+ test ( 'Html containing mathml elements.' , ( ) => {
112
+ const html = '<p>The Quadratic Equation: <span><math xmlns="http://www.w3.org/1998/Math/MathML">'
113
+ + ' <mrow>\n'
114
+ + ' <mi>a</mi> <mo>⁢</mo> <msup><mi>x</mi><mn>2</mn></msup>\n'
115
+ + ' <mo>+</mo><mi>b</mi><mo>⁢</mo><mi>x</mi>\n'
116
+ + ' <mo>+</mo><mi>c</mi>\n'
117
+ + ' </mrow>\n'
118
+ + '</math></span></p>' ;
119
+ expect ( parseEditorContent ( html ) ) . toEqual ( html ) ;
94
120
} ) ;
0 commit comments