@@ -70,4 +70,50 @@ describe("bbcode-ast tests", () => {
70
70
expect ( ( ( ( parsed . children [ 0 ] as Node ) . children [ 1 ] as ListItemNode ) . children [ 0 ] as TextNode ) . text ) . to . equal ( "Hello world!" ) ;
71
71
expect ( parsed . toString ( ) ) . to . equal ( "[list][*]Hello world![*]Hello world![/list]" ) ;
72
72
} )
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
+ } )
73
119
} )
0 commit comments