11import { builders } from 'prosemirror-test-builder' ;
22import { createMarkupChecker } from '../../../../tests/sameMarkup' ;
3+ import { parseDOM } from '../../../../tests/parse-dom' ;
34import { ExtensionsManager } from '../../../core' ;
45import { BaseNode , BaseSpecsPreset } from '../../base/specs' ;
56import { colorMarkName , ColorSpecs } from './ColorSpecs' ;
67
78const { schema, parser, serializer} = new ExtensionsManager ( {
8- extensions : ( builder ) => builder . use ( BaseSpecsPreset , { } ) . use ( ColorSpecs ) ,
9+ extensions : ( builder ) =>
10+ builder . use ( BaseSpecsPreset , { } ) . use ( ColorSpecs , {
11+ validateClassNameColorName : ( color ) => color !== 'something' ,
12+ parseStyleColorValue : ( value : string ) => ( value === 'darkred' ? 'red' : null ) ,
13+ } ) ,
914} ) . buildDeps ( ) ;
1015
11- const { doc, p, c1, c2} = builders ( schema , {
16+ const { doc, p, color , c1, c2} = builders ( schema , {
1217 doc : { nodeType : BaseNode . Doc } ,
1318 p : { nodeType : BaseNode . Paragraph } ,
19+ color : { markType : colorMarkName } ,
1420 c1 : { nodeType : colorMarkName , [ colorMarkName ] : 'c1' } ,
1521 c2 : { nodeType : colorMarkName , [ colorMarkName ] : 'c2' } ,
16- } ) as PMTestBuilderResult < 'doc' | 'p' , 'c1' | 'c2' > ;
22+ } ) as PMTestBuilderResult < 'doc' | 'p' , 'color' | ' c1' | 'c2' > ;
1723
1824const { same} = createMarkupChecker ( { parser, serializer} ) ;
1925
@@ -22,4 +28,44 @@ describe('Color extension', () => {
2228
2329 it ( 'should parse code inside text' , ( ) =>
2430 same ( 'he{c2}(llo wor)ld!' , doc ( p ( 'he' , c2 ( 'llo wor' ) , 'ld!' ) ) ) ) ;
31+
32+ it ( 'should parse span with md-colorify--* classname' , ( ) => {
33+ parseDOM (
34+ schema ,
35+ '<span class="md-colorify--mdcolor">text with md color</span>' ,
36+ doc ( p ( color ( { [ colorMarkName ] : 'mdcolor' } , 'text with md color' ) ) ) ,
37+ ) ;
38+ } ) ;
39+
40+ it ( 'should parse span with yfm-colorify--* classname' , ( ) => {
41+ parseDOM (
42+ schema ,
43+ '<span class="yfm-colorify--yfmcolor">text with yfm color</span>' ,
44+ doc ( p ( color ( { [ colorMarkName ] : 'yfmcolor' } , 'text with yfm color' ) ) ) ,
45+ ) ;
46+ } ) ;
47+
48+ it ( 'should not parse span with yfm-colorify--something classname' , ( ) => {
49+ parseDOM (
50+ schema ,
51+ '<span class="yfm-colorify--something">text with yfm color</span>' ,
52+ doc ( p ( 'text with yfm color' ) ) ,
53+ ) ;
54+ } ) ;
55+
56+ it ( 'should parse span with style color darkred' , ( ) => {
57+ parseDOM (
58+ schema ,
59+ '<span style="color:darkred">text with style color</span>' ,
60+ doc ( p ( color ( { [ colorMarkName ] : 'red' } , 'text with style color' ) ) ) ,
61+ ) ;
62+ } ) ;
63+
64+ it ( 'should not parse span with style color red' , ( ) => {
65+ parseDOM (
66+ schema ,
67+ '<span style="color:red">text with style color</span>' ,
68+ doc ( p ( 'text with style color' ) ) ,
69+ ) ;
70+ } ) ;
2571} ) ;
0 commit comments