From 493d19ef48adfbefffadf81c665e7d598bed3ea5 Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Thu, 28 Feb 2019 21:01:31 +0100 Subject: [PATCH] Added doc comment highlighting (#1541) This adds support for JavaDoc, JSDoc, TSDoc, and PHPDoc. --- components.js | 2 +- components.json | 39 +++- components/prism-javadoc.js | 54 ++++++ components/prism-javadoc.min.js | 1 + components/prism-javadoclike.js | 86 +++++++++ components/prism-javadoclike.min.js | 1 + components/prism-jsdoc.js | 73 +++++++ components/prism-jsdoc.min.js | 1 + components/prism-phpdoc.js | 27 +++ components/prism-phpdoc.min.js | 1 + plugins/autoloader/prism-autoloader.js | 2 +- plugins/autoloader/prism-autoloader.min.js | 2 +- plugins/show-language/prism-show-language.js | 2 +- .../show-language/prism-show-language.min.js | 2 +- .../javadoc+java/javadoc_inclusion.test | 11 ++ .../languages/javadoc/class-name_feature.test | 40 ++++ tests/languages/javadoc/code_feature.test | 135 +++++++++++++ tests/languages/javadoc/keyword_feature.test | 69 +++++++ .../languages/javadoc/parameter_feature.test | 20 ++ tests/languages/javadoc/tag_feature.test | 117 +++++++++++ .../jsdoc+javascript/jsdoc_inclusion.test | 11 ++ tests/languages/jsdoc/class-name_feature.test | 75 ++++++++ tests/languages/jsdoc/example_feature.test | 35 ++++ tests/languages/jsdoc/keyword_feature.test | 182 ++++++++++++++++++ tests/languages/jsdoc/parameter_feature.test | 86 +++++++++ .../phpdoc+php/phpdoc_inclusion.test | 11 ++ .../languages/phpdoc/class-name_feature.test | 45 +++++ tests/languages/phpdoc/keyword_feature.test | 99 ++++++++++ tests/languages/phpdoc/parameter_feature.test | 23 +++ 29 files changed, 1246 insertions(+), 6 deletions(-) create mode 100644 components/prism-javadoc.js create mode 100644 components/prism-javadoc.min.js create mode 100644 components/prism-javadoclike.js create mode 100644 components/prism-javadoclike.min.js create mode 100644 components/prism-jsdoc.js create mode 100644 components/prism-jsdoc.min.js create mode 100644 components/prism-phpdoc.js create mode 100644 components/prism-phpdoc.min.js create mode 100644 tests/languages/javadoc+java/javadoc_inclusion.test create mode 100644 tests/languages/javadoc/class-name_feature.test create mode 100644 tests/languages/javadoc/code_feature.test create mode 100644 tests/languages/javadoc/keyword_feature.test create mode 100644 tests/languages/javadoc/parameter_feature.test create mode 100644 tests/languages/javadoc/tag_feature.test create mode 100644 tests/languages/jsdoc+javascript/jsdoc_inclusion.test create mode 100644 tests/languages/jsdoc/class-name_feature.test create mode 100644 tests/languages/jsdoc/example_feature.test create mode 100644 tests/languages/jsdoc/keyword_feature.test create mode 100644 tests/languages/jsdoc/parameter_feature.test create mode 100644 tests/languages/phpdoc+php/phpdoc_inclusion.test create mode 100644 tests/languages/phpdoc/class-name_feature.test create mode 100644 tests/languages/phpdoc/keyword_feature.test create mode 100644 tests/languages/phpdoc/parameter_feature.test diff --git a/components.js b/components.js index ce2dbb80f3..e37cfa4eaa 100644 --- a/components.js +++ b/components.js @@ -1,2 +1,2 @@ -var components = {"core":{"meta":{"path":"components/prism-core.js","option":"mandatory"},"core":"Core"},"themes":{"meta":{"path":"themes/{id}.css","link":"index.html?theme={id}","exclusive":true},"prism":{"title":"Default","option":"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{"title":"Okaidia","owner":"ocodia"},"prism-twilight":{"title":"Twilight","owner":"remybach"},"prism-coy":{"title":"Coy","owner":"tshedor"},"prism-solarizedlight":{"title":"Solarized Light","owner":"hectormatos2011 "},"prism-tomorrow":{"title":"Tomorrow Night","owner":"Rosey"}},"languages":{"meta":{"path":"components/prism-{id}","noCSS":true,"examplesPath":"examples/prism-{id}","addCheckAll":true},"markup":{"title":"Markup","alias":["html","xml","svg","mathml"],"aliasTitles":{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML"},"option":"default"},"css":{"title":"CSS","option":"default","peerDependencies":"markup"},"clike":{"title":"C-like","option":"default","overrideExampleHeader":true},"javascript":{"title":"JavaScript","require":"clike","peerDependencies":"markup","alias":"js","option":"default"},"abap":{"title":"ABAP","owner":"dellagustin"},"abnf":{"title":"Augmented Backus–Naur form","owner":"RunDevelopment"},"actionscript":{"title":"ActionScript","require":"javascript","peerDependencies":"markup","owner":"Golmote"},"ada":{"title":"Ada","owner":"Lucretia"},"apacheconf":{"title":"Apache Configuration","owner":"GuiTeK"},"apl":{"title":"APL","owner":"ngn"},"applescript":{"title":"AppleScript","owner":"Golmote"},"arduino":{"title":"Arduino","require":"cpp","owner":"eisbehr-"},"arff":{"title":"ARFF","owner":"Golmote"},"asciidoc":{"alias":"adoc","title":"AsciiDoc","owner":"Golmote"},"asm6502":{"title":"6502 Assembly","owner":"kzurawel"},"aspnet":{"title":"ASP.NET (C#)","require":["markup","csharp"],"owner":"nauzilus"},"autohotkey":{"title":"AutoHotkey","owner":"aviaryan"},"autoit":{"title":"AutoIt","owner":"Golmote"},"bash":{"title":"Bash","alias":"shell","aliasTitles":{"shell":"Shell"},"owner":"zeitgeist87"},"basic":{"title":"BASIC","owner":"Golmote"},"batch":{"title":"Batch","owner":"Golmote"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"bnf":{"title":"Backus–Naur form","alias":"rbfn","aliasTitles":{"rbfn":"Routing Backus–Naur form"},"owner":"RunDevelopment"},"brainfuck":{"title":"Brainfuck","owner":"Golmote"},"bro":{"title":"Bro","owner":"wayward710"},"c":{"title":"C","require":"clike","owner":"zeitgeist87"},"csharp":{"title":"C#","require":"clike","alias":"dotnet","owner":"mvalipour"},"cpp":{"title":"C++","require":"c","owner":"zeitgeist87"},"cil":{"title":"CIL","owner":"sbrl"},"coffeescript":{"title":"CoffeeScript","require":"javascript","owner":"R-osey"},"clojure":{"title":"Clojure","owner":"troglotit"},"crystal":{"title":"Crystal","require":"ruby","owner":"MakeNowJust"},"csp":{"title":"Content-Security-Policy","owner":"ScottHelme"},"css-extras":{"title":"CSS Extras","require":"css","owner":"milesj"},"d":{"title":"D","require":"clike","owner":"Golmote"},"dart":{"title":"Dart","require":"clike","owner":"Golmote"},"diff":{"title":"Diff","owner":"uranusjr"},"django":{"title":"Django/Jinja2","require":"markup","peerDependencies":["css","javascript"],"alias":"jinja2","owner":"romanvm"},"docker":{"title":"Docker","alias":"dockerfile","owner":"JustinBeckwith"},"ebnf":{"title":"Extended Backus–Naur form","owner":"RunDevelopment"},"eiffel":{"title":"Eiffel","owner":"Conaclos"},"elixir":{"title":"Elixir","owner":"Golmote"},"elm":{"title":"Elm","owner":"zwilias"},"erb":{"title":"ERB","require":["ruby","markup-templating"],"owner":"Golmote"},"erlang":{"title":"Erlang","owner":"Golmote"},"fsharp":{"title":"F#","require":"clike","owner":"simonreynolds7"},"flow":{"title":"Flow","require":"javascript","owner":"Golmote"},"fortran":{"title":"Fortran","owner":"Golmote"},"gcode":{"title":"G-code","owner":"RunDevelopment"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"clike","owner":"Golmote"},"gml":{"title":"GameMaker Language","alias":"gamemakerlanguage","require":"clike","owner":"LiarOnce"},"go":{"title":"Go","require":"clike","owner":"arnehormann"},"graphql":{"title":"GraphQL","owner":"Golmote"},"groovy":{"title":"Groovy","require":"clike","owner":"robfletcher"},"haml":{"title":"Haml","require":"ruby","peerDependencies":["css","coffeescript","erb","javascript","less","markdown","ruby","scss","textile"],"owner":"Golmote"},"handlebars":{"title":"Handlebars","require":"markup-templating","owner":"Golmote"},"haskell":{"title":"Haskell","owner":"bholst"},"haxe":{"title":"Haxe","require":"clike","owner":"Golmote"},"hcl":{"title":"HCL","owner":"outsideris"},"http":{"title":"HTTP","peerDependencies":["javascript","markup"],"owner":"danielgtaylor"},"hpkp":{"title":"HTTP Public-Key-Pins","owner":"ScottHelme"},"hsts":{"title":"HTTP Strict-Transport-Security","owner":"ScottHelme"},"ichigojam":{"title":"IchigoJam","owner":"BlueCocoa"},"icon":{"title":"Icon","owner":"Golmote"},"inform7":{"title":"Inform 7","owner":"Golmote"},"ini":{"title":"Ini","owner":"aviaryan"},"io":{"title":"Io","owner":"AlesTsurko"},"j":{"title":"J","owner":"Golmote"},"java":{"title":"Java","require":"clike","owner":"sherblot"},"javastacktrace":{"title":"Java stack trace","owner":"RunDevelopment"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"js-extras":{"title":"JS Extras","require":"javascript","peerDependencies":["actionscript","coffeescript","flow","n4js","typescript"],"owner":"RunDevelopment"},"json":{"title":"JSON","owner":"CupOfTea696"},"jsonp":{"title":"JSONP","require":"json","owner":"RunDevelopment"},"json5":{"title":"JSON5","require":"json","owner":"RunDevelopment"},"julia":{"title":"Julia","owner":"cdagnino"},"keyman":{"title":"Keyman","owner":"mcdurdin"},"kotlin":{"title":"Kotlin","require":"clike","owner":"Golmote"},"latex":{"title":"LaTeX","owner":"japborst"},"less":{"title":"Less","require":"css","owner":"Golmote"},"liquid":{"title":"Liquid","owner":"cinhtau"},"lisp":{"title":"Lisp","alias":["emacs","elisp","emacs-lisp"],"owner":"JuanCaicedo"},"livescript":{"title":"LiveScript","owner":"Golmote"},"lolcode":{"title":"LOLCODE","owner":"Golmote"},"lua":{"title":"Lua","owner":"Golmote"},"makefile":{"title":"Makefile","owner":"Golmote"},"markdown":{"title":"Markdown","require":"markup","owner":"Golmote"},"markup-templating":{"title":"Markup templating","require":"markup","owner":"Golmote"},"matlab":{"title":"MATLAB","owner":"Golmote"},"mel":{"title":"MEL","owner":"Golmote"},"mizar":{"title":"Mizar","owner":"Golmote"},"monkey":{"title":"Monkey","owner":"Golmote"},"n1ql":{"title":"N1QL","owner":"TMWilds"},"n4js":{"title":"N4JS","require":"javascript","alias":"n4jsd","owner":"bsmith-n4"},"nand2tetris-hdl":{"title":"Nand To Tetris HDL","owner":"stephanmax"},"nasm":{"title":"NASM","owner":"rbmj"},"nginx":{"title":"nginx","owner":"westonganger","require":"clike"},"nim":{"title":"Nim","owner":"Golmote"},"nix":{"title":"Nix","owner":"Golmote"},"nsis":{"title":"NSIS","owner":"idleberg"},"objectivec":{"title":"Objective-C","require":"c","owner":"uranusjr"},"ocaml":{"title":"OCaml","owner":"Golmote"},"opencl":{"title":"OpenCL","require":"cpp","peerDependencies":["c","cpp"],"overrideExampleHeader":true,"owner":"Milania1"},"oz":{"title":"Oz","owner":"Golmote"},"parigp":{"title":"PARI/GP","owner":"Golmote"},"parser":{"title":"Parser","require":"markup","owner":"Golmote"},"pascal":{"title":"Pascal","alias":"objectpascal","aliasTitles":{"objectpascal":"Object Pascal"},"owner":"Golmote"},"perl":{"title":"Perl","owner":"Golmote"},"php":{"title":"PHP","require":["clike","markup-templating"],"owner":"milesj"},"php-extras":{"title":"PHP Extras","require":"php","owner":"milesj"},"plsql":{"title":"PL/SQL","require":"sql","owner":"Golmote"},"powershell":{"title":"PowerShell","owner":"nauzilus"},"processing":{"title":"Processing","require":"clike","owner":"Golmote"},"prolog":{"title":"Prolog","owner":"Golmote"},"properties":{"title":".properties","owner":"Golmote"},"protobuf":{"title":"Protocol Buffers","require":"clike","owner":"just-boris"},"pug":{"title":"Pug","require":"javascript","peerDependencies":["coffeescript","ejs","handlebars","hogan","less","livescript","markdown","mustache","plates","scss","stylus","swig"],"owner":"Golmote"},"puppet":{"title":"Puppet","owner":"Golmote"},"pure":{"title":"Pure","peerDependencies":["c","cpp","fortran","ats","dsp"],"owner":"Golmote"},"python":{"title":"Python","owner":"multipetros"},"q":{"title":"Q (kdb+ database)","owner":"Golmote"},"qore":{"title":"Qore","require":"clike","owner":"temnroegg"},"r":{"title":"R","owner":"Golmote"},"jsx":{"title":"React JSX","require":["markup","javascript"],"peerDependencies":"js-extras","owner":"vkbansal"},"tsx":{"title":"React TSX","require":["jsx","typescript"]},"renpy":{"title":"Ren'py","owner":"HyuchiaDiego"},"reason":{"title":"Reason","require":"clike","owner":"Golmote"},"rest":{"title":"reST (reStructuredText)","owner":"Golmote"},"rip":{"title":"Rip","owner":"ravinggenius"},"roboconf":{"title":"Roboconf","owner":"Golmote"},"ruby":{"title":"Ruby","require":"clike","owner":"samflores"},"rust":{"title":"Rust","owner":"Golmote"},"sas":{"title":"SAS","owner":"Golmote"},"sass":{"title":"Sass (Sass)","require":"css","owner":"Golmote"},"scss":{"title":"Sass (Scss)","require":"css","owner":"MoOx"},"scala":{"title":"Scala","require":"java","owner":"jozic"},"scheme":{"title":"Scheme","owner":"bacchus123"},"smalltalk":{"title":"Smalltalk","owner":"Golmote"},"smarty":{"title":"Smarty","require":"markup-templating","owner":"Golmote"},"sql":{"title":"SQL","owner":"multipetros"},"soy":{"title":"Soy (Closure Template)","require":"markup-templating","owner":"Golmote"},"stylus":{"title":"Stylus","owner":"vkbansal"},"swift":{"title":"Swift","require":"clike","owner":"chrischares"},"tap":{"title":"TAP","owner":"isaacs","require":"yaml"},"tcl":{"title":"Tcl","owner":"PeterChaplin"},"textile":{"title":"Textile","require":"markup","peerDependencies":"css","owner":"Golmote"},"toml":{"title":"TOML","owner":"RunDevelopment"},"tt2":{"title":"Template Toolkit 2","require":["clike","markup-templating"],"owner":"gflohr"},"twig":{"title":"Twig","require":"markup","owner":"brandonkelly"},"typescript":{"title":"TypeScript","require":"javascript","alias":"ts","owner":"vkbansal"},"vala":{"title":"Vala","require":"clike","owner":"TemplarVolk"},"vbnet":{"title":"VB.Net","require":"basic","owner":"Bigsby"},"velocity":{"title":"Velocity","require":"markup","owner":"Golmote"},"verilog":{"title":"Verilog","owner":"a-rey"},"vhdl":{"title":"VHDL","owner":"a-rey"},"vim":{"title":"vim","owner":"westonganger"},"visual-basic":{"title":"Visual Basic","alias":"vb","owner":"Golmote"},"wasm":{"title":"WebAssembly","owner":"Golmote"},"wiki":{"title":"Wiki markup","require":"markup","owner":"Golmote"},"xeora":{"title":"Xeora","require":"markup","alias":"xeoracube","aliasTitles":{"xeoracube":"XeoraCube"},"owner":"freakmaxi"},"xojo":{"title":"Xojo (REALbasic)","owner":"Golmote"},"xquery":{"title":"XQuery","require":"markup","owner":"Golmote"},"yaml":{"title":"YAML","owner":"hason"}},"plugins":{"meta":{"path":"plugins/{id}/prism-{id}","link":"plugins/{id}/"},"line-highlight":"Line Highlight","line-numbers":{"title":"Line Numbers","owner":"kuba-kubula"},"show-invisibles":{"title":"Show Invisibles","after":["autolinker","data-uri-highlight"]},"autolinker":"Autolinker","wpd":"WebPlatform Docs","custom-class":{"title":"Custom Class","owner":"dvkndn","noCSS":true},"file-highlight":{"title":"File Highlight","noCSS":true},"show-language":{"title":"Show Language","owner":"nauzilus","noCSS":true,"require":"toolbar"},"jsonp-highlight":{"title":"JSONP Highlight","noCSS":true,"owner":"nauzilus"},"highlight-keywords":{"title":"Highlight Keywords","owner":"vkbansal","noCSS":true},"remove-initial-line-feed":{"title":"Remove initial line feed","owner":"Golmote","noCSS":true},"previewers":{"title":"Previewers","owner":"Golmote"},"autoloader":{"title":"Autoloader","owner":"Golmote","noCSS":true},"keep-markup":{"title":"Keep Markup","owner":"Golmote","after":"normalize-whitespace","noCSS":true},"command-line":{"title":"Command Line","owner":"chriswells0"},"unescaped-markup":"Unescaped Markup","normalize-whitespace":{"title":"Normalize Whitespace","owner":"zeitgeist87","after":"unescaped-markup","noCSS":true},"data-uri-highlight":{"title":"Data-URI Highlight","owner":"Golmote","noCSS":true},"toolbar":{"title":"Toolbar","owner":"mAAdhaTTah"},"copy-to-clipboard":{"title":"Copy to Clipboard Button","owner":"mAAdhaTTah","require":"toolbar","noCSS":true}}}; +var components = {"core":{"meta":{"path":"components/prism-core.js","option":"mandatory"},"core":"Core"},"themes":{"meta":{"path":"themes/{id}.css","link":"index.html?theme={id}","exclusive":true},"prism":{"title":"Default","option":"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{"title":"Okaidia","owner":"ocodia"},"prism-twilight":{"title":"Twilight","owner":"remybach"},"prism-coy":{"title":"Coy","owner":"tshedor"},"prism-solarizedlight":{"title":"Solarized Light","owner":"hectormatos2011 "},"prism-tomorrow":{"title":"Tomorrow Night","owner":"Rosey"}},"languages":{"meta":{"path":"components/prism-{id}","noCSS":true,"examplesPath":"examples/prism-{id}","addCheckAll":true},"markup":{"title":"Markup","alias":["html","xml","svg","mathml"],"aliasTitles":{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML"},"option":"default"},"css":{"title":"CSS","option":"default","peerDependencies":"markup"},"clike":{"title":"C-like","option":"default","overrideExampleHeader":true},"javascript":{"title":"JavaScript","require":"clike","peerDependencies":"markup","alias":"js","option":"default"},"abap":{"title":"ABAP","owner":"dellagustin"},"abnf":{"title":"Augmented Backus–Naur form","owner":"RunDevelopment"},"actionscript":{"title":"ActionScript","require":"javascript","peerDependencies":"markup","owner":"Golmote"},"ada":{"title":"Ada","owner":"Lucretia"},"apacheconf":{"title":"Apache Configuration","owner":"GuiTeK"},"apl":{"title":"APL","owner":"ngn"},"applescript":{"title":"AppleScript","owner":"Golmote"},"arduino":{"title":"Arduino","require":"cpp","owner":"eisbehr-"},"arff":{"title":"ARFF","owner":"Golmote"},"asciidoc":{"alias":"adoc","title":"AsciiDoc","owner":"Golmote"},"asm6502":{"title":"6502 Assembly","owner":"kzurawel"},"aspnet":{"title":"ASP.NET (C#)","require":["markup","csharp"],"owner":"nauzilus"},"autohotkey":{"title":"AutoHotkey","owner":"aviaryan"},"autoit":{"title":"AutoIt","owner":"Golmote"},"bash":{"title":"Bash","alias":"shell","aliasTitles":{"shell":"Shell"},"owner":"zeitgeist87"},"basic":{"title":"BASIC","owner":"Golmote"},"batch":{"title":"Batch","owner":"Golmote"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"bnf":{"title":"Backus–Naur form","alias":"rbfn","aliasTitles":{"rbfn":"Routing Backus–Naur form"},"owner":"RunDevelopment"},"brainfuck":{"title":"Brainfuck","owner":"Golmote"},"bro":{"title":"Bro","owner":"wayward710"},"c":{"title":"C","require":"clike","owner":"zeitgeist87"},"csharp":{"title":"C#","require":"clike","alias":"dotnet","owner":"mvalipour"},"cpp":{"title":"C++","require":"c","owner":"zeitgeist87"},"cil":{"title":"CIL","owner":"sbrl"},"coffeescript":{"title":"CoffeeScript","require":"javascript","owner":"R-osey"},"clojure":{"title":"Clojure","owner":"troglotit"},"crystal":{"title":"Crystal","require":"ruby","owner":"MakeNowJust"},"csp":{"title":"Content-Security-Policy","owner":"ScottHelme"},"css-extras":{"title":"CSS Extras","require":"css","owner":"milesj"},"d":{"title":"D","require":"clike","owner":"Golmote"},"dart":{"title":"Dart","require":"clike","owner":"Golmote"},"diff":{"title":"Diff","owner":"uranusjr"},"django":{"title":"Django/Jinja2","require":"markup","peerDependencies":["css","javascript"],"alias":"jinja2","owner":"romanvm"},"docker":{"title":"Docker","alias":"dockerfile","owner":"JustinBeckwith"},"ebnf":{"title":"Extended Backus–Naur form","owner":"RunDevelopment"},"eiffel":{"title":"Eiffel","owner":"Conaclos"},"elixir":{"title":"Elixir","owner":"Golmote"},"elm":{"title":"Elm","owner":"zwilias"},"erb":{"title":"ERB","require":["ruby","markup-templating"],"owner":"Golmote"},"erlang":{"title":"Erlang","owner":"Golmote"},"fsharp":{"title":"F#","require":"clike","owner":"simonreynolds7"},"flow":{"title":"Flow","require":"javascript","owner":"Golmote"},"fortran":{"title":"Fortran","owner":"Golmote"},"gcode":{"title":"G-code","owner":"RunDevelopment"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"clike","owner":"Golmote"},"gml":{"title":"GameMaker Language","alias":"gamemakerlanguage","require":"clike","owner":"LiarOnce"},"go":{"title":"Go","require":"clike","owner":"arnehormann"},"graphql":{"title":"GraphQL","owner":"Golmote"},"groovy":{"title":"Groovy","require":"clike","owner":"robfletcher"},"haml":{"title":"Haml","require":"ruby","peerDependencies":["css","coffeescript","erb","javascript","less","markdown","ruby","scss","textile"],"owner":"Golmote"},"handlebars":{"title":"Handlebars","require":"markup-templating","owner":"Golmote"},"haskell":{"title":"Haskell","owner":"bholst"},"haxe":{"title":"Haxe","require":"clike","owner":"Golmote"},"hcl":{"title":"HCL","owner":"outsideris"},"http":{"title":"HTTP","peerDependencies":["javascript","markup"],"owner":"danielgtaylor"},"hpkp":{"title":"HTTP Public-Key-Pins","owner":"ScottHelme"},"hsts":{"title":"HTTP Strict-Transport-Security","owner":"ScottHelme"},"ichigojam":{"title":"IchigoJam","owner":"BlueCocoa"},"icon":{"title":"Icon","owner":"Golmote"},"inform7":{"title":"Inform 7","owner":"Golmote"},"ini":{"title":"Ini","owner":"aviaryan"},"io":{"title":"Io","owner":"AlesTsurko"},"j":{"title":"J","owner":"Golmote"},"java":{"title":"Java","require":"clike","owner":"sherblot"},"javadoc":{"title":"JavaDoc","require":["markup","java","javadoclike"],"peerDependencies":["scala"],"owner":"RunDevelopment"},"javadoclike":{"title":"JavaDoc-like","peerDependencies":["java","javascript","php"],"owner":"RunDevelopment"},"javastacktrace":{"title":"Java stack trace","owner":"RunDevelopment"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jsdoc":{"title":"JSDoc","require":["javascript","javadoclike"],"peerDependencies":["actionscript","coffeescript"],"owner":"RunDevelopment"},"js-extras":{"title":"JS Extras","require":"javascript","peerDependencies":["actionscript","coffeescript","flow","n4js","typescript"],"owner":"RunDevelopment"},"json":{"title":"JSON","owner":"CupOfTea696"},"jsonp":{"title":"JSONP","require":"json","owner":"RunDevelopment"},"json5":{"title":"JSON5","require":"json","owner":"RunDevelopment"},"julia":{"title":"Julia","owner":"cdagnino"},"keyman":{"title":"Keyman","owner":"mcdurdin"},"kotlin":{"title":"Kotlin","require":"clike","owner":"Golmote"},"latex":{"title":"LaTeX","owner":"japborst"},"less":{"title":"Less","require":"css","owner":"Golmote"},"liquid":{"title":"Liquid","owner":"cinhtau"},"lisp":{"title":"Lisp","alias":["emacs","elisp","emacs-lisp"],"owner":"JuanCaicedo"},"livescript":{"title":"LiveScript","owner":"Golmote"},"lolcode":{"title":"LOLCODE","owner":"Golmote"},"lua":{"title":"Lua","owner":"Golmote"},"makefile":{"title":"Makefile","owner":"Golmote"},"markdown":{"title":"Markdown","require":"markup","owner":"Golmote"},"markup-templating":{"title":"Markup templating","require":"markup","owner":"Golmote"},"matlab":{"title":"MATLAB","owner":"Golmote"},"mel":{"title":"MEL","owner":"Golmote"},"mizar":{"title":"Mizar","owner":"Golmote"},"monkey":{"title":"Monkey","owner":"Golmote"},"n1ql":{"title":"N1QL","owner":"TMWilds"},"n4js":{"title":"N4JS","require":"javascript","peerDependencies":["jsdoc"],"alias":"n4jsd","owner":"bsmith-n4"},"nand2tetris-hdl":{"title":"Nand To Tetris HDL","owner":"stephanmax"},"nasm":{"title":"NASM","owner":"rbmj"},"nginx":{"title":"nginx","owner":"westonganger","require":"clike"},"nim":{"title":"Nim","owner":"Golmote"},"nix":{"title":"Nix","owner":"Golmote"},"nsis":{"title":"NSIS","owner":"idleberg"},"objectivec":{"title":"Objective-C","require":"c","owner":"uranusjr"},"ocaml":{"title":"OCaml","owner":"Golmote"},"opencl":{"title":"OpenCL","require":"cpp","peerDependencies":["c","cpp"],"overrideExampleHeader":true,"owner":"Milania1"},"oz":{"title":"Oz","owner":"Golmote"},"parigp":{"title":"PARI/GP","owner":"Golmote"},"parser":{"title":"Parser","require":"markup","owner":"Golmote"},"pascal":{"title":"Pascal","alias":"objectpascal","aliasTitles":{"objectpascal":"Object Pascal"},"owner":"Golmote"},"perl":{"title":"Perl","owner":"Golmote"},"php":{"title":"PHP","require":["clike","markup-templating"],"owner":"milesj"},"phpdoc":{"title":"PHPDoc","require":["php","javadoclike"],"owner":"RunDevelopment"},"php-extras":{"title":"PHP Extras","require":"php","owner":"milesj"},"plsql":{"title":"PL/SQL","require":"sql","owner":"Golmote"},"powershell":{"title":"PowerShell","owner":"nauzilus"},"processing":{"title":"Processing","require":"clike","owner":"Golmote"},"prolog":{"title":"Prolog","owner":"Golmote"},"properties":{"title":".properties","owner":"Golmote"},"protobuf":{"title":"Protocol Buffers","require":"clike","owner":"just-boris"},"pug":{"title":"Pug","require":"javascript","peerDependencies":["coffeescript","ejs","handlebars","hogan","less","livescript","markdown","mustache","plates","scss","stylus","swig"],"owner":"Golmote"},"puppet":{"title":"Puppet","owner":"Golmote"},"pure":{"title":"Pure","peerDependencies":["c","cpp","fortran","ats","dsp"],"owner":"Golmote"},"python":{"title":"Python","owner":"multipetros"},"q":{"title":"Q (kdb+ database)","owner":"Golmote"},"qore":{"title":"Qore","require":"clike","owner":"temnroegg"},"r":{"title":"R","owner":"Golmote"},"jsx":{"title":"React JSX","require":["markup","javascript"],"peerDependencies":["jsdoc","js-extras"],"owner":"vkbansal"},"tsx":{"title":"React TSX","require":["jsx","typescript"]},"renpy":{"title":"Ren'py","owner":"HyuchiaDiego"},"reason":{"title":"Reason","require":"clike","owner":"Golmote"},"rest":{"title":"reST (reStructuredText)","owner":"Golmote"},"rip":{"title":"Rip","owner":"ravinggenius"},"roboconf":{"title":"Roboconf","owner":"Golmote"},"ruby":{"title":"Ruby","require":"clike","owner":"samflores"},"rust":{"title":"Rust","owner":"Golmote"},"sas":{"title":"SAS","owner":"Golmote"},"sass":{"title":"Sass (Sass)","require":"css","owner":"Golmote"},"scss":{"title":"Sass (Scss)","require":"css","owner":"MoOx"},"scala":{"title":"Scala","require":"java","owner":"jozic"},"scheme":{"title":"Scheme","owner":"bacchus123"},"smalltalk":{"title":"Smalltalk","owner":"Golmote"},"smarty":{"title":"Smarty","require":"markup-templating","owner":"Golmote"},"sql":{"title":"SQL","owner":"multipetros"},"soy":{"title":"Soy (Closure Template)","require":"markup-templating","owner":"Golmote"},"stylus":{"title":"Stylus","owner":"vkbansal"},"swift":{"title":"Swift","require":"clike","owner":"chrischares"},"tap":{"title":"TAP","owner":"isaacs","require":"yaml"},"tcl":{"title":"Tcl","owner":"PeterChaplin"},"textile":{"title":"Textile","require":"markup","peerDependencies":"css","owner":"Golmote"},"toml":{"title":"TOML","owner":"RunDevelopment"},"tt2":{"title":"Template Toolkit 2","require":["clike","markup-templating"],"owner":"gflohr"},"twig":{"title":"Twig","require":"markup","owner":"brandonkelly"},"typescript":{"title":"TypeScript","require":"javascript","alias":"ts","owner":"vkbansal"},"vala":{"title":"Vala","require":"clike","owner":"TemplarVolk"},"vbnet":{"title":"VB.Net","require":"basic","owner":"Bigsby"},"velocity":{"title":"Velocity","require":"markup","owner":"Golmote"},"verilog":{"title":"Verilog","owner":"a-rey"},"vhdl":{"title":"VHDL","owner":"a-rey"},"vim":{"title":"vim","owner":"westonganger"},"visual-basic":{"title":"Visual Basic","alias":"vb","owner":"Golmote"},"wasm":{"title":"WebAssembly","owner":"Golmote"},"wiki":{"title":"Wiki markup","require":"markup","owner":"Golmote"},"xeora":{"title":"Xeora","require":"markup","alias":"xeoracube","aliasTitles":{"xeoracube":"XeoraCube"},"owner":"freakmaxi"},"xojo":{"title":"Xojo (REALbasic)","owner":"Golmote"},"xquery":{"title":"XQuery","require":"markup","owner":"Golmote"},"yaml":{"title":"YAML","owner":"hason"}},"plugins":{"meta":{"path":"plugins/{id}/prism-{id}","link":"plugins/{id}/"},"line-highlight":"Line Highlight","line-numbers":{"title":"Line Numbers","owner":"kuba-kubula"},"show-invisibles":{"title":"Show Invisibles","after":["autolinker","data-uri-highlight"]},"autolinker":"Autolinker","wpd":"WebPlatform Docs","custom-class":{"title":"Custom Class","owner":"dvkndn","noCSS":true},"file-highlight":{"title":"File Highlight","noCSS":true},"show-language":{"title":"Show Language","owner":"nauzilus","noCSS":true,"require":"toolbar"},"jsonp-highlight":{"title":"JSONP Highlight","noCSS":true,"owner":"nauzilus"},"highlight-keywords":{"title":"Highlight Keywords","owner":"vkbansal","noCSS":true},"remove-initial-line-feed":{"title":"Remove initial line feed","owner":"Golmote","noCSS":true},"previewers":{"title":"Previewers","owner":"Golmote"},"autoloader":{"title":"Autoloader","owner":"Golmote","noCSS":true},"keep-markup":{"title":"Keep Markup","owner":"Golmote","after":"normalize-whitespace","noCSS":true},"command-line":{"title":"Command Line","owner":"chriswells0"},"unescaped-markup":"Unescaped Markup","normalize-whitespace":{"title":"Normalize Whitespace","owner":"zeitgeist87","after":"unescaped-markup","noCSS":true},"data-uri-highlight":{"title":"Data-URI Highlight","owner":"Golmote","noCSS":true},"toolbar":{"title":"Toolbar","owner":"mAAdhaTTah"},"copy-to-clipboard":{"title":"Copy to Clipboard Button","owner":"mAAdhaTTah","require":"toolbar","noCSS":true}}}; if (typeof module !== 'undefined' && module.exports) { module.exports = components; } \ No newline at end of file diff --git a/components.json b/components.json index 242ba82b7e..323ad7530c 100644 --- a/components.json +++ b/components.json @@ -403,6 +403,23 @@ "require": "clike", "owner": "sherblot" }, + "javadoc": { + "title": "JavaDoc", + "require": ["markup", "java", "javadoclike"], + "peerDependencies": [ + "scala" + ], + "owner": "RunDevelopment" + }, + "javadoclike": { + "title": "JavaDoc-like", + "peerDependencies": [ + "java", + "javascript", + "php" + ], + "owner": "RunDevelopment" + }, "javastacktrace": { "title": "Java stack trace", "owner": "RunDevelopment" @@ -412,6 +429,15 @@ "require": "clike", "owner": "thesave" }, + "jsdoc": { + "title": "JSDoc", + "require": ["javascript", "javadoclike"], + "peerDependencies": [ + "actionscript", + "coffeescript" + ], + "owner": "RunDevelopment" + }, "js-extras": { "title": "JS Extras", "require": "javascript", @@ -518,6 +544,9 @@ "n4js": { "title": "N4JS", "require": "javascript", + "peerDependencies": [ + "jsdoc" + ], "alias": "n4jsd", "owner": "bsmith-n4" }, @@ -595,6 +624,11 @@ "require": ["clike", "markup-templating"], "owner": "milesj" }, + "phpdoc": { + "title": "PHPDoc", + "require": ["php", "javadoclike"], + "owner": "RunDevelopment" + }, "php-extras": { "title": "PHP Extras", "require": "php", @@ -681,7 +715,10 @@ "jsx": { "title": "React JSX", "require": ["markup", "javascript"], - "peerDependencies": "js-extras", + "peerDependencies": [ + "jsdoc", + "js-extras" + ], "owner": "vkbansal" }, "tsx": { diff --git a/components/prism-javadoc.js b/components/prism-javadoc.js new file mode 100644 index 0000000000..86d0dc1a89 --- /dev/null +++ b/components/prism-javadoc.js @@ -0,0 +1,54 @@ +(function (Prism) { + + var codeLines = { + 'code': { + pattern: /(^(\s*(?:\*\s*)*)).*[^*\s].+$/m, + lookbehind: true, + inside: Prism.languages.java, + alias: 'language-java' + } + }; + + Prism.languages.javadoc = Prism.languages.extend('javadoclike', {}); + Prism.languages.insertBefore('javadoc', 'keyword', { + 'class-name': [ + { + pattern: /(@(?:exception|throws|see|link|linkplain|value)\s+(?:[a-z\d]+\.)*)[A-Z](?:\w*[a-z]\w*)?(?:\.[A-Z](?:\w*[a-z]\w*)?)*/, + lookbehind: true, + inside: { + 'punctuation': /\./ + } + }, + { + // @param the first generic type parameter + pattern: /(@param\s+)<[A-Z]\w*>/, + lookbehind: true, + inside: { + 'punctuation': /[.<>]/ + } + } + ], + 'namespace': { + pattern: /(@(?:exception|throws|see|link|linkplain)\s+)(?:[a-z\d]+\.)+/, + lookbehind: true, + inside: { + 'punctuation': /\./ + } + }, + 'code-section': [ + { + pattern: /(\{@code\s+)(?:[^{}]|\{[^{}]*\})+?(?=\s*\})/, + lookbehind: true, + inside: codeLines + }, + { + pattern: /(<(code|tt)>\s*)[\s\S]+?(?=\s*<\/\2>)/, + lookbehind: true, + inside: codeLines + } + ], + 'tag': Prism.languages.markup.tag, + }); + + Prism.languages.javadoclike.addSupport('java', Prism.languages.javadoc); +}(Prism)); diff --git a/components/prism-javadoc.min.js b/components/prism-javadoc.min.js new file mode 100644 index 0000000000..760867af3f --- /dev/null +++ b/components/prism-javadoc.min.js @@ -0,0 +1 @@ +!function(a){var e={code:{pattern:/(^(\s*(?:\*\s*)*)).*[^*\s].+$/m,lookbehind:!0,inside:a.languages.java,alias:"language-java"}};a.languages.javadoc=a.languages.extend("javadoclike",{}),a.languages.insertBefore("javadoc","keyword",{"class-name":[{pattern:/(@(?:exception|throws|see|link|linkplain|value)\s+(?:[a-z\d]+\.)*)[A-Z](?:\w*[a-z]\w*)?(?:\.[A-Z](?:\w*[a-z]\w*)?)*/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/(@param\s+)<[A-Z]\w*>/,lookbehind:!0,inside:{punctuation:/[.<>]/}}],namespace:{pattern:/(@(?:exception|throws|see|link|linkplain)\s+)(?:[a-z\d]+\.)+/,lookbehind:!0,inside:{punctuation:/\./}},"code-section":[{pattern:/(\{@code\s+)(?:[^{}]|\{[^{}]*\})+?(?=\s*\})/,lookbehind:!0,inside:e},{pattern:/(<(code|tt)>\s*)[\s\S]+?(?=\s*<\/\2>)/,lookbehind:!0,inside:e}],tag:a.languages.markup.tag}),a.languages.javadoclike.addSupport("java",a.languages.javadoc)}(Prism); \ No newline at end of file diff --git a/components/prism-javadoclike.js b/components/prism-javadoclike.js new file mode 100644 index 0000000000..10dc2e3388 --- /dev/null +++ b/components/prism-javadoclike.js @@ -0,0 +1,86 @@ +(function (Prism) { + + var javaDocLike = Prism.languages.javadoclike = { + 'parameter': { + pattern: /(^\s*(?:\/{3}|\*|\/\*\*)\s*@(?:param|arg|arguments)\s+)\w+/m, + lookbehind: true + }, + 'keyword': { + // keywords are the first word in a line preceded be an `@` or surrounded by curly braces. + // @word, {@word} + pattern: /(^\s*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m, + lookbehind: true + }, + 'punctuation': /[{}]/ + }; + + + /** + * Adds doc comment support to the given language and calls a given callback on each doc comment pattern. + * + * @param {string} lang the language add doc comment support to. + * @param {(pattern: {inside: {rest: undefined}}) => void} callback the function called with each doc comment pattern as argument. + */ + function docCommentSupport(lang, callback) { + var tokenName = 'doc-comment'; + + var grammar = Prism.languages[lang]; + if (!grammar) { + return; + } + var token = grammar[tokenName]; + + if (!token) { + // add doc comment: /** */ + var definition = {}; + definition[tokenName] = { + pattern: /(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/, + alias: 'comment' + }; + + grammar = Prism.languages.insertBefore(lang, 'comment', definition); + token = grammar[tokenName]; + } + + if (token instanceof RegExp) { // convert regex to object + token = grammar[tokenName] = { pattern: token }; + } + + if (Prism.util.type(token) === 'Array') { + for (var i = 0, l = token.length; i < l; i++) { + if (token[i] instanceof RegExp) { + token[i] = { pattern: token[i] }; + } + callback(token[i]); + } + } else { + callback(token); + } + } + + /** + * Adds doc-comment support to the given languages for the given documentation language. + * + * @param {string[]|string} languages + * @param {Object} docLanguage + */ + function addSupport(languages, docLanguage) { + if (typeof languages === 'string') { + languages = [languages]; + } + + languages.forEach(function (lang) { + docCommentSupport(lang, function (pattern) { + if (!pattern.inside) { + pattern.inside = {}; + } + pattern.inside.rest = docLanguage; + }); + }); + } + + Object.defineProperty(javaDocLike, 'addSupport', { value: addSupport }); + + javaDocLike.addSupport(['java', 'javascript', 'php'], javaDocLike); + +}(Prism)); diff --git a/components/prism-javadoclike.min.js b/components/prism-javadoclike.min.js new file mode 100644 index 0000000000..f647d912cf --- /dev/null +++ b/components/prism-javadoclike.min.js @@ -0,0 +1 @@ +!function(a){function e(e,n){var t="doc-comment",r=a.languages[e];if(r){var i=r[t];if(!i){var o={};o[t]={pattern:/(^|[^\\])\/\*\*[^\/][\s\S]*?(?:\*\/|$)/,alias:"comment"},r=a.languages.insertBefore(e,"comment",o),i=r[t]}if(i instanceof RegExp&&(i=r[t]={pattern:i}),"Array"===a.util.type(i))for(var s=0,p=i.length;p>s;s++)i[s]instanceof RegExp&&(i[s]={pattern:i[s]}),n(i[s]);else n(i)}}function n(a,n){"string"==typeof a&&(a=[a]),a.forEach(function(a){e(a,function(a){a.inside||(a.inside={}),a.inside.rest=n})})}var t=a.languages.javadoclike={parameter:{pattern:/(^\s*(?:\/{3}|\*|\/\*\*)\s*@(?:param|arg|arguments)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^\s*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:n}),t.addSupport(["java","javascript","php"],t)}(Prism); \ No newline at end of file diff --git a/components/prism-jsdoc.js b/components/prism-jsdoc.js new file mode 100644 index 0000000000..161f77c699 --- /dev/null +++ b/components/prism-jsdoc.js @@ -0,0 +1,73 @@ +(function (Prism) { + + var javascript = Prism.languages.javascript; + + var type = /{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}/.source; + var parameterPrefix = '(@(?:param|arg|argument|property)\\s+(?:' + type + '\\s+)?)'; + + Prism.languages.jsdoc = Prism.languages.extend('javadoclike', { + 'parameter': { + // @param {string} foo - foo bar + pattern: RegExp(parameterPrefix + /[$\w\xA0-\uFFFF.]+(?=\s|$)/.source), + lookbehind: true, + inside: { + 'punctuation': /\./ + } + } + }); + + Prism.languages.insertBefore('jsdoc', 'keyword', { + 'optional-parameter': { + // @param {string} [baz.foo="bar"] foo bar + pattern: RegExp(parameterPrefix + /\[[$\w\xA0-\uFFFF.]+(?:=[^[\]]+)?\](?=\s|$)/.source), + lookbehind: true, + inside: { + 'parameter': { + pattern: /(^\[)[$\w\xA0-\uFFFF\.]+/, + lookbehind: true, + inside: { + 'punctuation': /\./ + } + }, + 'code': { + pattern: /(=)[\s\S]*(?=\]$)/, + lookbehind: true, + inside: javascript, + alias: 'language-javascript' + }, + 'punctuation': /[=[\]]/ + } + }, + 'class-name': [ + { + pattern: RegExp('(@[a-z]+\\s+)' + type), + lookbehind: true, + inside: { + 'punctuation': /[.,:?=<>|{}()[\]]/ + } + }, + { + pattern: /(@(?:augments|extends|class|interface|memberof!?|this)\s+)[A-Z]\w*(?:\.[A-Z]\w*)*/, + lookbehind: true, + inside: { + 'punctuation': /\./ + } + } + ], + 'example': { + pattern: /(@example\s+)[^@]+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/, + lookbehind: true, + inside: { + 'code': { + pattern: /^(\s*(?:\*\s*)?).+$/m, + lookbehind: true, + inside: javascript, + alias: 'language-javascript' + } + } + } + }); + + Prism.languages.javadoclike.addSupport('javascript', Prism.languages.jsdoc); + +}(Prism)); diff --git a/components/prism-jsdoc.min.js b/components/prism-jsdoc.min.js new file mode 100644 index 0000000000..8418eb0b42 --- /dev/null +++ b/components/prism-jsdoc.min.js @@ -0,0 +1 @@ +!function(a){var e=a.languages.javascript,n="{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}",s="(@(?:param|arg|argument|property)\\s+(?:"+n+"\\s+)?)";a.languages.jsdoc=a.languages.extend("javadoclike",{parameter:{pattern:RegExp(s+"[$\\w\\xA0-\\uFFFF.]+(?=\\s|$)"),lookbehind:!0,inside:{punctuation:/\./}}}),a.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(s+"\\[[$\\w\\xA0-\\uFFFF.]+(?:=[^[\\]]+)?\\](?=\\s|$)"),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:e,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{punctuation:/[.,:?=<>|{}()[\]]/}},{pattern:/(@(?:augments|extends|class|interface|memberof!?|this)\s+)[A-Z]\w*(?:\.[A-Z]\w*)*/,lookbehind:!0,inside:{punctuation:/\./}}],example:{pattern:/(@example\s+)[^@]+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^(\s*(?:\*\s*)?).+$/m,lookbehind:!0,inside:e,alias:"language-javascript"}}}}),a.languages.javadoclike.addSupport("javascript",a.languages.jsdoc)}(Prism); \ No newline at end of file diff --git a/components/prism-phpdoc.js b/components/prism-phpdoc.js new file mode 100644 index 0000000000..c3913ddb66 --- /dev/null +++ b/components/prism-phpdoc.js @@ -0,0 +1,27 @@ +(function (Prism) { + + var typeExpression = /(?:[a-zA-Z]\w*|[|\\[\]])+/.source; + + Prism.languages.phpdoc = Prism.languages.extend('javadoclike', { + 'parameter': { + pattern: RegExp('(@(?:global|param|property(?:-read|-write)?|var)\\s+(?:' + typeExpression + '\\s+)?)\\$\\w+'), + lookbehind: true + } + }); + + Prism.languages.insertBefore('phpdoc', 'keyword', { + 'class-name': [ + { + pattern: RegExp('(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\\s+)' + typeExpression), + lookbehind: true, + inside: { + 'keyword': /\b(?:callback|resource|boolean|integer|double|object|string|array|false|float|mixed|bool|null|self|true|void|int)\b/, + 'punctuation': /[|\\[\]()]/ + } + } + ], + }); + + Prism.languages.javadoclike.addSupport('php', Prism.languages.phpdoc); + +}(Prism)); diff --git a/components/prism-phpdoc.min.js b/components/prism-phpdoc.min.js new file mode 100644 index 0000000000..99d7d3aa4c --- /dev/null +++ b/components/prism-phpdoc.min.js @@ -0,0 +1 @@ +!function(a){var e="(?:[a-zA-Z]\\w*|[|\\\\[\\]])+";a.languages.phpdoc=a.languages.extend("javadoclike",{parameter:{pattern:RegExp("(@(?:global|param|property(?:-read|-write)?|var)\\s+(?:"+e+"\\s+)?)\\$\\w+"),lookbehind:!0}}),a.languages.insertBefore("phpdoc","keyword",{"class-name":[{pattern:RegExp("(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\\s+)"+e),lookbehind:!0,inside:{keyword:/\b(?:callback|resource|boolean|integer|double|object|string|array|false|float|mixed|bool|null|self|true|void|int)\b/,punctuation:/[|\\[\]()]/}}]}),a.languages.javadoclike.addSupport("php",a.languages.phpdoc)}(Prism); \ No newline at end of file diff --git a/plugins/autoloader/prism-autoloader.js b/plugins/autoloader/prism-autoloader.js index e8a65dd4b9..400ad858c0 100644 --- a/plugins/autoloader/prism-autoloader.js +++ b/plugins/autoloader/prism-autoloader.js @@ -4,7 +4,7 @@ } // The dependencies map is built automatically with gulp - var lang_dependencies = /*languages_placeholder[*/{"javascript":"clike","actionscript":"javascript","arduino":"cpp","aspnet":["markup","csharp"],"bison":"c","c":"clike","csharp":"clike","cpp":"c","coffeescript":"javascript","crystal":"ruby","css-extras":"css","d":"clike","dart":"clike","django":"markup","erb":["ruby","markup-templating"],"fsharp":"clike","flow":"javascript","glsl":"clike","gml":"clike","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup-templating","haxe":"clike","java":"clike","jolie":"clike","js-extras":"javascript","jsonp":"json","json5":"json","kotlin":"clike","less":"css","markdown":"markup","markup-templating":"markup","n4js":"javascript","nginx":"clike","objectivec":"c","opencl":"cpp","parser":"markup","php":["clike","markup-templating"],"php-extras":"php","plsql":"sql","processing":"clike","protobuf":"clike","pug":"javascript","qore":"clike","jsx":["markup","javascript"],"tsx":["jsx","typescript"],"reason":"clike","ruby":"clike","sass":"css","scss":"css","scala":"java","smarty":"markup-templating","soy":"markup-templating","swift":"clike","tap":"yaml","textile":"markup","tt2":["clike","markup-templating"],"twig":"markup","typescript":"javascript","vala":"clike","vbnet":"basic","velocity":"markup","wiki":"markup","xeora":"markup","xquery":"markup"}/*]*/; + var lang_dependencies = /*languages_placeholder[*/{"javascript":"clike","actionscript":"javascript","arduino":"cpp","aspnet":["markup","csharp"],"bison":"c","c":"clike","csharp":"clike","cpp":"c","coffeescript":"javascript","crystal":"ruby","css-extras":"css","d":"clike","dart":"clike","django":"markup","erb":["ruby","markup-templating"],"fsharp":"clike","flow":"javascript","glsl":"clike","gml":"clike","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup-templating","haxe":"clike","java":"clike","javadoc":["markup","java","javadoclike"],"jolie":"clike","jsdoc":["javascript","javadoclike"],"js-extras":"javascript","jsonp":"json","json5":"json","kotlin":"clike","less":"css","markdown":"markup","markup-templating":"markup","n4js":"javascript","nginx":"clike","objectivec":"c","opencl":"cpp","parser":"markup","php":["clike","markup-templating"],"phpdoc":["php","javadoclike"],"php-extras":"php","plsql":"sql","processing":"clike","protobuf":"clike","pug":"javascript","qore":"clike","jsx":["markup","javascript"],"tsx":["jsx","typescript"],"reason":"clike","ruby":"clike","sass":"css","scss":"css","scala":"java","smarty":"markup-templating","soy":"markup-templating","swift":"clike","tap":"yaml","textile":"markup","tt2":["clike","markup-templating"],"twig":"markup","typescript":"javascript","vala":"clike","vbnet":"basic","velocity":"markup","wiki":"markup","xeora":"markup","xquery":"markup"}/*]*/; var lang_data = {}; diff --git a/plugins/autoloader/prism-autoloader.min.js b/plugins/autoloader/prism-autoloader.min.js index 1ad61675d7..c92eef223d 100644 --- a/plugins/autoloader/prism-autoloader.min.js +++ b/plugins/autoloader/prism-autoloader.min.js @@ -1 +1 @@ -!function(){if("undefined"!=typeof self&&self.Prism&&self.document&&document.createElement){var e={javascript:"clike",actionscript:"javascript",arduino:"cpp",aspnet:["markup","csharp"],bison:"c",c:"clike",csharp:"clike",cpp:"c",coffeescript:"javascript",crystal:"ruby","css-extras":"css",d:"clike",dart:"clike",django:"markup",erb:["ruby","markup-templating"],fsharp:"clike",flow:"javascript",glsl:"clike",gml:"clike",go:"clike",groovy:"clike",haml:"ruby",handlebars:"markup-templating",haxe:"clike",java:"clike",jolie:"clike","js-extras":"javascript",jsonp:"json",json5:"json",kotlin:"clike",less:"css",markdown:"markup","markup-templating":"markup",n4js:"javascript",nginx:"clike",objectivec:"c",opencl:"cpp",parser:"markup",php:["clike","markup-templating"],"php-extras":"php",plsql:"sql",processing:"clike",protobuf:"clike",pug:"javascript",qore:"clike",jsx:["markup","javascript"],tsx:["jsx","typescript"],reason:"clike",ruby:"clike",sass:"css",scss:"css",scala:"java",smarty:"markup-templating",soy:"markup-templating",swift:"clike",tap:"yaml",textile:"markup",tt2:["clike","markup-templating"],twig:"markup",typescript:"javascript",vala:"clike",vbnet:"basic",velocity:"markup",wiki:"markup",xeora:"markup",xquery:"markup"},a={},c="none",t=document.getElementsByTagName("script");t=t[t.length-1];var r="components/";if(t.hasAttribute("data-autoloader-path")){var s=t.getAttribute("data-autoloader-path").trim();s.length>0&&!/^[a-z]+:\/\//i.test(t.src)&&(r=s.replace(/\/?$/,"/"))}else/[\w-]+\.js$/.test(t.src)&&(r=t.src.replace(/[\w-]+\.js$/,"components/"));var n=Prism.plugins.autoloader={languages_path:r,use_minified:!0},i=function(e,a,c){var t=document.createElement("script");t.src=e,t.async=!0,t.onload=function(){document.body.removeChild(t),a&&a()},t.onerror=function(){document.body.removeChild(t),c&&c()},document.body.appendChild(t)},l=function(e){return n.languages_path+"prism-"+e+(n.use_minified?".min":"")+".js"},o=function(e,c){var t=a[e];t||(t=a[e]={});var r=c.getAttribute("data-dependencies");!r&&c.parentNode&&"pre"===c.parentNode.tagName.toLowerCase()&&(r=c.parentNode.getAttribute("data-dependencies")),r=r?r.split(/\s*,\s*/g):[],p(r,function(){u(e,function(){Prism.highlightElement(c)})})},p=function(e,a,c){"string"==typeof e&&(e=[e]);var t=0,r=e.length,s=function(){r>t?u(e[t],function(){t++,s()},function(){c&&c(e[t])}):t===r&&a&&a(e)};s()},u=function(c,t,r){var s=function(){var e=!1;c.indexOf("!")>=0&&(e=!0,c=c.replace("!",""));var s=a[c];if(s||(s=a[c]={}),t&&(s.success_callbacks||(s.success_callbacks=[]),s.success_callbacks.push(t)),r&&(s.error_callbacks||(s.error_callbacks=[]),s.error_callbacks.push(r)),!e&&Prism.languages[c])m(c);else if(!e&&s.error)k(c);else if(e||!s.loading){s.loading=!0;var n=l(c);i(n,function(){s.loading=!1,m(c)},function(){s.loading=!1,s.error=!0,k(c)})}},n=e[c];n&&n.length?p(n,s):s()},m=function(e){a[e]&&a[e].success_callbacks&&a[e].success_callbacks.length&&a[e].success_callbacks.forEach(function(a){a(e)})},k=function(e){a[e]&&a[e].error_callbacks&&a[e].error_callbacks.length&&a[e].error_callbacks.forEach(function(a){a(e)})};Prism.hooks.add("complete",function(e){e.element&&e.language&&!e.grammar&&e.language!==c&&o(e.language,e.element)})}}(); \ No newline at end of file +!function(){if("undefined"!=typeof self&&self.Prism&&self.document&&document.createElement){var a={javascript:"clike",actionscript:"javascript",arduino:"cpp",aspnet:["markup","csharp"],bison:"c",c:"clike",csharp:"clike",cpp:"c",coffeescript:"javascript",crystal:"ruby","css-extras":"css",d:"clike",dart:"clike",django:"markup",erb:["ruby","markup-templating"],fsharp:"clike",flow:"javascript",glsl:"clike",gml:"clike",go:"clike",groovy:"clike",haml:"ruby",handlebars:"markup-templating",haxe:"clike",java:"clike",javadoc:["markup","java","javadoclike"],jolie:"clike",jsdoc:["javascript","javadoclike"],"js-extras":"javascript",jsonp:"json",json5:"json",kotlin:"clike",less:"css",markdown:"markup","markup-templating":"markup",n4js:"javascript",nginx:"clike",objectivec:"c",opencl:"cpp",parser:"markup",php:["clike","markup-templating"],phpdoc:["php","javadoclike"],"php-extras":"php",plsql:"sql",processing:"clike",protobuf:"clike",pug:"javascript",qore:"clike",jsx:["markup","javascript"],tsx:["jsx","typescript"],reason:"clike",ruby:"clike",sass:"css",scss:"css",scala:"java",smarty:"markup-templating",soy:"markup-templating",swift:"clike",tap:"yaml",textile:"markup",tt2:["clike","markup-templating"],twig:"markup",typescript:"javascript",vala:"clike",vbnet:"basic",velocity:"markup",wiki:"markup",xeora:"markup",xquery:"markup"},e={},c="none",t=document.getElementsByTagName("script");t=t[t.length-1];var r="components/";if(t.hasAttribute("data-autoloader-path")){var s=t.getAttribute("data-autoloader-path").trim();s.length>0&&!/^[a-z]+:\/\//i.test(t.src)&&(r=s.replace(/\/?$/,"/"))}else/[\w-]+\.js$/.test(t.src)&&(r=t.src.replace(/[\w-]+\.js$/,"components/"));var i=Prism.plugins.autoloader={languages_path:r,use_minified:!0},n=function(a,e,c){var t=document.createElement("script");t.src=a,t.async=!0,t.onload=function(){document.body.removeChild(t),e&&e()},t.onerror=function(){document.body.removeChild(t),c&&c()},document.body.appendChild(t)},l=function(a){return i.languages_path+"prism-"+a+(i.use_minified?".min":"")+".js"},o=function(a,c){var t=e[a];t||(t=e[a]={});var r=c.getAttribute("data-dependencies");!r&&c.parentNode&&"pre"===c.parentNode.tagName.toLowerCase()&&(r=c.parentNode.getAttribute("data-dependencies")),r=r?r.split(/\s*,\s*/g):[],p(r,function(){u(a,function(){Prism.highlightElement(c)})})},p=function(a,e,c){"string"==typeof a&&(a=[a]);var t=0,r=a.length,s=function(){r>t?u(a[t],function(){t++,s()},function(){c&&c(a[t])}):t===r&&e&&e(a)};s()},u=function(c,t,r){var s=function(){var a=!1;c.indexOf("!")>=0&&(a=!0,c=c.replace("!",""));var s=e[c];if(s||(s=e[c]={}),t&&(s.success_callbacks||(s.success_callbacks=[]),s.success_callbacks.push(t)),r&&(s.error_callbacks||(s.error_callbacks=[]),s.error_callbacks.push(r)),!a&&Prism.languages[c])m(c);else if(!a&&s.error)k(c);else if(a||!s.loading){s.loading=!0;var i=l(c);n(i,function(){s.loading=!1,m(c)},function(){s.loading=!1,s.error=!0,k(c)})}},i=a[c];i&&i.length?p(i,s):s()},m=function(a){e[a]&&e[a].success_callbacks&&e[a].success_callbacks.length&&e[a].success_callbacks.forEach(function(e){e(a)})},k=function(a){e[a]&&e[a].error_callbacks&&e[a].error_callbacks.length&&e[a].error_callbacks.forEach(function(e){e(a)})};Prism.hooks.add("complete",function(a){a.element&&a.language&&!a.grammar&&a.language!==c&&o(a.language,a.element)})}}(); \ No newline at end of file diff --git a/plugins/show-language/prism-show-language.js b/plugins/show-language/prism-show-language.js index 7eded07f08..9f3125e10f 100644 --- a/plugins/show-language/prism-show-language.js +++ b/plugins/show-language/prism-show-language.js @@ -11,7 +11,7 @@ if (!Prism.plugins.toolbar) { } // The languages map is built automatically with gulp -var Languages = /*languages_placeholder[*/{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML","css":"CSS","clike":"C-like","js":"JavaScript","abap":"ABAP","abnf":"Augmented Backus–Naur form","apacheconf":"Apache Configuration","apl":"APL","arff":"ARFF","asciidoc":"AsciiDoc","adoc":"AsciiDoc","asm6502":"6502 Assembly","aspnet":"ASP.NET (C#)","autohotkey":"AutoHotkey","autoit":"AutoIt","shell":"Bash","basic":"BASIC","bnf":"Backus–Naur form","rbfn":"Routing Backus–Naur form","csharp":"C#","dotnet":"C#","cpp":"C++","cil":"CIL","csp":"Content-Security-Policy","css-extras":"CSS Extras","django":"Django/Jinja2","jinja2":"Django/Jinja2","dockerfile":"Docker","ebnf":"Extended Backus–Naur form","erb":"ERB","fsharp":"F#","gcode":"G-code","gedcom":"GEDCOM","glsl":"GLSL","gml":"GameMaker Language","gamemakerlanguage":"GameMaker Language","graphql":"GraphQL","hcl":"HCL","http":"HTTP","hpkp":"HTTP Public-Key-Pins","hsts":"HTTP Strict-Transport-Security","ichigojam":"IchigoJam","inform7":"Inform 7","javastacktrace":"Java stack trace","js-extras":"JS Extras","json":"JSON","jsonp":"JSONP","json5":"JSON5","latex":"LaTeX","emacs":"Lisp","elisp":"Lisp","emacs-lisp":"Lisp","lolcode":"LOLCODE","markup-templating":"Markup templating","matlab":"MATLAB","mel":"MEL","n1ql":"N1QL","n4js":"N4JS","n4jsd":"N4JS","nand2tetris-hdl":"Nand To Tetris HDL","nasm":"NASM","nginx":"nginx","nsis":"NSIS","objectivec":"Objective-C","ocaml":"OCaml","opencl":"OpenCL","parigp":"PARI/GP","objectpascal":"Object Pascal","php":"PHP","php-extras":"PHP Extras","plsql":"PL/SQL","powershell":"PowerShell","properties":".properties","protobuf":"Protocol Buffers","q":"Q (kdb+ database)","jsx":"React JSX","tsx":"React TSX","renpy":"Ren'py","rest":"reST (reStructuredText)","sas":"SAS","sass":"Sass (Sass)","scss":"Sass (Scss)","sql":"SQL","soy":"Soy (Closure Template)","tap":"TAP","toml":"TOML","tt2":"Template Toolkit 2","ts":"TypeScript","vbnet":"VB.Net","vhdl":"VHDL","vim":"vim","visual-basic":"Visual Basic","vb":"Visual Basic","wasm":"WebAssembly","wiki":"Wiki markup","xeoracube":"XeoraCube","xojo":"Xojo (REALbasic)","xquery":"XQuery","yaml":"YAML"}/*]*/; +var Languages = /*languages_placeholder[*/{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML","css":"CSS","clike":"C-like","js":"JavaScript","abap":"ABAP","abnf":"Augmented Backus–Naur form","apacheconf":"Apache Configuration","apl":"APL","arff":"ARFF","asciidoc":"AsciiDoc","adoc":"AsciiDoc","asm6502":"6502 Assembly","aspnet":"ASP.NET (C#)","autohotkey":"AutoHotkey","autoit":"AutoIt","shell":"Bash","basic":"BASIC","bnf":"Backus–Naur form","rbfn":"Routing Backus–Naur form","csharp":"C#","dotnet":"C#","cpp":"C++","cil":"CIL","csp":"Content-Security-Policy","css-extras":"CSS Extras","django":"Django/Jinja2","jinja2":"Django/Jinja2","dockerfile":"Docker","ebnf":"Extended Backus–Naur form","erb":"ERB","fsharp":"F#","gcode":"G-code","gedcom":"GEDCOM","glsl":"GLSL","gml":"GameMaker Language","gamemakerlanguage":"GameMaker Language","graphql":"GraphQL","hcl":"HCL","http":"HTTP","hpkp":"HTTP Public-Key-Pins","hsts":"HTTP Strict-Transport-Security","ichigojam":"IchigoJam","inform7":"Inform 7","javadoc":"JavaDoc","javadoclike":"JavaDoc-like","javastacktrace":"Java stack trace","jsdoc":"JSDoc","js-extras":"JS Extras","json":"JSON","jsonp":"JSONP","json5":"JSON5","latex":"LaTeX","emacs":"Lisp","elisp":"Lisp","emacs-lisp":"Lisp","lolcode":"LOLCODE","markup-templating":"Markup templating","matlab":"MATLAB","mel":"MEL","n1ql":"N1QL","n4js":"N4JS","n4jsd":"N4JS","nand2tetris-hdl":"Nand To Tetris HDL","nasm":"NASM","nginx":"nginx","nsis":"NSIS","objectivec":"Objective-C","ocaml":"OCaml","opencl":"OpenCL","parigp":"PARI/GP","objectpascal":"Object Pascal","php":"PHP","phpdoc":"PHPDoc","php-extras":"PHP Extras","plsql":"PL/SQL","powershell":"PowerShell","properties":".properties","protobuf":"Protocol Buffers","q":"Q (kdb+ database)","jsx":"React JSX","tsx":"React TSX","renpy":"Ren'py","rest":"reST (reStructuredText)","sas":"SAS","sass":"Sass (Sass)","scss":"Sass (Scss)","sql":"SQL","soy":"Soy (Closure Template)","tap":"TAP","toml":"TOML","tt2":"Template Toolkit 2","ts":"TypeScript","vbnet":"VB.Net","vhdl":"VHDL","vim":"vim","visual-basic":"Visual Basic","vb":"Visual Basic","wasm":"WebAssembly","wiki":"Wiki markup","xeoracube":"XeoraCube","xojo":"Xojo (REALbasic)","xquery":"XQuery","yaml":"YAML"}/*]*/; Prism.plugins.toolbar.registerButton('show-language', function(env) { var pre = env.element.parentNode; diff --git a/plugins/show-language/prism-show-language.min.js b/plugins/show-language/prism-show-language.min.js index 8c5a39f55d..119152f151 100644 --- a/plugins/show-language/prism-show-language.min.js +++ b/plugins/show-language/prism-show-language.min.js @@ -1 +1 @@ -!function(){if("undefined"!=typeof self&&self.Prism&&self.document){if(!Prism.plugins.toolbar)return console.warn("Show Languages plugin loaded before Toolbar plugin."),void 0;var a={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",js:"JavaScript",abap:"ABAP",abnf:"Augmented Backus–Naur form",apacheconf:"Apache Configuration",apl:"APL",arff:"ARFF",asciidoc:"AsciiDoc",adoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",shell:"Bash",basic:"BASIC",bnf:"Backus–Naur form",rbfn:"Routing Backus–Naur form",csharp:"C#",dotnet:"C#",cpp:"C++",cil:"CIL",csp:"Content-Security-Policy","css-extras":"CSS Extras",django:"Django/Jinja2",jinja2:"Django/Jinja2",dockerfile:"Docker",ebnf:"Extended Backus–Naur form",erb:"ERB",fsharp:"F#",gcode:"G-code",gedcom:"GEDCOM",glsl:"GLSL",gml:"GameMaker Language",gamemakerlanguage:"GameMaker Language",graphql:"GraphQL",hcl:"HCL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",inform7:"Inform 7",javastacktrace:"Java stack trace","js-extras":"JS Extras",json:"JSON",jsonp:"JSONP",json5:"JSON5",latex:"LaTeX",emacs:"Lisp",elisp:"Lisp","emacs-lisp":"Lisp",lolcode:"LOLCODE","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",n1ql:"N1QL",n4js:"N4JS",n4jsd:"N4JS","nand2tetris-hdl":"Nand To Tetris HDL",nasm:"NASM",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",parigp:"PARI/GP",objectpascal:"Object Pascal",php:"PHP","php-extras":"PHP Extras",plsql:"PL/SQL",powershell:"PowerShell",properties:".properties",protobuf:"Protocol Buffers",q:"Q (kdb+ database)",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rest:"reST (reStructuredText)",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (Scss)",sql:"SQL",soy:"Soy (Closure Template)",tap:"TAP",toml:"TOML",tt2:"Template Toolkit 2",ts:"TypeScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",vb:"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xeoracube:"XeoraCube",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML"};Prism.plugins.toolbar.registerButton("show-language",function(e){function s(a){return a?(a.substring(0,1).toUpperCase()+a.substring(1)).replace(/s(?=cript)/,"S"):a}var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var r=t.getAttribute("data-language")||a[e.language]||s(e.language);if(r){var o=document.createElement("span");return o.textContent=r,o}}})}}(); \ No newline at end of file +!function(){if("undefined"!=typeof self&&self.Prism&&self.document){if(!Prism.plugins.toolbar)return console.warn("Show Languages plugin loaded before Toolbar plugin."),void 0;var a={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",js:"JavaScript",abap:"ABAP",abnf:"Augmented Backus–Naur form",apacheconf:"Apache Configuration",apl:"APL",arff:"ARFF",asciidoc:"AsciiDoc",adoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",shell:"Bash",basic:"BASIC",bnf:"Backus–Naur form",rbfn:"Routing Backus–Naur form",csharp:"C#",dotnet:"C#",cpp:"C++",cil:"CIL",csp:"Content-Security-Policy","css-extras":"CSS Extras",django:"Django/Jinja2",jinja2:"Django/Jinja2",dockerfile:"Docker",ebnf:"Extended Backus–Naur form",erb:"ERB",fsharp:"F#",gcode:"G-code",gedcom:"GEDCOM",glsl:"GLSL",gml:"GameMaker Language",gamemakerlanguage:"GameMaker Language",graphql:"GraphQL",hcl:"HCL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",inform7:"Inform 7",javadoc:"JavaDoc",javadoclike:"JavaDoc-like",javastacktrace:"Java stack trace",jsdoc:"JSDoc","js-extras":"JS Extras",json:"JSON",jsonp:"JSONP",json5:"JSON5",latex:"LaTeX",emacs:"Lisp",elisp:"Lisp","emacs-lisp":"Lisp",lolcode:"LOLCODE","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",n1ql:"N1QL",n4js:"N4JS",n4jsd:"N4JS","nand2tetris-hdl":"Nand To Tetris HDL",nasm:"NASM",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",parigp:"PARI/GP",objectpascal:"Object Pascal",php:"PHP",phpdoc:"PHPDoc","php-extras":"PHP Extras",plsql:"PL/SQL",powershell:"PowerShell",properties:".properties",protobuf:"Protocol Buffers",q:"Q (kdb+ database)",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rest:"reST (reStructuredText)",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (Scss)",sql:"SQL",soy:"Soy (Closure Template)",tap:"TAP",toml:"TOML",tt2:"Template Toolkit 2",ts:"TypeScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",vb:"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xeoracube:"XeoraCube",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML"};Prism.plugins.toolbar.registerButton("show-language",function(e){function s(a){return a?(a.substring(0,1).toUpperCase()+a.substring(1)).replace(/s(?=cript)/,"S"):a}var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var o=t.getAttribute("data-language")||a[e.language]||s(e.language);if(o){var r=document.createElement("span");return r.textContent=o,r}}})}}(); \ No newline at end of file diff --git a/tests/languages/javadoc+java/javadoc_inclusion.test b/tests/languages/javadoc+java/javadoc_inclusion.test new file mode 100644 index 0000000000..9dd0329444 --- /dev/null +++ b/tests/languages/javadoc+java/javadoc_inclusion.test @@ -0,0 +1,11 @@ +/** Description. */ + +---------------------------------------------------- + +[ + ["doc-comment", ["/** Description. */"]] +] + +---------------------------------------------------- + +Checks for JavaDoc doc comments in Java. diff --git a/tests/languages/javadoc/class-name_feature.test b/tests/languages/javadoc/class-name_feature.test new file mode 100644 index 0000000000..20ac38ebd8 --- /dev/null +++ b/tests/languages/javadoc/class-name_feature.test @@ -0,0 +1,40 @@ +/** + * @throws IllegalArgumentException if the argument is negative. + * @see org.my.company.InfoClass for more information. + * @param the first generic argument. + */ + +---------------------------------------------------- + +[ + "/**\n * ", + ["keyword", "@throws"], + ["class-name", [ + "IllegalArgumentException" + ]], + " if the argument is negative.\n * ", + ["keyword", "@see"], + ["namespace", [ + "org", + ["punctuation", "."], + "my", + ["punctuation", "."], + "company", + ["punctuation", "."] + ]], + ["class-name", [ + "InfoClass" + ]], + " for more information.\n * ", + ["keyword", "@param"], + ["class-name", [ + ["punctuation", "<"], + "T", + ["punctuation", ">"] + ]], + " the first generic argument.\n */" +] + +---------------------------------------------------- + +Checks for class names. diff --git a/tests/languages/javadoc/code_feature.test b/tests/languages/javadoc/code_feature.test new file mode 100644 index 0000000000..c9e52394c3 --- /dev/null +++ b/tests/languages/javadoc/code_feature.test @@ -0,0 +1,135 @@ +/** + * {@code this.foo} is never {@code null}. + * Foo.bar(null) + *

+ * for (int i = 0; i < array.length; i++) {
+ *     array[i] += 1;
+ * }
+ * return array;
+ * 
+ */ + +---------------------------------------------------- + +[ + "/**\n * ", + ["punctuation", "{"], + ["keyword", "@code"], + ["code-section", [ + ["code", [ + ["keyword", "this"], + ["punctuation", "."], + "foo" + ]] + ]], + ["punctuation", "}"], + " is never ", + ["punctuation", "{"], + ["keyword", "@code"], + ["code-section", [ + ["code", [ + ["keyword", "null"] + ]] + ]], + ["punctuation", "}"], + ".\n * ", + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "code" + ]], + ["punctuation", ">"] + ]], + ["code-section", [ + ["code", [ + ["class-name", "Foo"], + ["punctuation", "."], + ["function", "bar"], + ["punctuation", "("], + ["keyword", "null"], + ["punctuation", ")"] + ]] + ]], + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], + "\n * ", + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "pre" + ]], + ["punctuation", ">"] + ]], + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "code" + ]], + ["punctuation", ">"] + ]], + ["code-section", [ + "* ", + ["code", [ + ["keyword", "for"], + ["punctuation", "("], + ["keyword", "int"], + " i ", + ["operator", "="], + ["number", "0"], + ["punctuation", ";"], + " i ", + ["operator", "<"], + " array", + ["punctuation", "."], + "length", + ["punctuation", ";"], + " i", + ["operator", "++"], + ["punctuation", ")"], + ["punctuation", "{"] + ]], + "\n * ", + ["code", [ + "array", + ["punctuation", "["], + "i", + ["punctuation", "]"], + ["operator", "+="], + ["number", "1"], + ["punctuation", ";"] + ]], + "\n * }\n * ", + ["code", [ + ["keyword", "return"], + " array", + ["punctuation", ";"] + ]], + "\n *" + ]], + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], + "\n */" +] + +---------------------------------------------------- + +Checks for code. diff --git a/tests/languages/javadoc/keyword_feature.test b/tests/languages/javadoc/keyword_feature.test new file mode 100644 index 0000000000..db56bb42b1 --- /dev/null +++ b/tests/languages/javadoc/keyword_feature.test @@ -0,0 +1,69 @@ +/** + * @author + * @deprecated + * @exception + * @param + * @return + * @see + * @serial + * @serialData + * @serialField + * @since + * @throws + * @version + * {@code} + * {@docRoot} + * {@inheritDoc} + * {@link} + * {@linkplain} + * {@literal} + * {@value} + */ + +---------------------------------------------------- + +[ + "/**\n * ", + ["keyword", "@author"], + "\n * ", + ["keyword", "@deprecated"], + "\n * ", + ["keyword", "@exception"], + "\n * ", + ["keyword", "@param"], + "\n * ", + ["keyword", "@return"], + "\n * ", + ["keyword", "@see"], + "\n * ", + ["keyword", "@serial"], + "\n * ", + ["keyword", "@serialData"], + "\n * ", + ["keyword", "@serialField"], + "\n * ", + ["keyword", "@since"], + "\n * ", + ["keyword", "@throws"], + "\n * ", + ["keyword", "@version"], + "\n * ", + ["punctuation", "{"], ["keyword", "@code"], ["punctuation", "}"], + "\n * ", + ["punctuation", "{"], ["keyword", "@docRoot"], ["punctuation", "}"], + "\n * ", + ["punctuation", "{"], ["keyword", "@inheritDoc"], ["punctuation", "}"], + "\n * ", + ["punctuation", "{"], ["keyword", "@link"], ["punctuation", "}"], + "\n * ", + ["punctuation", "{"], ["keyword", "@linkplain"], ["punctuation", "}"], + "\n * ", + ["punctuation", "{"], ["keyword", "@literal"], ["punctuation", "}"], + "\n * ", + ["punctuation", "{"], ["keyword", "@value"], ["punctuation", "}"], + "\n */" +] + +---------------------------------------------------- + +Checks for all keywords. diff --git a/tests/languages/javadoc/parameter_feature.test b/tests/languages/javadoc/parameter_feature.test new file mode 100644 index 0000000000..98e12ed902 --- /dev/null +++ b/tests/languages/javadoc/parameter_feature.test @@ -0,0 +1,20 @@ +/** + * @param foo an argument. + * @param bar another argument. + */ + +---------------------------------------------------- + +[ + "/**\n * ", + ["keyword", "@param"], + ["parameter", "foo"], + " an argument.\n * ", + ["keyword", "@param"], + ["parameter", "bar"], + " another argument.\n */" +] + +---------------------------------------------------- + +Checks for parameters. diff --git a/tests/languages/javadoc/tag_feature.test b/tests/languages/javadoc/tag_feature.test new file mode 100644 index 0000000000..81b49a51f5 --- /dev/null +++ b/tests/languages/javadoc/tag_feature.test @@ -0,0 +1,117 @@ +/** + *

+ * + * + * + * + * + *
+ * foo + * + * bar + *
+ * some link + */ + +---------------------------------------------------- + +[ + "/**\n * ", + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "p" + ]], + ["punctuation", ">"] + ]], + "\n * ", + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "table" + ]], + ["punctuation", ">"] + ]], + "\n * ", + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "tr" + ]], + ["punctuation", ">"] + ]], + "\n * ", + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "td" + ]], + ["punctuation", ">"] + ]], + "\n * foo\n * ", + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], + "\n * ", + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "td" + ]], + ["punctuation", ">"] + ]], + "\n * bar\n * ", + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], + "\n * ", + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], + "\n * ", + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], + "\n * ", + ["tag", [ + ["tag", [ + ["punctuation", "<"], "a"]], + ["attr-name", ["href"]], + ["attr-value", [ + ["punctuation", "="], + ["punctuation", "\""], + "example.com", + ["punctuation", "\""] + ]], + ["punctuation", ">"] + ]], + "some link", + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], + "\n */" +] + +---------------------------------------------------- + +Checks for HTML tags inside doc comments. diff --git a/tests/languages/jsdoc+javascript/jsdoc_inclusion.test b/tests/languages/jsdoc+javascript/jsdoc_inclusion.test new file mode 100644 index 0000000000..c418f9d89c --- /dev/null +++ b/tests/languages/jsdoc+javascript/jsdoc_inclusion.test @@ -0,0 +1,11 @@ +/** Description. */ + +---------------------------------------------------- + +[ + ["doc-comment", ["/** Description. */"]] +] + +---------------------------------------------------- + +Checks for JSDoc doc comments in JavaScript. diff --git a/tests/languages/jsdoc/class-name_feature.test b/tests/languages/jsdoc/class-name_feature.test new file mode 100644 index 0000000000..90debeeaea --- /dev/null +++ b/tests/languages/jsdoc/class-name_feature.test @@ -0,0 +1,75 @@ +/** + * @param {number} + * @param {number | string} + * @param {Array. | Object.} + * @param {{[x: string]: {start: number, end?: number}}} + */ + +---------------------------------------------------- + +[ + "/**\n * ", + ["keyword", "@param"], + ["class-name", [ + ["punctuation", "{"], + "number", + ["punctuation", "}"] + ]], + "\n * ", + ["keyword", "@param"], + ["class-name", [ + ["punctuation", "{"], + "number ", + ["punctuation", "|"], + " string", + ["punctuation", "}"] + ]], + "\n * ", + ["keyword", "@param"], + ["class-name", [ + ["punctuation", "{"], + "Array", + ["punctuation", "."], + ["punctuation", "<"], + "number", + ["punctuation", ">"], + ["punctuation", "|"], + " Object", + ["punctuation", "."], + ["punctuation", "<"], + "string", + ["punctuation", ","], + " number", + ["punctuation", ">"], + ["punctuation", "}"] + ]], + "\n * ", + ["keyword", "@param"], + ["class-name", [ + ["punctuation", "{"], + ["punctuation", "{"], + ["punctuation", "["], + "x", + ["punctuation", ":"], + " string", + ["punctuation", "]"], + ["punctuation", ":"], + ["punctuation", "{"], + "start", + ["punctuation", ":"], + " number", + ["punctuation", ","], + " end", + ["punctuation", "?"], + ["punctuation", ":"], + " number", + ["punctuation", "}"], + ["punctuation", "}"], + ["punctuation", "}"] + ]], + "\n */" +] + +---------------------------------------------------- + +Checks for class names. diff --git a/tests/languages/jsdoc/example_feature.test b/tests/languages/jsdoc/example_feature.test new file mode 100644 index 0000000000..61febb2092 --- /dev/null +++ b/tests/languages/jsdoc/example_feature.test @@ -0,0 +1,35 @@ +/** + * @example + * // returns 3 + * globalNS.method(5, 15); + */ + +---------------------------------------------------- + +[ + "/**\n * ", + ["keyword", "@example"], + ["example", [ + "* ", + ["code", [ + ["comment", "// returns 3"] + ]], + "\n * ", + ["code", [ + "globalNS", + ["punctuation", "."], + ["function", "method"], + ["punctuation", "("], + ["number", "5"], + ["punctuation", ","], + ["number", "15"], + ["punctuation", ")"], + ["punctuation", ";"] + ]] + ]], + "\n */" +] + +---------------------------------------------------- + +Checks for examples. diff --git a/tests/languages/jsdoc/keyword_feature.test b/tests/languages/jsdoc/keyword_feature.test new file mode 100644 index 0000000000..6a74fc7cba --- /dev/null +++ b/tests/languages/jsdoc/keyword_feature.test @@ -0,0 +1,182 @@ +/** + * @abstract + * @virtual + * @access + * @alias + * @async + * @augments + * @extends + * @author + * @borrows + * @callback + * @class + * @constructor + * @hideconstructor + * @classdesc + * @constant + * @const + * @constructs + * @copyright + * @default + * @defaultValue + * @deprecated + * @description + * @desc + * @enum + * @event + * @exports + * @external + * @host + * @file + * @overview + * @fileoverview + * @fires + * @emits + * @function + * @func + * @method + * @generator + * @global + * @ignore + * @implements + * @inheritdoc + * @inner + * @instance + * @interface + * @kind + * @lends + * @license + * @listens + * @member + * @var + * @memberof + * @mixes + * @mixin + * @module + * @name + * @namespace + * @override + * @package + * @param + * @arg + * @argument + * @private + * @property + * @prop + * @protected + * @public + * @readonly + * @requires + * @return + * @returns + * @see + * @since + * @static + * @summary + * @this + * @throws + * @exception + * @todo + * @tutorial + * @type + * @typedef + * @variation + * @version + * @yield + * @yields + */ + +---------------------------------------------------- + +[ + "/**\n * ", ["keyword", "@abstract"], + "\n * ", ["keyword", "@virtual"], + "\n * ", ["keyword", "@access"], + "\n * ", ["keyword", "@alias"], + "\n * ", ["keyword", "@async"], + "\n * ", ["keyword", "@augments"], + "\n * ", ["keyword", "@extends"], + "\n * ", ["keyword", "@author"], + "\n * ", ["keyword", "@borrows"], + "\n * ", ["keyword", "@callback"], + "\n * ", ["keyword", "@class"], + "\n * ", ["keyword", "@constructor"], + "\n * ", ["keyword", "@hideconstructor"], + "\n * ", ["keyword", "@classdesc"], + "\n * ", ["keyword", "@constant"], + "\n * ", ["keyword", "@const"], + "\n * ", ["keyword", "@constructs"], + "\n * ", ["keyword", "@copyright"], + "\n * ", ["keyword", "@default"], + "\n * ", ["keyword", "@defaultValue"], + "\n * ", ["keyword", "@deprecated"], + "\n * ", ["keyword", "@description"], + "\n * ", ["keyword", "@desc"], + "\n * ", ["keyword", "@enum"], + "\n * ", ["keyword", "@event"], + "\n * ", ["keyword", "@exports"], + "\n * ", ["keyword", "@external"], + "\n * ", ["keyword", "@host"], + "\n * ", ["keyword", "@file"], + "\n * ", ["keyword", "@overview"], + "\n * ", ["keyword", "@fileoverview"], + "\n * ", ["keyword", "@fires"], + "\n * ", ["keyword", "@emits"], + "\n * ", ["keyword", "@function"], + "\n * ", ["keyword", "@func"], + "\n * ", ["keyword", "@method"], + "\n * ", ["keyword", "@generator"], + "\n * ", ["keyword", "@global"], + "\n * ", ["keyword", "@ignore"], + "\n * ", ["keyword", "@implements"], + "\n * ", ["keyword", "@inheritdoc"], + "\n * ", ["keyword", "@inner"], + "\n * ", ["keyword", "@instance"], + "\n * ", ["keyword", "@interface"], + "\n * ", ["keyword", "@kind"], + "\n * ", ["keyword", "@lends"], + "\n * ", ["keyword", "@license"], + "\n * ", ["keyword", "@listens"], + "\n * ", ["keyword", "@member"], + "\n * ", ["keyword", "@var"], + "\n * ", ["keyword", "@memberof"], + "\n * ", ["keyword", "@mixes"], + "\n * ", ["keyword", "@mixin"], + "\n * ", ["keyword", "@module"], + "\n * ", ["keyword", "@name"], + "\n * ", ["keyword", "@namespace"], + "\n * ", ["keyword", "@override"], + "\n * ", ["keyword", "@package"], + "\n * ", ["keyword", "@param"], + "\n * ", ["keyword", "@arg"], + "\n * ", ["keyword", "@argument"], + "\n * ", ["keyword", "@private"], + "\n * ", ["keyword", "@property"], + "\n * ", ["keyword", "@prop"], + "\n * ", ["keyword", "@protected"], + "\n * ", ["keyword", "@public"], + "\n * ", ["keyword", "@readonly"], + "\n * ", ["keyword", "@requires"], + "\n * ", ["keyword", "@return"], + "\n * ", ["keyword", "@returns"], + "\n * ", ["keyword", "@see"], + "\n * ", ["keyword", "@since"], + "\n * ", ["keyword", "@static"], + "\n * ", ["keyword", "@summary"], + "\n * ", ["keyword", "@this"], + "\n * ", ["keyword", "@throws"], + "\n * ", ["keyword", "@exception"], + "\n * ", ["keyword", "@todo"], + "\n * ", ["keyword", "@tutorial"], + "\n * ", ["keyword", "@type"], + "\n * ", ["keyword", "@typedef"], + "\n * ", ["keyword", "@variation"], + "\n * ", ["keyword", "@version"], + "\n * ", ["keyword", "@yield"], + "\n * ", ["keyword", "@yields"], + "\n */" +] + +---------------------------------------------------- + +Checks for keywords. diff --git a/tests/languages/jsdoc/parameter_feature.test b/tests/languages/jsdoc/parameter_feature.test new file mode 100644 index 0000000000..80747a3753 --- /dev/null +++ b/tests/languages/jsdoc/parameter_feature.test @@ -0,0 +1,86 @@ +/** + * @param n - A number. + * @param [n] - A number. + * @param [n=1+2] - A number. + * @param {number} n - A number. + * @param {{[x: string]: {start: number, end?: number}}} map + * @param {any} foo.bar + */ + +---------------------------------------------------- + +[ + "/**\n * ", + ["keyword", "@param"], + ["parameter", ["n"]], + " - A number.\n * ", + ["keyword", "@param"], + ["optional-parameter", [ + ["punctuation", "["], + ["parameter", ["n"]], + ["punctuation", "]"] + ]], + " - A number.\n * ", + ["keyword", "@param"], + ["optional-parameter", [ + ["punctuation", "["], + ["parameter", ["n"]], + ["punctuation", "="], + ["code", [ + ["number", "1"], + ["operator", "+"], + ["number", "2"] + ]], + ["punctuation", "]"] + ]], + " - A number.\n * ", + ["keyword", "@param"], + ["class-name", [ + ["punctuation", "{"], + "number", + ["punctuation", "}"] + ]], + ["parameter", ["n"]], + " - A number.\n * ", + ["keyword", "@param"], + ["class-name", [ + ["punctuation", "{"], + ["punctuation", "{"], + ["punctuation", "["], + "x", + ["punctuation", ":"], + " string", + ["punctuation", "]"], + ["punctuation", ":"], + ["punctuation", "{"], + "start", + ["punctuation", ":"], + " number", + ["punctuation", ","], + " end", + ["punctuation", "?"], + ["punctuation", ":"], + " number", + ["punctuation", "}"], + ["punctuation", "}"], + ["punctuation", "}"] + ]], + ["parameter", ["map"]], + "\n * ", + ["keyword", "@param"], + ["class-name", [ + ["punctuation", "{"], + "any", + ["punctuation", "}"] + ]], + ["parameter", [ + "foo", + ["punctuation", "."], + "bar" + ]], + "\n */" +] + +---------------------------------------------------- + +Checks for parameters. diff --git a/tests/languages/phpdoc+php/phpdoc_inclusion.test b/tests/languages/phpdoc+php/phpdoc_inclusion.test new file mode 100644 index 0000000000..fb5e3f6181 --- /dev/null +++ b/tests/languages/phpdoc+php/phpdoc_inclusion.test @@ -0,0 +1,11 @@ +/** Description. */ + +---------------------------------------------------- + +[ + ["doc-comment", ["/** Description. */"]] +] + +---------------------------------------------------- + +Checks for PHPDoc doc comments in PHP. diff --git a/tests/languages/phpdoc/class-name_feature.test b/tests/languages/phpdoc/class-name_feature.test new file mode 100644 index 0000000000..b55784be3a --- /dev/null +++ b/tests/languages/phpdoc/class-name_feature.test @@ -0,0 +1,45 @@ +/** + * @param string|null $parameter a parameter + * @return self + * @var MyClass[int] + * @throws \foo\MyException if something bad happens + */ + +---------------------------------------------------- + +[ + "/**\n * ", + ["keyword", "@param"], + ["class-name", [ + ["keyword", "string"], + ["punctuation", "|"], + ["keyword", "null"] + ]], + ["parameter", "$parameter"], + " a parameter\n * ", + ["keyword", "@return"], + ["class-name", [ + ["keyword", "self"] + ]], + "\n * ", + ["keyword", "@var"], + ["class-name", [ + "MyClass", + ["punctuation", "["], + ["keyword", "int"], + ["punctuation", "]"] + ]], + "\n * ", + ["keyword", "@throws"], + ["class-name", [ + ["punctuation", "\\"], + "foo", + ["punctuation", "\\"], + "MyException" + ]], + " if something bad happens\n */" +] + +---------------------------------------------------- + +Checks for class names. diff --git a/tests/languages/phpdoc/keyword_feature.test b/tests/languages/phpdoc/keyword_feature.test new file mode 100644 index 0000000000..2681efd1e2 --- /dev/null +++ b/tests/languages/phpdoc/keyword_feature.test @@ -0,0 +1,99 @@ +/** + * @api + * @author + * @category + * @copyright + * @deprecated + * @example + * @filesource + * @global + * @ignore + * @internal + * @license + * @link + * @method + * @package + * @param + * @property + * @property-read + * @property-write + * @return + * @see + * @since + * @source + * @subpackage + * @throws + * @todo + * @uses + * @used-by + * @var + * @version + */ + +---------------------------------------------------- + +[ + "/**\n * ", + ["keyword", "@api"], + "\n * ", + ["keyword", "@author"], + "\n * ", + ["keyword", "@category"], + "\n * ", + ["keyword", "@copyright"], + "\n * ", + ["keyword", "@deprecated"], + "\n * ", + ["keyword", "@example"], + "\n * ", + ["keyword", "@filesource"], + "\n * ", + ["keyword", "@global"], + "\n * ", + ["keyword", "@ignore"], + "\n * ", + ["keyword", "@internal"], + "\n * ", + ["keyword", "@license"], + "\n * ", + ["keyword", "@link"], + "\n * ", + ["keyword", "@method"], + "\n * ", + ["keyword", "@package"], + "\n * ", + ["keyword", "@param"], + "\n * ", + ["keyword", "@property"], + "\n * ", + ["keyword", "@property-read"], + "\n * ", + ["keyword", "@property-write"], + "\n * ", + ["keyword", "@return"], + "\n * ", + ["keyword", "@see"], + "\n * ", + ["keyword", "@since"], + "\n * ", + ["keyword", "@source"], + "\n * ", + ["keyword", "@subpackage"], + "\n * ", + ["keyword", "@throws"], + "\n * ", + ["keyword", "@todo"], + "\n * ", + ["keyword", "@uses"], + "\n * ", + ["keyword", "@used-by"], + "\n * ", + ["keyword", "@var"], + "\n * ", + ["keyword", "@version"], + "\n */" +] + +---------------------------------------------------- + +Checks for keywords. diff --git a/tests/languages/phpdoc/parameter_feature.test b/tests/languages/phpdoc/parameter_feature.test new file mode 100644 index 0000000000..68aa3e2ce3 --- /dev/null +++ b/tests/languages/phpdoc/parameter_feature.test @@ -0,0 +1,23 @@ +/** + * @param string $parameter a parameter + * @param $arg2 a second parameter + */ + +---------------------------------------------------- + +[ + "/**\n * ", + ["keyword", "@param"], + ["class-name", [ + ["keyword", "string"] + ]], + ["parameter", "$parameter"], + " a parameter\n * ", + ["keyword", "@param"], + ["parameter", "$arg2"], + " a second parameter\n */" +] + +---------------------------------------------------- + +Checks for parameters.