@@ -70,4 +70,50 @@ describe("bbcode-ast tests", () => {
7070 expect ( ( ( ( parsed . children [ 0 ] as Node ) . children [ 1 ] as ListItemNode ) . children [ 0 ] as TextNode ) . text ) . to . equal ( "Hello world!" ) ;
7171 expect ( parsed . toString ( ) ) . to . equal ( "[list][*]Hello world![*]Hello world![/list]" ) ;
7272 } )
73+
74+ it ( "Should parse simple attributes" , ( ) => {
75+ const parsed = defaultParser . parse ( "[color=red]Hello world![/color]" )
76+ expect ( parsed . children . length ) . to . equal ( 1 ) ;
77+ expect ( parsed . children [ 0 ] . name ) . to . equal ( "color" ) ;
78+ expect ( ( parsed . children [ 0 ] as Node ) . value ) . to . equal ( "red" ) ;
79+ expect ( ( parsed . children [ 0 ] as Node ) . children . length ) . to . equal ( 1 ) ;
80+ expect ( ( parsed . children [ 0 ] as Node ) . children [ 0 ] . name ) . to . equal ( "TextNode" ) ;
81+ expect ( ( ( parsed . children [ 0 ] as Node ) . children [ 0 ] as TextNode ) . text ) . to . equal ( "Hello world!" ) ;
82+ expect ( parsed . toString ( ) ) . to . equal ( "[color=red]Hello world![/color]" ) ;
83+ } )
84+
85+ it ( "Should parse simple attributes with space and quotes" , ( ) => {
86+ const parsed = defaultParser . parse ( '[spoiler="a spoiler"]Hello world![/spoiler]' )
87+ expect ( parsed . children . length ) . to . equal ( 1 ) ;
88+ expect ( parsed . children [ 0 ] . name ) . to . equal ( "spoiler" ) ;
89+ expect ( ( parsed . children [ 0 ] as Node ) . value ) . to . equal ( '"a spoiler"' ) ;
90+ expect ( ( parsed . children [ 0 ] as Node ) . children . length ) . to . equal ( 1 ) ;
91+ expect ( ( parsed . children [ 0 ] as Node ) . children [ 0 ] . name ) . to . equal ( "TextNode" ) ;
92+ expect ( ( ( parsed . children [ 0 ] as Node ) . children [ 0 ] as TextNode ) . text ) . to . equal ( "Hello world!" ) ;
93+ expect ( parsed . toString ( ) ) . to . equal ( '[spoiler="a spoiler"]Hello world![/spoiler]' ) ;
94+ } )
95+
96+ it ( "Should parse complex attributes" , ( ) => {
97+ const parsed = defaultParser . parse ( "[url=https://www.google.com][img align=right]https://i.imgur.com/oz0a7.jpg[/img][/url]" )
98+ expect ( parsed . children . length ) . to . equal ( 1 ) ;
99+ expect ( parsed . children [ 0 ] . name ) . to . equal ( "url" ) ;
100+ expect ( ( parsed . children [ 0 ] as Node ) . value ) . to . equal ( "https://www.google.com" ) ;
101+ expect ( ( parsed . children [ 0 ] as Node ) . children . length ) . to . equal ( 1 ) ;
102+ expect ( ( parsed . children [ 0 ] as Node ) . children [ 0 ] . name ) . to . equal ( "img" ) ;
103+ expect ( ( ( parsed . children [ 0 ] as Node ) . children [ 0 ] as Node ) . attributes ) . to . deep . equal ( { align : "right" } ) ;
104+ expect ( ( ( ( parsed . children [ 0 ] as Node ) . children [ 0 ] as Node ) . children [ 0 ] as TextNode ) . text ) . to . equal ( "https://i.imgur.com/oz0a7.jpg" ) ;
105+ expect ( parsed . toString ( ) ) . to . equal ( "[url=https://www.google.com][img align=right]https://i.imgur.com/oz0a7.jpg[/img][/url]" ) ;
106+ } )
107+
108+ it ( "Should parse complex attributes and quotes" , ( ) => {
109+ const parsed = defaultParser . parse ( "[url=https://www.google.com][img align='right']https://i.imgur.com/oz0a7.jpg[/img][/url]" )
110+ expect ( parsed . children . length ) . to . equal ( 1 ) ;
111+ expect ( parsed . children [ 0 ] . name ) . to . equal ( "url" ) ;
112+ expect ( ( parsed . children [ 0 ] as Node ) . value ) . to . equal ( "https://www.google.com" ) ;
113+ expect ( ( parsed . children [ 0 ] as Node ) . children . length ) . to . equal ( 1 ) ;
114+ expect ( ( parsed . children [ 0 ] as Node ) . children [ 0 ] . name ) . to . equal ( "img" ) ;
115+ expect ( ( ( parsed . children [ 0 ] as Node ) . children [ 0 ] as Node ) . attributes ) . to . deep . equal ( { align : "'right'" } ) ;
116+ expect ( ( ( ( parsed . children [ 0 ] as Node ) . children [ 0 ] as Node ) . children [ 0 ] as TextNode ) . text ) . to . equal ( "https://i.imgur.com/oz0a7.jpg" ) ;
117+ expect ( parsed . toString ( ) ) . to . equal ( "[url=https://www.google.com][img align='right']https://i.imgur.com/oz0a7.jpg[/img][/url]" ) ;
118+ } )
73119} )
0 commit comments