@@ -161,6 +161,51 @@ describe "JSDoc grammar", ->
161161 expect (tokens[7 ]).toEqual value : ' ' , scopes : [' source.js' , ' comment.block.documentation.js' ]
162162 expect (tokens[8 ]).toEqual value : ' */' , scopes : [' source.js' , ' comment.block.documentation.js' , ' punctuation.section.end.comment.js' ]
163163
164+ it " tokenises @see tags with basic links" , ->
165+ {tokens } = grammar .tokenizeLine (' /** @see name#path */' )
166+ expect (tokens[0 ]).toEqual value : ' /**' , scopes : [' source.js' , ' comment.block.documentation.js' , ' punctuation.section.begin.comment.js' ]
167+ expect (tokens[2 ]).toEqual value : ' @' , scopes : [' source.js' , ' comment.block.documentation.js' , ' storage.type.class.jsdoc' , ' punctuation.definition.block.tag.jsdoc' ]
168+ expect (tokens[3 ]).toEqual value : ' see' , scopes : [' source.js' , ' comment.block.documentation.js' , ' storage.type.class.jsdoc' ]
169+ expect (tokens[4 ]).toEqual value : ' ' , scopes : [' source.js' , ' comment.block.documentation.js' ]
170+ expect (tokens[5 ]).toEqual value : ' name#path' , scopes : [' source.js' , ' comment.block.documentation.js' , ' entity.name.type.instance.jsdoc' ]
171+ expect (tokens[6 ]).toEqual value : ' ' , scopes : [' source.js' , ' comment.block.documentation.js' ]
172+ expect (tokens[7 ]).toEqual value : ' */' , scopes : [' source.js' , ' comment.block.documentation.js' , ' punctuation.section.end.comment.js' ]
173+
174+ {tokens } = grammar .tokenizeLine (' /** @see http://atom.io/ */' )
175+ expect (tokens[0 ]).toEqual value : ' /**' , scopes : [' source.js' , ' comment.block.documentation.js' , ' punctuation.section.begin.comment.js' ]
176+ expect (tokens[2 ]).toEqual value : ' @' , scopes : [' source.js' , ' comment.block.documentation.js' , ' storage.type.class.jsdoc' , ' punctuation.definition.block.tag.jsdoc' ]
177+ expect (tokens[3 ]).toEqual value : ' see' , scopes : [' source.js' , ' comment.block.documentation.js' , ' storage.type.class.jsdoc' ]
178+ expect (tokens[4 ]).toEqual value : ' ' , scopes : [' source.js' , ' comment.block.documentation.js' ]
179+ expect (tokens[5 ]).toEqual value : ' http://atom.io/' , scopes : [' source.js' , ' comment.block.documentation.js' , ' variable.other.link.underline.jsdoc' ]
180+ expect (tokens[6 ]).toEqual value : ' ' , scopes : [' source.js' , ' comment.block.documentation.js' ]
181+ expect (tokens[7 ]).toEqual value : ' */' , scopes : [' source.js' , ' comment.block.documentation.js' , ' punctuation.section.end.comment.js' ]
182+
183+ it " tokenises @see tags with {@link} tags" , ->
184+ {tokens } = grammar .tokenizeLine (' /** @see {@link text|Description} */' )
185+ expect (tokens[0 ]).toEqual value : ' /**' , scopes : [' source.js' , ' comment.block.documentation.js' , ' punctuation.section.begin.comment.js' ]
186+ expect (tokens[2 ]).toEqual value : ' @' , scopes : [' source.js' , ' comment.block.documentation.js' , ' storage.type.class.jsdoc' , ' punctuation.definition.block.tag.jsdoc' ]
187+ expect (tokens[3 ]).toEqual value : ' see' , scopes : [' source.js' , ' comment.block.documentation.js' , ' storage.type.class.jsdoc' ]
188+ expect (tokens[5 ]).toEqual value : ' {' , scopes : [' source.js' , ' comment.block.documentation.js' , ' entity.name.type.instance.jsdoc' , ' punctuation.definition.bracket.curly.begin.jsdoc' ]
189+ expect (tokens[6 ]).toEqual value : ' @' , scopes : [' source.js' , ' comment.block.documentation.js' , ' entity.name.type.instance.jsdoc' , ' storage.type.class.jsdoc' , ' punctuation.definition.inline.tag.jsdoc' ]
190+ expect (tokens[7 ]).toEqual value : ' link' , scopes : [' source.js' , ' comment.block.documentation.js' , ' entity.name.type.instance.jsdoc' , ' storage.type.class.jsdoc' ]
191+ expect (tokens[9 ]).toEqual value : ' text' , scopes : [' source.js' , ' comment.block.documentation.js' , ' entity.name.type.instance.jsdoc' , ' variable.other.description.jsdoc' ]
192+ expect (tokens[10 ]).toEqual value : ' |' , scopes : [' source.js' , ' comment.block.documentation.js' , ' entity.name.type.instance.jsdoc' , ' punctuation.separator.pipe.jsdoc' ]
193+ expect (tokens[11 ]).toEqual value : ' Description' , scopes : [' source.js' , ' comment.block.documentation.js' , ' entity.name.type.instance.jsdoc' ]
194+ expect (tokens[12 ]).toEqual value : ' }' , scopes : [' source.js' , ' comment.block.documentation.js' , ' entity.name.type.instance.jsdoc' , ' punctuation.definition.bracket.curly.end.jsdoc' ]
195+ expect (tokens[14 ]).toEqual value : ' */' , scopes : [' source.js' , ' comment.block.documentation.js' , ' punctuation.section.end.comment.js' ]
196+
197+ {tokens } = grammar .tokenizeLine (' /** @see [Description]{@link name#path} */' )
198+ expect (tokens[0 ]).toEqual value : ' /**' , scopes : [' source.js' , ' comment.block.documentation.js' , ' punctuation.section.begin.comment.js' ]
199+ expect (tokens[2 ]).toEqual value : ' @' , scopes : [' source.js' , ' comment.block.documentation.js' , ' storage.type.class.jsdoc' , ' punctuation.definition.block.tag.jsdoc' ]
200+ expect (tokens[3 ]).toEqual value : ' see' , scopes : [' source.js' , ' comment.block.documentation.js' , ' storage.type.class.jsdoc' ]
201+ expect (tokens[5 ]).toEqual value : ' [Description]' , scopes : [' source.js' , ' comment.block.documentation.js' , ' entity.name.type.instance.jsdoc' ]
202+ expect (tokens[6 ]).toEqual value : ' {' , scopes : [' source.js' , ' comment.block.documentation.js' , ' entity.name.type.instance.jsdoc' , ' punctuation.definition.bracket.curly.begin.jsdoc' ]
203+ expect (tokens[7 ]).toEqual value : ' @' , scopes : [' source.js' , ' comment.block.documentation.js' , ' entity.name.type.instance.jsdoc' , ' storage.type.class.jsdoc' , ' punctuation.definition.inline.tag.jsdoc' ]
204+ expect (tokens[8 ]).toEqual value : ' link' , scopes : [' source.js' , ' comment.block.documentation.js' , ' entity.name.type.instance.jsdoc' , ' storage.type.class.jsdoc' ]
205+ expect (tokens[10 ]).toEqual value : ' name#path' , scopes : [' source.js' , ' comment.block.documentation.js' , ' entity.name.type.instance.jsdoc' , ' variable.other.description.jsdoc' ]
206+ expect (tokens[11 ]).toEqual value : ' }' , scopes : [' source.js' , ' comment.block.documentation.js' , ' entity.name.type.instance.jsdoc' , ' punctuation.definition.bracket.curly.end.jsdoc' ]
207+ expect (tokens[13 ]).toEqual value : ' */' , scopes : [' source.js' , ' comment.block.documentation.js' , ' punctuation.section.end.comment.js' ]
208+
164209 it " tokenises tags with type expressions" , ->
165210 {tokens } = grammar .tokenizeLine (' /** @const {object} */' )
166211 expect (tokens[0 ]).toEqual value : ' /**' , scopes : [' source.js' , ' comment.block.documentation.js' , ' punctuation.section.begin.comment.js' ]
0 commit comments