1
+ import { expect , test } from '@jest/globals' ;
2
+ import { parseEditorContent } from './src/htmlparser.mjs' ;
3
+
4
+ test ( 'html 1' , ( ) => {
5
+ const html = '<p class="clo">{mlang de}</p><div>Foo bar {mlang}</div>' ;
6
+ const parsed = '<p class="clo"><span contenteditable="false" class="multilang-begin mceNonEditable" '
7
+ + 'data-mce-contenteditable="false" lang="de" xml:lang="de">{mlang de}</span>'
8
+ + '<span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span>'
9
+ + '<div>Foo bar <span contenteditable="false" class="multilang-begin mceNonEditable" data-mce-contenteditable="false" '
10
+ + 'lang="other" xml:lang="other">{mlang other}</span><span contenteditable="false" class="multilang-end mceNonEditable" '
11
+ + 'data-mce-contenteditable="false">{mlang}</span>' ;
12
+ expect ( parseEditorContent ( html ) ) . toEqual ( parsed ) ;
13
+ } ) ;
14
+
15
+ test ( 'html 2' , ( ) => {
16
+ const html = '<div>Foo bar {mlang}</div>' ;
17
+ const parsed = '<div>Foo bar <span contenteditable="false" class="multilang-begin mceNonEditable" '
18
+ + 'data-mce-contenteditable="false" lang="other" xml:lang="other">{mlang other}</span>'
19
+ + '<span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span>' ;
20
+ expect ( parseEditorContent ( html ) ) . toEqual ( parsed ) ;
21
+ } ) ;
22
+
23
+ test ( 'html 3' , ( ) => {
24
+ const html = `<p>{mlang en}This is a test{mlang}{mlang de}Das ist ein Test{mlang}.</p>
25
+ <p>This is a multilang link: <a
26
+ href="https://google.com?lang={mlang de}de-DE{mlang}{mlang en}en-EN{mlang}" target="_blank">{mlang
27
+ de}de{mlang}{mlang en}other{mlang}</a></p>
28
+ <p>{mlang de}</p>
29
+ <p>ein Paragraf auf Deutch</p>
30
+ <br><hr strong/>
31
+ <p class="clo">{mlang}</p>
32
+ <p>{mlang other}This is <b>a</b> test{mlang}{mlang de}Das ist ein Test{mlang}.</p>
33
+ <p>{mlang en}This is a test{mlang}{mlang de}Das ist ein Test{mlang}.</p>
34
+ <p><span contenteditable="false" class="multilang-begin mceNonEditable"
35
+ data-mce-contenteditable="false" lang="en" xml:lang="en">{mlang en}</span>English rules<span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span></p>` ;
36
+ const parsed = `<p><span contenteditable="false" class="multilang-begin mceNonEditable" data-mce-contenteditable="false" lang="en" xml:lang="en">{mlang en}</span>This is a test<span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span><span contenteditable="false" class="multilang-begin mceNonEditable" data-mce-contenteditable="false" lang="de" xml:lang="de">{mlang de}</span>Das ist ein Test<span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span>.</p>
37
+ <p>This is a multilang link: <a
38
+ href="https://google.com?lang={mlang de}de-DE{mlang}{mlang en}en-EN{mlang}" target="_blank"><span contenteditable="false" class="multilang-begin mceNonEditable" data-mce-contenteditable="false" lang="de" xml:lang="de">{mlang de}</span>de<span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span><span contenteditable="false" class="multilang-begin mceNonEditable" data-mce-contenteditable="false" lang="en" xml:lang="en">{mlang en}</span>other<span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span></a></p>
39
+ <p><span contenteditable="false" class="multilang-begin mceNonEditable" data-mce-contenteditable="false" lang="de" xml:lang="de">{mlang de}</span><span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span>
40
+ <p>ein Paragraf auf Deutch</p>
41
+ <br><hr strong/>
42
+ <p class="clo"><span contenteditable="false" class="multilang-begin mceNonEditable" data-mce-contenteditable="false" lang="other" xml:lang="other">{mlang other}</span><span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span>
43
+ <p><span contenteditable="false" class="multilang-begin mceNonEditable" data-mce-contenteditable="false" lang="other" xml:lang="other">{mlang other}</span>This is <b>a</b> test{mlang}{mlang de}Das ist ein Test{mlang}.<span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span>
44
+ <p><span contenteditable="false" class="multilang-begin mceNonEditable" data-mce-contenteditable="false" lang="en" xml:lang="en">{mlang en}</span>This is a test<span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span><span contenteditable="false" class="multilang-begin mceNonEditable" data-mce-contenteditable="false" lang="de" xml:lang="de">{mlang de}</span>Das ist ein Test<span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span>.</p>
45
+ <p><span contenteditable="false" class="multilang-begin mceNonEditable"
46
+ data-mce-contenteditable="false" lang="en" xml:lang="en">{mlang en}</span>English rules<span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span></p>` ;
47
+ expect ( parseEditorContent ( html ) ) . toEqual ( parsed ) ;
48
+ } ) ;
49
+ test ( 'html 4' , ( ) => {
50
+ const html = `<p><span contenteditable="false" class="multilang-begin mceNonEditable"
51
+ data-mce-contenteditable="false" lang="en" xml:lang="en">{mlang en}</span>English rules<span contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span></p>` ;
52
+ const parsed = '<p><span contenteditable="false" class="multilang-begin mceNonEditable"\n'
53
+ + 'data-mce-contenteditable="false" lang="en" xml:lang="en">{mlang en}</span>English rules<span '
54
+ + 'contenteditable="false" class="multilang-end mceNonEditable" data-mce-contenteditable="false">{mlang}</span></p>' ;
55
+ expect ( parseEditorContent ( html ) ) . toEqual ( parsed ) ;
56
+ } ) ;
0 commit comments