source: node_modules/refractor/lang/jsdoc.js

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 2.8 KB
RevLine 
[d24f17c]1'use strict'
2var refractorJavadoclike = require('./javadoclike.js')
3var refractorTypescript = require('./typescript.js')
4module.exports = jsdoc
5jsdoc.displayName = 'jsdoc'
6jsdoc.aliases = []
7function jsdoc(Prism) {
8 Prism.register(refractorJavadoclike)
9 Prism.register(refractorTypescript)
10 ;(function (Prism) {
11 var javascript = Prism.languages.javascript
12 var type = /\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source
13 var parameterPrefix =
14 '(@(?:arg|argument|param|property)\\s+(?:' + type + '\\s+)?)'
15 Prism.languages.jsdoc = Prism.languages.extend('javadoclike', {
16 parameter: {
17 // @param {string} foo - foo bar
18 pattern: RegExp(
19 parameterPrefix + /(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source
20 ),
21 lookbehind: true,
22 inside: {
23 punctuation: /\./
24 }
25 }
26 })
27 Prism.languages.insertBefore('jsdoc', 'keyword', {
28 'optional-parameter': {
29 // @param {string} [baz.foo="bar"] foo bar
30 pattern: RegExp(
31 parameterPrefix +
32 /\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source
33 ),
34 lookbehind: true,
35 inside: {
36 parameter: {
37 pattern: /(^\[)[$\w\xA0-\uFFFF\.]+/,
38 lookbehind: true,
39 inside: {
40 punctuation: /\./
41 }
42 },
43 code: {
44 pattern: /(=)[\s\S]*(?=\]$)/,
45 lookbehind: true,
46 inside: javascript,
47 alias: 'language-javascript'
48 },
49 punctuation: /[=[\]]/
50 }
51 },
52 'class-name': [
53 {
54 pattern: RegExp(
55 /(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(
56 /<TYPE>/g,
57 function () {
58 return type
59 }
60 )
61 ),
62 lookbehind: true,
63 inside: {
64 punctuation: /\./
65 }
66 },
67 {
68 pattern: RegExp('(@[a-z]+\\s+)' + type),
69 lookbehind: true,
70 inside: {
71 string: javascript.string,
72 number: javascript.number,
73 boolean: javascript.boolean,
74 keyword: Prism.languages.typescript.keyword,
75 operator: /=>|\.\.\.|[&|?:*]/,
76 punctuation: /[.,;=<>{}()[\]]/
77 }
78 }
79 ],
80 example: {
81 pattern:
82 /(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,
83 lookbehind: true,
84 inside: {
85 code: {
86 pattern: /^([\t ]*(?:\*\s*)?)\S.*$/m,
87 lookbehind: true,
88 inside: javascript,
89 alias: 'language-javascript'
90 }
91 }
92 }
93 })
94 Prism.languages.javadoclike.addSupport('javascript', Prism.languages.jsdoc)
95 })(Prism)
96}
Note: See TracBrowser for help on using the repository browser.