From ca4ced3ff634df8373e04c2df9b944a702a6547a Mon Sep 17 00:00:00 2001 From: RunDevelopment Date: Sat, 14 Jul 2018 00:38:44 +0200 Subject: [PATCH 01/21] JavaDoc and JSDoc support --- components.js | 2 +- components.json | 12 +- components/prism-java.js | 10 +- components/prism-java.min.js | 2 +- components/prism-javadoc.js | 57 ++++++ components/prism-javadoc.min.js | 1 + components/prism-javascript.js | 8 + components/prism-javascript.min.js | 2 +- components/prism-jsdoc.js | 44 +++++ components/prism-jsdoc.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 +- prism.js | 8 + .../java+javadoc/keyword_feature.test | 47 +++++ .../javadoc+java/doc-comment_feature.test | 11 ++ .../javascript+jsdoc/keyword_feature.test | 181 ++++++++++++++++++ .../jsdoc+javascript/doc-comment_feature.test | 11 ++ 19 files changed, 396 insertions(+), 9 deletions(-) create mode 100644 components/prism-javadoc.js create mode 100644 components/prism-javadoc.min.js create mode 100644 components/prism-jsdoc.js create mode 100644 components/prism-jsdoc.min.js create mode 100644 tests/languages/java+javadoc/keyword_feature.test create mode 100644 tests/languages/javadoc+java/doc-comment_feature.test create mode 100644 tests/languages/javascript+jsdoc/keyword_feature.test create mode 100644 tests/languages/jsdoc+javascript/doc-comment_feature.test diff --git a/components.js b/components.js index c5aa4cbbad..f6fb946c56 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"},"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":{"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","owner":"zeitgeist87"},"basic":{"title":"BASIC","owner":"Golmote"},"batch":{"title":"Batch","alias":"shell","owner":"Golmote"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"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"},"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","owner":"JustinBeckwith"},"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"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"clike","owner":"Golmote"},"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"},"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"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"json":{"title":"JSON","owner":"CupOfTea696"},"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","owner":"JuanCaicedo","alias":["emacs","elisp","emacs-lisp"]},"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"},"n4js":{"title":"N4JS","require":"javascript","owner":"bsmith-n4"},"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"],"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"},"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"},"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","owner":"Golmote","alias":"vb"},"wasm":{"title":"WebAssembly","owner":"Golmote"},"wiki":{"title":"Wiki markup","require":"markup","owner":"Golmote"},"xeora":{"title":"Xeora","require":"markup","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":"Show Invisibles","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"},"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":{"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","owner":"zeitgeist87"},"basic":{"title":"BASIC","owner":"Golmote"},"batch":{"title":"Batch","alias":"shell","owner":"Golmote"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"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"},"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","owner":"JustinBeckwith"},"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"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"clike","owner":"Golmote"},"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"},"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":"java","owner":"RunDevelopment"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jsdoc":{"title":"JSDoc","require":"javascript","owner":"RunDevelopment"},"json":{"title":"JSON","owner":"CupOfTea696"},"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","owner":"JuanCaicedo","alias":["emacs","elisp","emacs-lisp"]},"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"},"n4js":{"title":"N4JS","require":"javascript","owner":"bsmith-n4"},"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"],"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"},"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"},"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","owner":"Golmote","alias":"vb"},"wasm":{"title":"WebAssembly","owner":"Golmote"},"wiki":{"title":"Wiki markup","require":"markup","owner":"Golmote"},"xeora":{"title":"Xeora","require":"markup","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":"Show Invisibles","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 101fff9aad..941ffb82c6 100644 --- a/components.json +++ b/components.json @@ -364,11 +364,21 @@ "require": "clike", "owner": "sherblot" }, + "javadoc": { + "title": "JavaDoc", + "require": "java", + "owner": "RunDevelopment" + }, "jolie": { "title": "Jolie", "require": "clike", "owner": "thesave" }, + "jsdoc": { + "title": "JSDoc", + "require": "javascript", + "owner": "RunDevelopment" + }, "json": { "title": "JSON", "owner": "CupOfTea696" @@ -864,4 +874,4 @@ "noCSS": true } } -} \ No newline at end of file +} diff --git a/components/prism-java.js b/components/prism-java.js index 881b3067a0..fba5e6e069 100644 --- a/components/prism-java.js +++ b/components/prism-java.js @@ -7,7 +7,15 @@ Prism.languages.java = Prism.languages.extend('clike', { } }); -Prism.languages.insertBefore('java','function', { +Prism.languages.insertBefore('java', 'comment', { + 'doc-comment': { + pattern: /(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/, + greedy: true, + alias: 'comment' + } +}); + +Prism.languages.insertBefore('java', 'function', { 'annotation': { alias: 'punctuation', pattern: /(^|[^.])@\w+/, diff --git a/components/prism-java.min.js b/components/prism-java.min.js index e583b73ea5..7c5bb32e55 100644 --- a/components/prism-java.min.js +++ b/components/prism-java.min.js @@ -1 +1 @@ -Prism.languages.java=Prism.languages.extend("clike",{keyword:/\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp-]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?[df]?/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),Prism.languages.insertBefore("java","function",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0}}),Prism.languages.insertBefore("java","class-name",{generics:{pattern:/<\s*\w+(?:\.\w+)?(?:\s*,\s*\w+(?:\.\w+)?)*>/i,alias:"function",inside:{keyword:Prism.languages.java.keyword,punctuation:/[<>(),.:]/}}}); \ No newline at end of file +Prism.languages.java=Prism.languages.extend("clike",{keyword:/\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp-]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?[df]?/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),Prism.languages.insertBefore("java","comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/,greedy:!0,alias:"comment"}}),Prism.languages.insertBefore("java","function",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0}}),Prism.languages.insertBefore("java","class-name",{generics:{pattern:/<\s*\w+(?:\.\w+)?(?:\s*,\s*\w+(?:\.\w+)?)*>/i,alias:"function",inside:{keyword:Prism.languages.java.keyword,punctuation:/[<>(),.:]/}}}); \ No newline at end of file diff --git a/components/prism-javadoc.js b/components/prism-javadoc.js new file mode 100644 index 0000000000..c00e9ea9bd --- /dev/null +++ b/components/prism-javadoc.js @@ -0,0 +1,57 @@ +(function (Prism) { + + var codeLines = { + 'code': { + pattern: /(^(\s*(?:\*\s*)*)).*[^*\s].+$/m, + lookbehind: true, + inside: Prism.languages.java + } + }; + + Prism.languages.javadoc = { + 'parameter': { + pattern: /(@param\s+)\w+/, + lookbehind: true + }, + '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': /\./ + } + }, + { + pattern: /(@param\s+)<\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': /<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, + 'keyword': /@(?:author|deprecated|exception|param|return|see|serial|serialData|serialField|since|throws|version|code|docRoot|inheritDoc|link|linkplain|literal|value)\b/, + 'punctuation': /[{}]/ + }; + + Prism.languages.java['doc-comment'].inside = Prism.languages.javadoc; +}(Prism)); diff --git a/components/prism-javadoc.min.js b/components/prism-javadoc.min.js new file mode 100644 index 0000000000..f3939c36b4 --- /dev/null +++ b/components/prism-javadoc.min.js @@ -0,0 +1 @@ +!function(e){var a={code:{pattern:/(^(\s*(?:\*\s*)*)).*[^*\s].+$/m,lookbehind:!0,inside:e.languages.java}};e.languages.javadoc={parameter:{pattern:/(@param\s+)\w+/,lookbehind:!0},"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+)<\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:a},{pattern:/(<(code|tt)>\s*)[\s\S]+?(?=\s*<\/\2>)/,lookbehind:!0,inside:a}],tag:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,keyword:/@(?:author|deprecated|exception|param|return|see|serial|serialData|serialField|since|throws|version|code|docRoot|inheritDoc|link|linkplain|literal|value)\b/,punctuation:/[{}]/},e.languages.java["doc-comment"].inside=e.languages.javadoc}(Prism); \ No newline at end of file diff --git a/components/prism-javascript.js b/components/prism-javascript.js index 7800a7d424..3daae734a4 100644 --- a/components/prism-javascript.js +++ b/components/prism-javascript.js @@ -6,6 +6,14 @@ Prism.languages.javascript = Prism.languages.extend('clike', { 'operator': /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ }); +Prism.languages.insertBefore('javascript', 'comment', { + 'doc-comment': { + pattern: /(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/, + greedy: true, + alias: 'comment' + } +}); + Prism.languages.insertBefore('javascript', 'keyword', { 'regex': { pattern: /((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/, diff --git a/components/prism-javascript.min.js b/components/prism-javascript.min.js index 50a4d54f80..129a01d82b 100644 --- a/components/prism-javascript.min.js +++ b/components/prism-javascript.min.js @@ -1 +1 @@ -Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,"function":/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}}}),Prism.languages.javascript["template-string"].inside.interpolation.inside.rest=Prism.languages.javascript,Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript",greedy:!0}}),Prism.languages.js=Prism.languages.javascript; \ No newline at end of file +Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,"function":/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.insertBefore("javascript","comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/,greedy:!0,alias:"comment"}}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}}}),Prism.languages.javascript["template-string"].inside.interpolation.inside.rest=Prism.languages.javascript,Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript",greedy:!0}}),Prism.languages.js=Prism.languages.javascript; \ No newline at end of file diff --git a/components/prism-jsdoc.js b/components/prism-jsdoc.js new file mode 100644 index 0000000000..034a590fc0 --- /dev/null +++ b/components/prism-jsdoc.js @@ -0,0 +1,44 @@ +Prism.languages.jsdoc = { + 'parameter': { + pattern: /(@(?:param|arg|argument)\s+(?:\{[^{}]+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/, + lookbehind: true, + inside: { + 'code': { + pattern: /(\w=)[^[[\]]+(?=\]$)/, + lookbehind: true, + inside: Prism.languages.javascript + }, + 'punctuation': /[=[\]]/ + } + }, + 'class-name': [ + { + pattern: /(@(?:class|constant|const|constructs|enum|implements|member|var|namespace|param|arg|argument|property|prop|returns|return|throws|exception|type|typedef|yields?)\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/, + 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: Prism.languages.javascript + } + } + }, + 'keyword': /@(?:abstract|virtual|access|alias|async|augments|extends|author|borrows|callback|class|(?:hide)?constructor|classdesc|constant|const|constructs|copyright|default(?:Value)?|deprecated|description|desc|enum|event|example|exports|external|host|file|(?:file)?overview|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|returns?|see|since|static|summary|this|throws|exception|todo|tutorial|type|typedef|variation|version|yields?)\b/ +}; + +Prism.languages.javascript['doc-comment'].inside = Prism.languages.jsdoc; diff --git a/components/prism-jsdoc.min.js b/components/prism-jsdoc.min.js new file mode 100644 index 0000000000..520e81f78d --- /dev/null +++ b/components/prism-jsdoc.min.js @@ -0,0 +1 @@ +Prism.languages.jsdoc={parameter:{pattern:/(@(?:param|arg|argument)\s+(?:\{[^{}]+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/,lookbehind:!0,inside:{code:{pattern:/(\w=)[^[[\]]+(?=\]$)/,lookbehind:!0,inside:Prism.languages.javascript},punctuation:/[=[\]]/}},"class-name":[{pattern:/(@(?:class|constant|const|constructs|enum|implements|member|var|namespace|param|arg|argument|property|prop|returns|return|throws|exception|type|typedef|yields?)\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/,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:Prism.languages.javascript}}},keyword:/@(?:abstract|virtual|access|alias|async|augments|extends|author|borrows|callback|class|(?:hide)?constructor|classdesc|constant|const|constructs|copyright|default(?:Value)?|deprecated|description|desc|enum|event|example|exports|external|host|file|(?:file)?overview|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|returns?|see|since|static|summary|this|throws|exception|todo|tutorial|type|typedef|variation|version|yields?)\b/},Prism.languages.javascript["doc-comment"].inside=Prism.languages.jsdoc; \ No newline at end of file diff --git a/plugins/autoloader/prism-autoloader.js b/plugins/autoloader/prism-autoloader.js index 7cbf2953fe..088b11ec5b 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","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup-templating","haxe":"clike","java":"clike","jolie":"clike","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","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","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup-templating","haxe":"clike","java":"clike","javadoc":"java","jolie":"clike","jsdoc":"javascript","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","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 9e3cc2515d..2d89718bc6 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",go:"clike",groovy:"clike",haml:"ruby",handlebars:"markup-templating",haxe:"clike",java:"clike",jolie:"clike",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",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 i=Prism.plugins.autoloader={languages_path:r,use_minified:!0},t=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)},n=function(e){return i.languages_path+"prism-"+e+(i.use_minified?".min":"")+".js"},l=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):[],o(r,function(){p(e,function(){Prism.highlightElement(c)})})},o=function(e,a,c){"string"==typeof e&&(e=[e]);var t=0,r=e.length,s=function(){r>t?p(e[t],function(){t++,s()},function(){c&&c(e[t])}):t===r&&a&&a(e)};s()},p=function(c,r,s){var i=function(){var e=!1;c.indexOf("!")>=0&&(e=!0,c=c.replace("!",""));var i=a[c];if(i||(i=a[c]={}),r&&(i.success_callbacks||(i.success_callbacks=[]),i.success_callbacks.push(r)),s&&(i.error_callbacks||(i.error_callbacks=[]),i.error_callbacks.push(s)),!e&&Prism.languages[c])u(c);else if(!e&&i.error)m(c);else if(e||!i.loading){i.loading=!0;var l=n(c);t(l,function(){i.loading=!1,u(c)},function(){i.loading=!1,i.error=!0,m(c)})}},l=e[c];l&&l.length?o(l,i):i()},u=function(e){a[e]&&a[e].success_callbacks&&a[e].success_callbacks.length&&a[e].success_callbacks.forEach(function(a){a(e)})},m=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&&l(e.language,e.element)})}}(); \ No newline at end of file +!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",go:"clike",groovy:"clike",haml:"ruby",handlebars:"markup-templating",haxe:"clike",java:"clike",javadoc:"java",jolie:"clike",jsdoc:"javascript",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",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 i=Prism.plugins.autoloader={languages_path:r,use_minified:!0},t=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)},n=function(e){return i.languages_path+"prism-"+e+(i.use_minified?".min":"")+".js"},l=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):[],o(r,function(){p(e,function(){Prism.highlightElement(c)})})},o=function(e,a,c){"string"==typeof e&&(e=[e]);var t=0,r=e.length,s=function(){r>t?p(e[t],function(){t++,s()},function(){c&&c(e[t])}):t===r&&a&&a(e)};s()},p=function(c,r,s){var i=function(){var e=!1;c.indexOf("!")>=0&&(e=!0,c=c.replace("!",""));var i=a[c];if(i||(i=a[c]={}),r&&(i.success_callbacks||(i.success_callbacks=[]),i.success_callbacks.push(r)),s&&(i.error_callbacks||(i.error_callbacks=[]),i.error_callbacks.push(s)),!e&&Prism.languages[c])u(c);else if(!e&&i.error)m(c);else if(e||!i.loading){i.loading=!0;var l=n(c);t(l,function(){i.loading=!1,u(c)},function(){i.loading=!1,i.error=!0,m(c)})}},l=e[c];l&&l.length?o(l,i):i()},u=function(e){a[e]&&a[e].success_callbacks&&a[e].success_callbacks.length&&a[e].success_callbacks.forEach(function(a){a(e)})},m=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&&l(e.language,e.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 60497b2f76..5841bfa740 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","javascript":"JavaScript","abap":"ABAP","actionscript":"ActionScript","apacheconf":"Apache Configuration","apl":"APL","applescript":"AppleScript","arff":"ARFF","asciidoc":"AsciiDoc","asm6502":"6502 Assembly","aspnet":"ASP.NET (C#)","autohotkey":"AutoHotkey","autoit":"AutoIt","basic":"BASIC","csharp":"C#","cpp":"C++","coffeescript":"CoffeeScript","csp":"Content-Security-Policy","css-extras":"CSS Extras","django":"Django/Jinja2","erb":"ERB","fsharp":"F#","gedcom":"GEDCOM","glsl":"GLSL","graphql":"GraphQL","http":"HTTP","hpkp":"HTTP Public-Key-Pins","hsts":"HTTP Strict-Transport-Security","ichigojam":"IchigoJam","inform7":"Inform 7","json":"JSON","latex":"LaTeX","livescript":"LiveScript","lolcode":"LOLCODE","markup-templating":"Markup templating","matlab":"MATLAB","mel":"MEL","n4js":"N4JS","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","tt2":"Template Toolkit 2","typescript":"TypeScript","vbnet":"VB.Net","vhdl":"VHDL","vim":"vim","visual-basic":"Visual Basic","wasm":"WebAssembly","wiki":"Wiki markup","xojo":"Xojo (REALbasic)","xquery":"XQuery","yaml":"YAML"}/*]*/; +var Languages = /*languages_placeholder[*/{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML","css":"CSS","clike":"C-like","javascript":"JavaScript","abap":"ABAP","actionscript":"ActionScript","apacheconf":"Apache Configuration","apl":"APL","applescript":"AppleScript","arff":"ARFF","asciidoc":"AsciiDoc","asm6502":"6502 Assembly","aspnet":"ASP.NET (C#)","autohotkey":"AutoHotkey","autoit":"AutoIt","basic":"BASIC","csharp":"C#","cpp":"C++","coffeescript":"CoffeeScript","csp":"Content-Security-Policy","css-extras":"CSS Extras","django":"Django/Jinja2","erb":"ERB","fsharp":"F#","gedcom":"GEDCOM","glsl":"GLSL","graphql":"GraphQL","http":"HTTP","hpkp":"HTTP Public-Key-Pins","hsts":"HTTP Strict-Transport-Security","ichigojam":"IchigoJam","inform7":"Inform 7","javadoc":"JavaDoc","jsdoc":"JSDoc","json":"JSON","latex":"LaTeX","livescript":"LiveScript","lolcode":"LOLCODE","markup-templating":"Markup templating","matlab":"MATLAB","mel":"MEL","n4js":"N4JS","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","tt2":"Template Toolkit 2","typescript":"TypeScript","vbnet":"VB.Net","vhdl":"VHDL","vim":"vim","visual-basic":"Visual Basic","wasm":"WebAssembly","wiki":"Wiki markup","xojo":"Xojo (REALbasic)","xquery":"XQuery","yaml":"YAML"}/*]*/; Prism.plugins.toolbar.registerButton('show-language', function(env) { var pre = env.element.parentNode; if (!pre || !/pre/i.test(pre.nodeName)) { diff --git a/plugins/show-language/prism-show-language.min.js b/plugins/show-language/prism-show-language.min.js index b6735335bd..26c45c952d 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 e={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",javascript:"JavaScript",abap:"ABAP",actionscript:"ActionScript",apacheconf:"Apache Configuration",apl:"APL",applescript:"AppleScript",arff:"ARFF",asciidoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",basic:"BASIC",csharp:"C#",cpp:"C++",coffeescript:"CoffeeScript",csp:"Content-Security-Policy","css-extras":"CSS Extras",django:"Django/Jinja2",erb:"ERB",fsharp:"F#",gedcom:"GEDCOM",glsl:"GLSL",graphql:"GraphQL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",inform7:"Inform 7",json:"JSON",latex:"LaTeX",livescript:"LiveScript",lolcode:"LOLCODE","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",n4js:"N4JS",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",tt2:"Template Toolkit 2",typescript:"TypeScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML"};Prism.plugins.toolbar.registerButton("show-language",function(a){var t=a.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var s=t.getAttribute("data-language")||e[a.language]||a.language&&a.language.substring(0,1).toUpperCase()+a.language.substring(1);if(s){var i=document.createElement("span");return i.textContent=s,i}}})}}(); \ 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 e={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",javascript:"JavaScript",abap:"ABAP",actionscript:"ActionScript",apacheconf:"Apache Configuration",apl:"APL",applescript:"AppleScript",arff:"ARFF",asciidoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",basic:"BASIC",csharp:"C#",cpp:"C++",coffeescript:"CoffeeScript",csp:"Content-Security-Policy","css-extras":"CSS Extras",django:"Django/Jinja2",erb:"ERB",fsharp:"F#",gedcom:"GEDCOM",glsl:"GLSL",graphql:"GraphQL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",inform7:"Inform 7",javadoc:"JavaDoc",jsdoc:"JSDoc",json:"JSON",latex:"LaTeX",livescript:"LiveScript",lolcode:"LOLCODE","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",n4js:"N4JS",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",tt2:"Template Toolkit 2",typescript:"TypeScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML"};Prism.plugins.toolbar.registerButton("show-language",function(a){var t=a.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var s=t.getAttribute("data-language")||e[a.language]||a.language&&a.language.substring(0,1).toUpperCase()+a.language.substring(1);if(s){var i=document.createElement("span");return i.textContent=s,i}}})}}(); \ No newline at end of file diff --git a/prism.js b/prism.js index 2baadce878..ba63da8ff2 100644 --- a/prism.js +++ b/prism.js @@ -729,6 +729,14 @@ Prism.languages.javascript = Prism.languages.extend('clike', { 'operator': /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ }); +Prism.languages.insertBefore('javascript', 'comment', { + 'doc-comment': { + pattern: /(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/, + greedy: true, + alias: 'comment' + } +}); + Prism.languages.insertBefore('javascript', 'keyword', { 'regex': { pattern: /((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/, diff --git a/tests/languages/java+javadoc/keyword_feature.test b/tests/languages/java+javadoc/keyword_feature.test new file mode 100644 index 0000000000..d8237a8af6 --- /dev/null +++ b/tests/languages/java+javadoc/keyword_feature.test @@ -0,0 +1,47 @@ +@author +@deprecated +@exception +@param +@return +@see +@serial +@serialData +@serialField +@since +@throws +@version +{@code} +{@docRoot} +{@inheritDoc} +{@link} +{@linkplain} +{@literal} +{@value} + +---------------------------------------------------- + +[ + ["keyword", "@author"], + ["keyword", "@deprecated"], + ["keyword", "@exception"], + ["keyword", "@param"], + ["keyword", "@return"], + ["keyword", "@see"], + ["keyword", "@serial"], + ["keyword", "@serialData"], + ["keyword", "@serialField"], + ["keyword", "@since"], + ["keyword", "@throws"], + ["keyword", "@version"], + ["punctuation", "{"], ["keyword", "@code"], ["punctuation", "}"], + ["punctuation", "{"], ["keyword", "@docRoot"], ["punctuation", "}"], + ["punctuation", "{"], ["keyword", "@inheritDoc"], ["punctuation", "}"], + ["punctuation", "{"], ["keyword", "@link"], ["punctuation", "}"], + ["punctuation", "{"], ["keyword", "@linkplain"], ["punctuation", "}"], + ["punctuation", "{"], ["keyword", "@literal"], ["punctuation", "}"], + ["punctuation", "{"], ["keyword", "@value"], ["punctuation", "}"] +] + +---------------------------------------------------- + +Checks for all keywords. diff --git a/tests/languages/javadoc+java/doc-comment_feature.test b/tests/languages/javadoc+java/doc-comment_feature.test new file mode 100644 index 0000000000..b915bf7f6e --- /dev/null +++ b/tests/languages/javadoc+java/doc-comment_feature.test @@ -0,0 +1,11 @@ +/** Description. */ + +---------------------------------------------------- + +[ + ["doc-comment", ["/** Description. */"]] +] + +---------------------------------------------------- + +Checks for doc comments. diff --git a/tests/languages/javascript+jsdoc/keyword_feature.test b/tests/languages/javascript+jsdoc/keyword_feature.test new file mode 100644 index 0000000000..9fad1346aa --- /dev/null +++ b/tests/languages/javascript+jsdoc/keyword_feature.test @@ -0,0 +1,181 @@ +@abstract +@virtual +@access +@alias +@async +@augments +@extends +@author +@borrows +@callback +@class +@constructor +@classdesc +@constant +@const +@constructs +@copyright +@default +@defaultValue +@deprecated +@description +@desc +@enum +@event +@example +@exports +@external +@host +@file +@fileoverview +@overview +@fires +@emits +@function +@func +@method +@generator +@global +@hideconstructor +@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 +@returns +@return +@see +@since +@static +@summary +@this +@throws +@exception +@todo +@tutorial +@type +@typedef +@variation +@version +@yield +@yields + +---------------------------------------------------- + +[ + ["keyword", "@abstract"], + ["keyword", "@virtual"], + ["keyword", "@access"], + ["keyword", "@alias"], + ["keyword", "@async"], + ["keyword", "@augments"], + ["keyword", "@extends"], + ["keyword", "@author"], + ["keyword", "@borrows"], + ["keyword", "@callback"], + ["keyword", "@class"], + ["keyword", "@constructor"], + ["keyword", "@classdesc"], + ["keyword", "@constant"], + ["keyword", "@const"], + ["keyword", "@constructs"], + ["keyword", "@copyright"], + ["keyword", "@default"], + ["keyword", "@defaultValue"], + ["keyword", "@deprecated"], + ["keyword", "@description"], + ["keyword", "@desc"], + ["keyword", "@enum"], + ["keyword", "@event"], + ["keyword", "@example"], + ["keyword", "@exports"], + ["keyword", "@external"], + ["keyword", "@host"], + ["keyword", "@file"], + ["keyword", "@fileoverview"], + ["keyword", "@overview"], + ["keyword", "@fires"], + ["keyword", "@emits"], + ["keyword", "@function"], + ["keyword", "@func"], + ["keyword", "@method"], + ["keyword", "@generator"], + ["keyword", "@global"], + ["keyword", "@hideconstructor"], + ["keyword", "@ignore"], + ["keyword", "@implements"], + ["keyword", "@inheritdoc"], + ["keyword", "@inner"], + ["keyword", "@instance"], + ["keyword", "@interface"], + ["keyword", "@kind"], + ["keyword", "@lends"], + ["keyword", "@license"], + ["keyword", "@listens"], + ["keyword", "@member"], + ["keyword", "@var"], + ["keyword", "@memberof"], + ["keyword", "@mixes"], + ["keyword", "@mixin"], + ["keyword", "@module"], + ["keyword", "@name"], + ["keyword", "@namespace"], + ["keyword", "@override"], + ["keyword", "@package"], + ["keyword", "@param"], + ["keyword", "@arg"], + ["keyword", "@argument"], + ["keyword", "@private"], + ["keyword", "@property"], + ["keyword", "@prop"], + ["keyword", "@protected"], + ["keyword", "@public"], + ["keyword", "@readonly"], + ["keyword", "@requires"], + ["keyword", "@returns"], + ["keyword", "@return"], + ["keyword", "@see"], + ["keyword", "@since"], + ["keyword", "@static"], + ["keyword", "@summary"], + ["keyword", "@this"], + ["keyword", "@throws"], + ["keyword", "@exception"], + ["keyword", "@todo"], + ["keyword", "@tutorial"], + ["keyword", "@type"], + ["keyword", "@typedef"], + ["keyword", "@variation"], + ["keyword", "@version"], + ["keyword", "@yield"], + ["keyword", "@yields"] +] + +---------------------------------------------------- + +Checks for keywords. diff --git a/tests/languages/jsdoc+javascript/doc-comment_feature.test b/tests/languages/jsdoc+javascript/doc-comment_feature.test new file mode 100644 index 0000000000..b915bf7f6e --- /dev/null +++ b/tests/languages/jsdoc+javascript/doc-comment_feature.test @@ -0,0 +1,11 @@ +/** Description. */ + +---------------------------------------------------- + +[ + ["doc-comment", ["/** Description. */"]] +] + +---------------------------------------------------- + +Checks for doc comments. From 7a978eca5178399e99c6698dcd853fdb0508fcc2 Mon Sep 17 00:00:00 2001 From: RunDevelopment Date: Sat, 14 Jul 2018 21:35:26 +0200 Subject: [PATCH 02/21] Improved JSDoc Added test. --- components/prism-jsdoc.js | 4 +- components/prism-jsdoc.min.js | 2 +- .../javascript+jsdoc/param_feature.test | 43 +++++++++++++++++++ 3 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 tests/languages/javascript+jsdoc/param_feature.test diff --git a/components/prism-jsdoc.js b/components/prism-jsdoc.js index 034a590fc0..6e51187611 100644 --- a/components/prism-jsdoc.js +++ b/components/prism-jsdoc.js @@ -1,6 +1,6 @@ Prism.languages.jsdoc = { 'parameter': { - pattern: /(@(?:param|arg|argument)\s+(?:\{[^{}]+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/, + pattern: /(@(?:param|arg|argument)\s+(?:\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/, lookbehind: true, inside: { 'code': { @@ -13,7 +13,7 @@ Prism.languages.jsdoc = { }, 'class-name': [ { - pattern: /(@(?:class|constant|const|constructs|enum|implements|member|var|namespace|param|arg|argument|property|prop|returns|return|throws|exception|type|typedef|yields?)\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/, + pattern: /(@[a-z]+\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/, lookbehind: true, inside: { 'punctuation': /[.,:?=<>|{}()[\]]/ diff --git a/components/prism-jsdoc.min.js b/components/prism-jsdoc.min.js index 520e81f78d..865ff17d59 100644 --- a/components/prism-jsdoc.min.js +++ b/components/prism-jsdoc.min.js @@ -1 +1 @@ -Prism.languages.jsdoc={parameter:{pattern:/(@(?:param|arg|argument)\s+(?:\{[^{}]+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/,lookbehind:!0,inside:{code:{pattern:/(\w=)[^[[\]]+(?=\]$)/,lookbehind:!0,inside:Prism.languages.javascript},punctuation:/[=[\]]/}},"class-name":[{pattern:/(@(?:class|constant|const|constructs|enum|implements|member|var|namespace|param|arg|argument|property|prop|returns|return|throws|exception|type|typedef|yields?)\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/,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:Prism.languages.javascript}}},keyword:/@(?:abstract|virtual|access|alias|async|augments|extends|author|borrows|callback|class|(?:hide)?constructor|classdesc|constant|const|constructs|copyright|default(?:Value)?|deprecated|description|desc|enum|event|example|exports|external|host|file|(?:file)?overview|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|returns?|see|since|static|summary|this|throws|exception|todo|tutorial|type|typedef|variation|version|yields?)\b/},Prism.languages.javascript["doc-comment"].inside=Prism.languages.jsdoc; \ No newline at end of file +Prism.languages.jsdoc={parameter:{pattern:/(@(?:param|arg|argument)\s+(?:\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/,lookbehind:!0,inside:{code:{pattern:/(\w=)[^[[\]]+(?=\]$)/,lookbehind:!0,inside:Prism.languages.javascript},punctuation:/[=[\]]/}},"class-name":[{pattern:/(@[a-z]+\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/,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:Prism.languages.javascript}}},keyword:/@(?:abstract|virtual|access|alias|async|augments|extends|author|borrows|callback|class|(?:hide)?constructor|classdesc|constant|const|constructs|copyright|default(?:Value)?|deprecated|description|desc|enum|event|example|exports|external|host|file|(?:file)?overview|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|returns?|see|since|static|summary|this|throws|exception|todo|tutorial|type|typedef|variation|version|yields?)\b/},Prism.languages.javascript["doc-comment"].inside=Prism.languages.jsdoc; \ No newline at end of file diff --git a/tests/languages/javascript+jsdoc/param_feature.test b/tests/languages/javascript+jsdoc/param_feature.test new file mode 100644 index 0000000000..c9bbfd6044 --- /dev/null +++ b/tests/languages/javascript+jsdoc/param_feature.test @@ -0,0 +1,43 @@ +@param {number} n - A number. +@param {{[x: string]: {start: number, end: number}}} map + +---------------------------------------------------- + +[ + ["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", ":"], + " number", + ["punctuation", "}"], + ["punctuation", "}"], + ["punctuation", "}"] + ]], + ["parameter", ["map"]] +] + +---------------------------------------------------- + +Checks for parameter types and names. From 525c52a877cea16a0b87034d708754b612c35034 Mon Sep 17 00:00:00 2001 From: RunDevelopment Date: Sat, 21 Jul 2018 01:43:31 +0200 Subject: [PATCH 03/21] Added JavaDoc-like --- components.js | 2 +- components.json | 12 +- components/prism-java.js | 8 - components/prism-java.min.js | 2 +- components/prism-javadoc.js | 17 +- components/prism-javadoc.min.js | 2 +- components/prism-javadoclike.js | 67 +++++++ components/prism-javadoclike.min.js | 1 + components/prism-javascript.js | 8 - components/prism-javascript.min.js | 2 +- components/prism-jsdoc.js | 80 ++++---- components/prism-jsdoc.min.js | 2 +- 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 +- prism.js | 8 - .../java+javadoc/keyword_feature.test | 62 ++++-- .../javascript+jsdoc/keyword_feature.test | 181 ------------------ .../javascript+jsdoc/param_feature.test | 12 +- 20 files changed, 188 insertions(+), 286 deletions(-) create mode 100644 components/prism-javadoclike.js create mode 100644 components/prism-javadoclike.min.js delete mode 100644 tests/languages/javascript+jsdoc/keyword_feature.test diff --git a/components.js b/components.js index f6fb946c56..2f6f16a6a1 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"},"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":{"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","owner":"zeitgeist87"},"basic":{"title":"BASIC","owner":"Golmote"},"batch":{"title":"Batch","alias":"shell","owner":"Golmote"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"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"},"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","owner":"JustinBeckwith"},"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"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"clike","owner":"Golmote"},"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"},"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":"java","owner":"RunDevelopment"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jsdoc":{"title":"JSDoc","require":"javascript","owner":"RunDevelopment"},"json":{"title":"JSON","owner":"CupOfTea696"},"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","owner":"JuanCaicedo","alias":["emacs","elisp","emacs-lisp"]},"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"},"n4js":{"title":"N4JS","require":"javascript","owner":"bsmith-n4"},"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"],"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"},"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"},"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","owner":"Golmote","alias":"vb"},"wasm":{"title":"WebAssembly","owner":"Golmote"},"wiki":{"title":"Wiki markup","require":"markup","owner":"Golmote"},"xeora":{"title":"Xeora","require":"markup","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":"Show Invisibles","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"},"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":{"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","owner":"zeitgeist87"},"basic":{"title":"BASIC","owner":"Golmote"},"batch":{"title":"Batch","alias":"shell","owner":"Golmote"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"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"},"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","owner":"JustinBeckwith"},"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"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"clike","owner":"Golmote"},"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"},"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"},"javadoclike":{"title":"JavaDoc-like","peerDependencies":["java","javascript"],"owner":"RunDevelopment"},"java":{"title":"Java","require":"clike","owner":"sherblot"},"javadoc":{"title":"JavaDoc","require":["java","javadoclike"],"owner":"RunDevelopment"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jsdoc":{"title":"JSDoc","require":["javascript","javadoclike"],"owner":"RunDevelopment"},"json":{"title":"JSON","owner":"CupOfTea696"},"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","owner":"JuanCaicedo","alias":["emacs","elisp","emacs-lisp"]},"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"},"n4js":{"title":"N4JS","require":"javascript","owner":"bsmith-n4"},"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"],"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"},"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"},"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","owner":"Golmote","alias":"vb"},"wasm":{"title":"WebAssembly","owner":"Golmote"},"wiki":{"title":"Wiki markup","require":"markup","owner":"Golmote"},"xeora":{"title":"Xeora","require":"markup","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":"Show Invisibles","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 941ffb82c6..b5ffa983ca 100644 --- a/components.json +++ b/components.json @@ -359,6 +359,14 @@ "title": "J", "owner": "Golmote" }, + "javadoclike": { + "title": "JavaDoc-like", + "peerDependencies": [ + "java", + "javascript" + ], + "owner": "RunDevelopment" + }, "java": { "title": "Java", "require": "clike", @@ -366,7 +374,7 @@ }, "javadoc": { "title": "JavaDoc", - "require": "java", + "require": ["java", "javadoclike"], "owner": "RunDevelopment" }, "jolie": { @@ -376,7 +384,7 @@ }, "jsdoc": { "title": "JSDoc", - "require": "javascript", + "require": ["javascript", "javadoclike"], "owner": "RunDevelopment" }, "json": { diff --git a/components/prism-java.js b/components/prism-java.js index fba5e6e069..937f4c243f 100644 --- a/components/prism-java.js +++ b/components/prism-java.js @@ -7,14 +7,6 @@ Prism.languages.java = Prism.languages.extend('clike', { } }); -Prism.languages.insertBefore('java', 'comment', { - 'doc-comment': { - pattern: /(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/, - greedy: true, - alias: 'comment' - } -}); - Prism.languages.insertBefore('java', 'function', { 'annotation': { alias: 'punctuation', diff --git a/components/prism-java.min.js b/components/prism-java.min.js index 7c5bb32e55..e583b73ea5 100644 --- a/components/prism-java.min.js +++ b/components/prism-java.min.js @@ -1 +1 @@ -Prism.languages.java=Prism.languages.extend("clike",{keyword:/\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp-]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?[df]?/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),Prism.languages.insertBefore("java","comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/,greedy:!0,alias:"comment"}}),Prism.languages.insertBefore("java","function",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0}}),Prism.languages.insertBefore("java","class-name",{generics:{pattern:/<\s*\w+(?:\.\w+)?(?:\s*,\s*\w+(?:\.\w+)?)*>/i,alias:"function",inside:{keyword:Prism.languages.java.keyword,punctuation:/[<>(),.:]/}}}); \ No newline at end of file +Prism.languages.java=Prism.languages.extend("clike",{keyword:/\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp-]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?[df]?/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),Prism.languages.insertBefore("java","function",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0}}),Prism.languages.insertBefore("java","class-name",{generics:{pattern:/<\s*\w+(?:\.\w+)?(?:\s*,\s*\w+(?:\.\w+)?)*>/i,alias:"function",inside:{keyword:Prism.languages.java.keyword,punctuation:/[<>(),.:]/}}}); \ No newline at end of file diff --git a/components/prism-javadoc.js b/components/prism-javadoc.js index c00e9ea9bd..25df373fed 100644 --- a/components/prism-javadoc.js +++ b/components/prism-javadoc.js @@ -1,18 +1,17 @@ (function (Prism) { + var java = Prism.languages.java; + var codeLines = { 'code': { pattern: /(^(\s*(?:\*\s*)*)).*[^*\s].+$/m, lookbehind: true, - inside: Prism.languages.java + inside: java } }; - Prism.languages.javadoc = { - 'parameter': { - pattern: /(@param\s+)\w+/, - lookbehind: true - }, + 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*)?)*/, @@ -49,9 +48,7 @@ } ], 'tag': /<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, - 'keyword': /@(?:author|deprecated|exception|param|return|see|serial|serialData|serialField|since|throws|version|code|docRoot|inheritDoc|link|linkplain|literal|value)\b/, - 'punctuation': /[{}]/ - }; + }); - Prism.languages.java['doc-comment'].inside = Prism.languages.javadoc; + java['doc-comment'][0].inside = Prism.languages.javadoc; }(Prism)); diff --git a/components/prism-javadoc.min.js b/components/prism-javadoc.min.js index f3939c36b4..9d9a3caa3a 100644 --- a/components/prism-javadoc.min.js +++ b/components/prism-javadoc.min.js @@ -1 +1 @@ -!function(e){var a={code:{pattern:/(^(\s*(?:\*\s*)*)).*[^*\s].+$/m,lookbehind:!0,inside:e.languages.java}};e.languages.javadoc={parameter:{pattern:/(@param\s+)\w+/,lookbehind:!0},"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+)<\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:a},{pattern:/(<(code|tt)>\s*)[\s\S]+?(?=\s*<\/\2>)/,lookbehind:!0,inside:a}],tag:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,keyword:/@(?:author|deprecated|exception|param|return|see|serial|serialData|serialField|since|throws|version|code|docRoot|inheritDoc|link|linkplain|literal|value)\b/,punctuation:/[{}]/},e.languages.java["doc-comment"].inside=e.languages.javadoc}(Prism); \ No newline at end of file +!function(e){var n=e.languages.java,a={code:{pattern:/(^(\s*(?:\*\s*)*)).*[^*\s].+$/m,lookbehind:!0,inside:n}};e.languages.javadoc=e.languages.extend("javadoclike",{}),e.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+)<\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:a},{pattern:/(<(code|tt)>\s*)[\s\S]+?(?=\s*<\/\2>)/,lookbehind:!0,inside:a}],tag:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i}),n["doc-comment"][0].inside=e.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..2ae91fe20e --- /dev/null +++ b/components/prism-javadoclike.js @@ -0,0 +1,67 @@ +(function (Prism) { + + var doc = Prism.languages.javadoclike = { + 'parameter': { + pattern: /(^\s*(?:\/{3}|\*|\/\*\*)\s*@(?:param|arg|arguments)\s+)\w+/m, + lookbehind: true + }, + 'keyword': { + 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: undefined}, index: number, array: {inside: 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]*?(?:\*\/|$)/, + greedy: true, + alias: 'comment' + }; + + Prism.languages.insertBefore(lang, 'comment', definition); + token = (grammar = Prism.languages[lang])[tokenName]; + } + + if (token instanceof RegExp) // convert to regex to object array + token = grammar[tokenName] = [{ pattern: token }]; + + else if (Prism.util.type(token) !== 'Array') // convert object to array + token = grammar[tokenName] = [token]; + + else // convert regexes to objects + for (var i = 0; i < token.length; i++) + if (token[i] instanceof RegExp) + token[i] = { pattern: token[i] }; + + // call function on each object + for (var i = 0; i < token.length; i++) { + callback(token[i], i, token); + } + } + + var basicSupport = ['java', 'javascript']; + for (var i = 0; i < basicSupport.length; i++) { + docCommentSupport(basicSupport[i], function (pattern, index, array) { + pattern.inside = doc; + }); + } + +}(Prism)); diff --git a/components/prism-javadoclike.min.js b/components/prism-javadoclike.min.js new file mode 100644 index 0000000000..d3e3422ff7 --- /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]*?(?:\*\/|$)/,greedy:!0,alias:"comment"},a.languages.insertBefore(e,"comment",o),i=(r=a.languages[e])[t]}if(i instanceof RegExp)i=r[t]=[{pattern:i}];else if("Array"!==a.util.type(i))i=r[t]=[i];else for(var s=0;s>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ }); -Prism.languages.insertBefore('javascript', 'comment', { - 'doc-comment': { - pattern: /(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/, - greedy: true, - alias: 'comment' - } -}); - Prism.languages.insertBefore('javascript', 'keyword', { 'regex': { pattern: /((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/, diff --git a/components/prism-javascript.min.js b/components/prism-javascript.min.js index 129a01d82b..50a4d54f80 100644 --- a/components/prism-javascript.min.js +++ b/components/prism-javascript.min.js @@ -1 +1 @@ -Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,"function":/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.insertBefore("javascript","comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/,greedy:!0,alias:"comment"}}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}}}),Prism.languages.javascript["template-string"].inside.interpolation.inside.rest=Prism.languages.javascript,Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript",greedy:!0}}),Prism.languages.js=Prism.languages.javascript; \ No newline at end of file +Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,"function":/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}}}),Prism.languages.javascript["template-string"].inside.interpolation.inside.rest=Prism.languages.javascript,Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript",greedy:!0}}),Prism.languages.js=Prism.languages.javascript; \ No newline at end of file diff --git a/components/prism-jsdoc.js b/components/prism-jsdoc.js index 6e51187611..bf8cef09d3 100644 --- a/components/prism-jsdoc.js +++ b/components/prism-jsdoc.js @@ -1,44 +1,52 @@ -Prism.languages.jsdoc = { - 'parameter': { - pattern: /(@(?:param|arg|argument)\s+(?:\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/, - lookbehind: true, - inside: { - 'code': { - pattern: /(\w=)[^[[\]]+(?=\]$)/, - lookbehind: true, - inside: Prism.languages.javascript - }, - 'punctuation': /[=[\]]/ - } - }, - 'class-name': [ - { - pattern: /(@[a-z]+\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/, - lookbehind: true, - inside: { - 'punctuation': /[.,:?=<>|{}()[\]]/ - } - }, - { - pattern: /(@(?:augments|extends|class|interface|memberof!?|this)\s+)[A-Z]\w*(?:\.[A-Z]\w*)*/, +(function (Prism) { + + var js = Prism.languages.javascript; + + Prism.languages.jsdoc = Prism.languages.extend('javadoclike', { + 'parameter': { + pattern: /(@(?:param|arg|argument)\s+(?:\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/, lookbehind: true, inside: { - 'punctuation': /\./ + 'code': { + pattern: /(\w=)[^[[\]]+(?=\]$)/, + lookbehind: true, + inside: js + }, + 'punctuation': /[=[\]]/ } } - ], - 'example': { - pattern: /(@example\s+)[^@]+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/, - lookbehind: true, - inside: { - 'code': { - pattern: /^(\s*(?:\*\s*)?).+$/m, + }); + + Prism.languages.insertBefore('jsdoc', 'keyword', { + 'class-name': [ + { + pattern: /(@[a-z]+\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/, + lookbehind: true, + inside: { + 'punctuation': /[.,:?=<>|{}()[\]]/ + } + }, + { + pattern: /(@(?:augments|extends|class|interface|memberof!?|this)\s+)[A-Z]\w*(?:\.[A-Z]\w*)*/, lookbehind: true, - inside: Prism.languages.javascript + inside: { + 'punctuation': /\./ + } + } + ], + 'example': { + pattern: /(@example\s+)[^@]+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/, + lookbehind: true, + inside: { + 'code': { + pattern: /^(\s*(?:\*\s*)?).+$/m, + lookbehind: true, + inside: js + } } } - }, - 'keyword': /@(?:abstract|virtual|access|alias|async|augments|extends|author|borrows|callback|class|(?:hide)?constructor|classdesc|constant|const|constructs|copyright|default(?:Value)?|deprecated|description|desc|enum|event|example|exports|external|host|file|(?:file)?overview|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|returns?|see|since|static|summary|this|throws|exception|todo|tutorial|type|typedef|variation|version|yields?)\b/ -}; + }); + + js['doc-comment'][0].inside = Prism.languages.jsdoc; -Prism.languages.javascript['doc-comment'].inside = Prism.languages.jsdoc; +}(Prism)); diff --git a/components/prism-jsdoc.min.js b/components/prism-jsdoc.min.js index 865ff17d59..50ae189e28 100644 --- a/components/prism-jsdoc.min.js +++ b/components/prism-jsdoc.min.js @@ -1 +1 @@ -Prism.languages.jsdoc={parameter:{pattern:/(@(?:param|arg|argument)\s+(?:\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/,lookbehind:!0,inside:{code:{pattern:/(\w=)[^[[\]]+(?=\]$)/,lookbehind:!0,inside:Prism.languages.javascript},punctuation:/[=[\]]/}},"class-name":[{pattern:/(@[a-z]+\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/,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:Prism.languages.javascript}}},keyword:/@(?:abstract|virtual|access|alias|async|augments|extends|author|borrows|callback|class|(?:hide)?constructor|classdesc|constant|const|constructs|copyright|default(?:Value)?|deprecated|description|desc|enum|event|example|exports|external|host|file|(?:file)?overview|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|returns?|see|since|static|summary|this|throws|exception|todo|tutorial|type|typedef|variation|version|yields?)\b/},Prism.languages.javascript["doc-comment"].inside=Prism.languages.jsdoc; \ No newline at end of file +!function(e){var n=e.languages.javascript;e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:/(@(?:param|arg|argument)\s+(?:\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/,lookbehind:!0,inside:{code:{pattern:/(\w=)[^[[\]]+(?=\]$)/,lookbehind:!0,inside:n},punctuation:/[=[\]]/}}}),e.languages.insertBefore("jsdoc","keyword",{"class-name":[{pattern:/(@[a-z]+\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/,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:n}}}}),n["doc-comment"][0].inside=e.languages.jsdoc}(Prism); \ No newline at end of file diff --git a/plugins/autoloader/prism-autoloader.js b/plugins/autoloader/prism-autoloader.js index 088b11ec5b..1916db5471 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","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup-templating","haxe":"clike","java":"clike","javadoc":"java","jolie":"clike","jsdoc":"javascript","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","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","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup-templating","haxe":"clike","java":"clike","javadoc":["java","javadoclike"],"jolie":"clike","jsdoc":["javascript","javadoclike"],"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","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 2d89718bc6..ea4fd83080 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",go:"clike",groovy:"clike",haml:"ruby",handlebars:"markup-templating",haxe:"clike",java:"clike",javadoc:"java",jolie:"clike",jsdoc:"javascript",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",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 i=Prism.plugins.autoloader={languages_path:r,use_minified:!0},t=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)},n=function(e){return i.languages_path+"prism-"+e+(i.use_minified?".min":"")+".js"},l=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):[],o(r,function(){p(e,function(){Prism.highlightElement(c)})})},o=function(e,a,c){"string"==typeof e&&(e=[e]);var t=0,r=e.length,s=function(){r>t?p(e[t],function(){t++,s()},function(){c&&c(e[t])}):t===r&&a&&a(e)};s()},p=function(c,r,s){var i=function(){var e=!1;c.indexOf("!")>=0&&(e=!0,c=c.replace("!",""));var i=a[c];if(i||(i=a[c]={}),r&&(i.success_callbacks||(i.success_callbacks=[]),i.success_callbacks.push(r)),s&&(i.error_callbacks||(i.error_callbacks=[]),i.error_callbacks.push(s)),!e&&Prism.languages[c])u(c);else if(!e&&i.error)m(c);else if(e||!i.loading){i.loading=!0;var l=n(c);t(l,function(){i.loading=!1,u(c)},function(){i.loading=!1,i.error=!0,m(c)})}},l=e[c];l&&l.length?o(l,i):i()},u=function(e){a[e]&&a[e].success_callbacks&&a[e].success_callbacks.length&&a[e].success_callbacks.forEach(function(a){a(e)})},m=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&&l(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",go:"clike",groovy:"clike",haml:"ruby",handlebars:"markup-templating",haxe:"clike",java:"clike",javadoc:["java","javadoclike"],jolie:"clike",jsdoc:["javascript","javadoclike"],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",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},t=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)},n=function(a){return i.languages_path+"prism-"+a+(i.use_minified?".min":"")+".js"},l=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):[],o(r,function(){p(a,function(){Prism.highlightElement(c)})})},o=function(a,e,c){"string"==typeof a&&(a=[a]);var t=0,r=a.length,s=function(){r>t?p(a[t],function(){t++,s()},function(){c&&c(a[t])}):t===r&&e&&e(a)};s()},p=function(c,r,s){var i=function(){var a=!1;c.indexOf("!")>=0&&(a=!0,c=c.replace("!",""));var i=e[c];if(i||(i=e[c]={}),r&&(i.success_callbacks||(i.success_callbacks=[]),i.success_callbacks.push(r)),s&&(i.error_callbacks||(i.error_callbacks=[]),i.error_callbacks.push(s)),!a&&Prism.languages[c])u(c);else if(!a&&i.error)m(c);else if(a||!i.loading){i.loading=!0;var l=n(c);t(l,function(){i.loading=!1,u(c)},function(){i.loading=!1,i.error=!0,m(c)})}},l=a[c];l&&l.length?o(l,i):i()},u=function(a){e[a]&&e[a].success_callbacks&&e[a].success_callbacks.length&&e[a].success_callbacks.forEach(function(e){e(a)})},m=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&&l(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 5841bfa740..df6eaf0877 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","javascript":"JavaScript","abap":"ABAP","actionscript":"ActionScript","apacheconf":"Apache Configuration","apl":"APL","applescript":"AppleScript","arff":"ARFF","asciidoc":"AsciiDoc","asm6502":"6502 Assembly","aspnet":"ASP.NET (C#)","autohotkey":"AutoHotkey","autoit":"AutoIt","basic":"BASIC","csharp":"C#","cpp":"C++","coffeescript":"CoffeeScript","csp":"Content-Security-Policy","css-extras":"CSS Extras","django":"Django/Jinja2","erb":"ERB","fsharp":"F#","gedcom":"GEDCOM","glsl":"GLSL","graphql":"GraphQL","http":"HTTP","hpkp":"HTTP Public-Key-Pins","hsts":"HTTP Strict-Transport-Security","ichigojam":"IchigoJam","inform7":"Inform 7","javadoc":"JavaDoc","jsdoc":"JSDoc","json":"JSON","latex":"LaTeX","livescript":"LiveScript","lolcode":"LOLCODE","markup-templating":"Markup templating","matlab":"MATLAB","mel":"MEL","n4js":"N4JS","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","tt2":"Template Toolkit 2","typescript":"TypeScript","vbnet":"VB.Net","vhdl":"VHDL","vim":"vim","visual-basic":"Visual Basic","wasm":"WebAssembly","wiki":"Wiki markup","xojo":"Xojo (REALbasic)","xquery":"XQuery","yaml":"YAML"}/*]*/; +var Languages = /*languages_placeholder[*/{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML","css":"CSS","clike":"C-like","javascript":"JavaScript","abap":"ABAP","actionscript":"ActionScript","apacheconf":"Apache Configuration","apl":"APL","applescript":"AppleScript","arff":"ARFF","asciidoc":"AsciiDoc","asm6502":"6502 Assembly","aspnet":"ASP.NET (C#)","autohotkey":"AutoHotkey","autoit":"AutoIt","basic":"BASIC","csharp":"C#","cpp":"C++","coffeescript":"CoffeeScript","csp":"Content-Security-Policy","css-extras":"CSS Extras","django":"Django/Jinja2","erb":"ERB","fsharp":"F#","gedcom":"GEDCOM","glsl":"GLSL","graphql":"GraphQL","http":"HTTP","hpkp":"HTTP Public-Key-Pins","hsts":"HTTP Strict-Transport-Security","ichigojam":"IchigoJam","inform7":"Inform 7","javadoclike":"JavaDoc-like","javadoc":"JavaDoc","jsdoc":"JSDoc","json":"JSON","latex":"LaTeX","livescript":"LiveScript","lolcode":"LOLCODE","markup-templating":"Markup templating","matlab":"MATLAB","mel":"MEL","n4js":"N4JS","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","tt2":"Template Toolkit 2","typescript":"TypeScript","vbnet":"VB.Net","vhdl":"VHDL","vim":"vim","visual-basic":"Visual Basic","wasm":"WebAssembly","wiki":"Wiki markup","xojo":"Xojo (REALbasic)","xquery":"XQuery","yaml":"YAML"}/*]*/; Prism.plugins.toolbar.registerButton('show-language', function(env) { var pre = env.element.parentNode; if (!pre || !/pre/i.test(pre.nodeName)) { diff --git a/plugins/show-language/prism-show-language.min.js b/plugins/show-language/prism-show-language.min.js index 26c45c952d..b6165e78b2 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 e={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",javascript:"JavaScript",abap:"ABAP",actionscript:"ActionScript",apacheconf:"Apache Configuration",apl:"APL",applescript:"AppleScript",arff:"ARFF",asciidoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",basic:"BASIC",csharp:"C#",cpp:"C++",coffeescript:"CoffeeScript",csp:"Content-Security-Policy","css-extras":"CSS Extras",django:"Django/Jinja2",erb:"ERB",fsharp:"F#",gedcom:"GEDCOM",glsl:"GLSL",graphql:"GraphQL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",inform7:"Inform 7",javadoc:"JavaDoc",jsdoc:"JSDoc",json:"JSON",latex:"LaTeX",livescript:"LiveScript",lolcode:"LOLCODE","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",n4js:"N4JS",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",tt2:"Template Toolkit 2",typescript:"TypeScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML"};Prism.plugins.toolbar.registerButton("show-language",function(a){var t=a.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var s=t.getAttribute("data-language")||e[a.language]||a.language&&a.language.substring(0,1).toUpperCase()+a.language.substring(1);if(s){var i=document.createElement("span");return i.textContent=s,i}}})}}(); \ 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 e={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",javascript:"JavaScript",abap:"ABAP",actionscript:"ActionScript",apacheconf:"Apache Configuration",apl:"APL",applescript:"AppleScript",arff:"ARFF",asciidoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",basic:"BASIC",csharp:"C#",cpp:"C++",coffeescript:"CoffeeScript",csp:"Content-Security-Policy","css-extras":"CSS Extras",django:"Django/Jinja2",erb:"ERB",fsharp:"F#",gedcom:"GEDCOM",glsl:"GLSL",graphql:"GraphQL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",inform7:"Inform 7",javadoclike:"JavaDoc-like",javadoc:"JavaDoc",jsdoc:"JSDoc",json:"JSON",latex:"LaTeX",livescript:"LiveScript",lolcode:"LOLCODE","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",n4js:"N4JS",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",tt2:"Template Toolkit 2",typescript:"TypeScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML"};Prism.plugins.toolbar.registerButton("show-language",function(a){var t=a.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var s=t.getAttribute("data-language")||e[a.language]||a.language&&a.language.substring(0,1).toUpperCase()+a.language.substring(1);if(s){var i=document.createElement("span");return i.textContent=s,i}}})}}(); \ No newline at end of file diff --git a/prism.js b/prism.js index ba63da8ff2..2baadce878 100644 --- a/prism.js +++ b/prism.js @@ -729,14 +729,6 @@ Prism.languages.javascript = Prism.languages.extend('clike', { 'operator': /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ }); -Prism.languages.insertBefore('javascript', 'comment', { - 'doc-comment': { - pattern: /(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/, - greedy: true, - alias: 'comment' - } -}); - Prism.languages.insertBefore('javascript', 'keyword', { 'regex': { pattern: /((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/, diff --git a/tests/languages/java+javadoc/keyword_feature.test b/tests/languages/java+javadoc/keyword_feature.test index d8237a8af6..a337f6fc46 100644 --- a/tests/languages/java+javadoc/keyword_feature.test +++ b/tests/languages/java+javadoc/keyword_feature.test @@ -1,45 +1,67 @@ -@author -@deprecated -@exception -@param -@return -@see -@serial -@serialData -@serialField -@since -@throws -@version -{@code} -{@docRoot} -{@inheritDoc} -{@link} -{@linkplain} -{@literal} -{@value} +/* + * @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", "}"], - ["punctuation", "{"], ["keyword", "@value"], ["punctuation", "}"] + "\n * ", + ["punctuation", "{"], ["keyword", "@value"], ["punctuation", "}"], + "\n */" ] ---------------------------------------------------- diff --git a/tests/languages/javascript+jsdoc/keyword_feature.test b/tests/languages/javascript+jsdoc/keyword_feature.test deleted file mode 100644 index 9fad1346aa..0000000000 --- a/tests/languages/javascript+jsdoc/keyword_feature.test +++ /dev/null @@ -1,181 +0,0 @@ -@abstract -@virtual -@access -@alias -@async -@augments -@extends -@author -@borrows -@callback -@class -@constructor -@classdesc -@constant -@const -@constructs -@copyright -@default -@defaultValue -@deprecated -@description -@desc -@enum -@event -@example -@exports -@external -@host -@file -@fileoverview -@overview -@fires -@emits -@function -@func -@method -@generator -@global -@hideconstructor -@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 -@returns -@return -@see -@since -@static -@summary -@this -@throws -@exception -@todo -@tutorial -@type -@typedef -@variation -@version -@yield -@yields - ----------------------------------------------------- - -[ - ["keyword", "@abstract"], - ["keyword", "@virtual"], - ["keyword", "@access"], - ["keyword", "@alias"], - ["keyword", "@async"], - ["keyword", "@augments"], - ["keyword", "@extends"], - ["keyword", "@author"], - ["keyword", "@borrows"], - ["keyword", "@callback"], - ["keyword", "@class"], - ["keyword", "@constructor"], - ["keyword", "@classdesc"], - ["keyword", "@constant"], - ["keyword", "@const"], - ["keyword", "@constructs"], - ["keyword", "@copyright"], - ["keyword", "@default"], - ["keyword", "@defaultValue"], - ["keyword", "@deprecated"], - ["keyword", "@description"], - ["keyword", "@desc"], - ["keyword", "@enum"], - ["keyword", "@event"], - ["keyword", "@example"], - ["keyword", "@exports"], - ["keyword", "@external"], - ["keyword", "@host"], - ["keyword", "@file"], - ["keyword", "@fileoverview"], - ["keyword", "@overview"], - ["keyword", "@fires"], - ["keyword", "@emits"], - ["keyword", "@function"], - ["keyword", "@func"], - ["keyword", "@method"], - ["keyword", "@generator"], - ["keyword", "@global"], - ["keyword", "@hideconstructor"], - ["keyword", "@ignore"], - ["keyword", "@implements"], - ["keyword", "@inheritdoc"], - ["keyword", "@inner"], - ["keyword", "@instance"], - ["keyword", "@interface"], - ["keyword", "@kind"], - ["keyword", "@lends"], - ["keyword", "@license"], - ["keyword", "@listens"], - ["keyword", "@member"], - ["keyword", "@var"], - ["keyword", "@memberof"], - ["keyword", "@mixes"], - ["keyword", "@mixin"], - ["keyword", "@module"], - ["keyword", "@name"], - ["keyword", "@namespace"], - ["keyword", "@override"], - ["keyword", "@package"], - ["keyword", "@param"], - ["keyword", "@arg"], - ["keyword", "@argument"], - ["keyword", "@private"], - ["keyword", "@property"], - ["keyword", "@prop"], - ["keyword", "@protected"], - ["keyword", "@public"], - ["keyword", "@readonly"], - ["keyword", "@requires"], - ["keyword", "@returns"], - ["keyword", "@return"], - ["keyword", "@see"], - ["keyword", "@since"], - ["keyword", "@static"], - ["keyword", "@summary"], - ["keyword", "@this"], - ["keyword", "@throws"], - ["keyword", "@exception"], - ["keyword", "@todo"], - ["keyword", "@tutorial"], - ["keyword", "@type"], - ["keyword", "@typedef"], - ["keyword", "@variation"], - ["keyword", "@version"], - ["keyword", "@yield"], - ["keyword", "@yields"] -] - ----------------------------------------------------- - -Checks for keywords. diff --git a/tests/languages/javascript+jsdoc/param_feature.test b/tests/languages/javascript+jsdoc/param_feature.test index c9bbfd6044..f40d499809 100644 --- a/tests/languages/javascript+jsdoc/param_feature.test +++ b/tests/languages/javascript+jsdoc/param_feature.test @@ -1,9 +1,12 @@ -@param {number} n - A number. -@param {{[x: string]: {start: number, end: number}}} map +/** + * @param {number} n - A number. + * @param {{[x: string]: {start: number, end: number}}} map + */ ---------------------------------------------------- [ + "/**\n * ", ["keyword", "@param"], ["class-name", [ ["punctuation", "{"], @@ -11,7 +14,7 @@ ["punctuation", "}"] ]], ["parameter", ["n"]], - " - A number.\n", + " - A number.\n * ", ["keyword", "@param"], ["class-name", [ @@ -35,7 +38,8 @@ ["punctuation", "}"], ["punctuation", "}"] ]], - ["parameter", ["map"]] + ["parameter", ["map"]], + "\n */" ] ---------------------------------------------------- From 1ec183d53aca1eae299d8b05239dd4c584316587 Mon Sep 17 00:00:00 2001 From: RunDevelopment Date: Sat, 21 Jul 2018 20:13:10 +0200 Subject: [PATCH 04/21] Use rest instead of inside to add doc --- components/prism-javadoc.js | 2 +- components/prism-javadoclike.js | 7 ++++--- components/prism-jsdoc.js | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/components/prism-javadoc.js b/components/prism-javadoc.js index 25df373fed..dcb9aec0b1 100644 --- a/components/prism-javadoc.js +++ b/components/prism-javadoc.js @@ -50,5 +50,5 @@ 'tag': /<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, }); - java['doc-comment'][0].inside = Prism.languages.javadoc; + java['doc-comment'][0].inside.rest = Prism.languages.javadoc; }(Prism)); diff --git a/components/prism-javadoclike.js b/components/prism-javadoclike.js index 2ae91fe20e..57896c0132 100644 --- a/components/prism-javadoclike.js +++ b/components/prism-javadoclike.js @@ -17,7 +17,7 @@ * 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: undefined}, index: number, array: {inside: undefined}[]) => void} callback the function called with each doc comment pattern as argument. + * @param {(pattern: {inside: {rest: undefined}}, index: number, array: {inside: {rest: undefined}}[]) => void} callback the function called with each doc comment pattern as argument. */ function docCommentSupport(lang, callback) { var tokenName = 'doc-comment'; @@ -33,7 +33,8 @@ definition[tokenName] = { pattern: /(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/, greedy: true, - alias: 'comment' + alias: 'comment', + inside: {} }; Prism.languages.insertBefore(lang, 'comment', definition); @@ -60,7 +61,7 @@ var basicSupport = ['java', 'javascript']; for (var i = 0; i < basicSupport.length; i++) { docCommentSupport(basicSupport[i], function (pattern, index, array) { - pattern.inside = doc; + pattern.inside.rest = doc; }); } diff --git a/components/prism-jsdoc.js b/components/prism-jsdoc.js index bf8cef09d3..7c5dae0165 100644 --- a/components/prism-jsdoc.js +++ b/components/prism-jsdoc.js @@ -47,6 +47,6 @@ } }); - js['doc-comment'][0].inside = Prism.languages.jsdoc; + js['doc-comment'][0].inside.rest = Prism.languages.jsdoc; }(Prism)); From 82e5b9ea9561a163b83614197738cf110f0274fc Mon Sep 17 00:00:00 2001 From: RunDevelopment Date: Sun, 29 Jul 2018 17:39:14 +0200 Subject: [PATCH 05/21] Added PHPDoc --- components.js | 2 +- components.json | 22 +++-- components/prism-javadoc.min.js | 2 +- components/prism-javadoclike.js | 6 +- components/prism-javadoclike.min.js | 2 +- components/prism-jsdoc.min.js | 2 +- 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 +- .../languages/php+phpdoc/keyword_feature.test | 99 +++++++++++++++++++ .../phpdoc+php/doc-comment_feature.test | 11 +++ 14 files changed, 164 insertions(+), 18 deletions(-) create mode 100644 components/prism-phpdoc.js create mode 100644 components/prism-phpdoc.min.js create mode 100644 tests/languages/php+phpdoc/keyword_feature.test create mode 100644 tests/languages/phpdoc+php/doc-comment_feature.test diff --git a/components.js b/components.js index 2f6f16a6a1..2bbbbe3ccb 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"},"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":{"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","owner":"zeitgeist87"},"basic":{"title":"BASIC","owner":"Golmote"},"batch":{"title":"Batch","alias":"shell","owner":"Golmote"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"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"},"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","owner":"JustinBeckwith"},"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"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"clike","owner":"Golmote"},"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"},"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"},"javadoclike":{"title":"JavaDoc-like","peerDependencies":["java","javascript"],"owner":"RunDevelopment"},"java":{"title":"Java","require":"clike","owner":"sherblot"},"javadoc":{"title":"JavaDoc","require":["java","javadoclike"],"owner":"RunDevelopment"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jsdoc":{"title":"JSDoc","require":["javascript","javadoclike"],"owner":"RunDevelopment"},"json":{"title":"JSON","owner":"CupOfTea696"},"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","owner":"JuanCaicedo","alias":["emacs","elisp","emacs-lisp"]},"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"},"n4js":{"title":"N4JS","require":"javascript","owner":"bsmith-n4"},"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"],"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"},"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"},"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","owner":"Golmote","alias":"vb"},"wasm":{"title":"WebAssembly","owner":"Golmote"},"wiki":{"title":"Wiki markup","require":"markup","owner":"Golmote"},"xeora":{"title":"Xeora","require":"markup","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":"Show Invisibles","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"},"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":{"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","owner":"zeitgeist87"},"basic":{"title":"BASIC","owner":"Golmote"},"batch":{"title":"Batch","alias":"shell","owner":"Golmote"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"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"},"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","owner":"JustinBeckwith"},"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"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"clike","owner":"Golmote"},"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"},"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":["java","javadoclike"],"owner":"RunDevelopment"},"javadoclike":{"title":"JavaDoc-like","peerDependencies":["java","javascript","php"],"owner":"RunDevelopment"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jsdoc":{"title":"JSDoc","require":["javascript","javadoclike"],"owner":"RunDevelopment"},"json":{"title":"JSON","owner":"CupOfTea696"},"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","owner":"JuanCaicedo","alias":["emacs","elisp","emacs-lisp"]},"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"},"n4js":{"title":"N4JS","require":"javascript","owner":"bsmith-n4"},"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"],"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"},"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"},"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","owner":"Golmote","alias":"vb"},"wasm":{"title":"WebAssembly","owner":"Golmote"},"wiki":{"title":"Wiki markup","require":"markup","owner":"Golmote"},"xeora":{"title":"Xeora","require":"markup","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":"Show Invisibles","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 b5ffa983ca..5f28df6af1 100644 --- a/components.json +++ b/components.json @@ -359,14 +359,6 @@ "title": "J", "owner": "Golmote" }, - "javadoclike": { - "title": "JavaDoc-like", - "peerDependencies": [ - "java", - "javascript" - ], - "owner": "RunDevelopment" - }, "java": { "title": "Java", "require": "clike", @@ -377,6 +369,15 @@ "require": ["java", "javadoclike"], "owner": "RunDevelopment" }, + "javadoclike": { + "title": "JavaDoc-like", + "peerDependencies": [ + "java", + "javascript", + "php" + ], + "owner": "RunDevelopment" + }, "jolie": { "title": "Jolie", "require": "clike", @@ -539,6 +540,11 @@ "require": ["clike", "markup-templating"], "owner": "milesj" }, + "phpdoc": { + "title": "PHPDoc", + "require": ["php", "javadoclike"], + "owner": "RunDevelopment" + }, "php-extras": { "title": "PHP Extras", "require": "php", diff --git a/components/prism-javadoc.min.js b/components/prism-javadoc.min.js index 9d9a3caa3a..35638e87fb 100644 --- a/components/prism-javadoc.min.js +++ b/components/prism-javadoc.min.js @@ -1 +1 @@ -!function(e){var n=e.languages.java,a={code:{pattern:/(^(\s*(?:\*\s*)*)).*[^*\s].+$/m,lookbehind:!0,inside:n}};e.languages.javadoc=e.languages.extend("javadoclike",{}),e.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+)<\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:a},{pattern:/(<(code|tt)>\s*)[\s\S]+?(?=\s*<\/\2>)/,lookbehind:!0,inside:a}],tag:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i}),n["doc-comment"][0].inside=e.languages.javadoc}(Prism); \ No newline at end of file +!function(e){var n=e.languages.java,a={code:{pattern:/(^(\s*(?:\*\s*)*)).*[^*\s].+$/m,lookbehind:!0,inside:n}};e.languages.javadoc=e.languages.extend("javadoclike",{}),e.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+)<\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:a},{pattern:/(<(code|tt)>\s*)[\s\S]+?(?=\s*<\/\2>)/,lookbehind:!0,inside:a}],tag:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i}),n["doc-comment"][0].inside.rest=e.languages.javadoc}(Prism); \ No newline at end of file diff --git a/components/prism-javadoclike.js b/components/prism-javadoclike.js index 57896c0132..d03c948079 100644 --- a/components/prism-javadoclike.js +++ b/components/prism-javadoclike.js @@ -6,7 +6,9 @@ lookbehind: true }, 'keyword': { - pattern: /(^\s*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z]+\b/m, + // 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': /[{}]/ @@ -58,7 +60,7 @@ } } - var basicSupport = ['java', 'javascript']; + var basicSupport = ['java', 'javascript', 'php']; for (var i = 0; i < basicSupport.length; i++) { docCommentSupport(basicSupport[i], function (pattern, index, array) { pattern.inside.rest = doc; diff --git a/components/prism-javadoclike.min.js b/components/prism-javadoclike.min.js index d3e3422ff7..696289d8a1 100644 --- a/components/prism-javadoclike.min.js +++ b/components/prism-javadoclike.min.js @@ -1 +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]*?(?:\*\/|$)/,greedy:!0,alias:"comment"},a.languages.insertBefore(e,"comment",o),i=(r=a.languages[e])[t]}if(i instanceof RegExp)i=r[t]=[{pattern:i}];else if("Array"!==a.util.type(i))i=r[t]=[i];else for(var s=0;s|{}()[\]]/}},{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:n}}}}),n["doc-comment"][0].inside=e.languages.jsdoc}(Prism); \ No newline at end of file +!function(e){var n=e.languages.javascript;e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:/(@(?:param|arg|argument)\s+(?:\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/,lookbehind:!0,inside:{code:{pattern:/(\w=)[^[[\]]+(?=\]$)/,lookbehind:!0,inside:n},punctuation:/[=[\]]/}}}),e.languages.insertBefore("jsdoc","keyword",{"class-name":[{pattern:/(@[a-z]+\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/,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:n}}}}),n["doc-comment"][0].inside.rest=e.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..66cc4f5f29 --- /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+/.source + '(?:' + typeExpression + '\\s+)?)' + /\$\w+/.source), + lookbehind: true + } + }); + + Prism.languages.insertBefore('phpdoc', 'keyword', { + 'class-name': [ + { + pattern: RegExp(/(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\s+)/.source + 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.php['doc-comment'][0].inside.rest = Prism.languages.phpdoc; + +}(Prism)); diff --git a/components/prism-phpdoc.min.js b/components/prism-phpdoc.min.js new file mode 100644 index 0000000000..0ee5dd324c --- /dev/null +++ b/components/prism-phpdoc.min.js @@ -0,0 +1 @@ +!function(e){var a=/(?:(?:\\?[A-Za-z]\w*)+(?:\[\])?\|?)+/.source;e.languages.phpdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp("("+/@(?:global|param|property(?:-read|-write)?|var)\s+/.source+"(?:"+a+"\\s+)?)"+/\$\w+/.source),lookbehind:!0}}),e.languages.insertBefore("phpdoc","keyword",{"class-name":[{pattern:RegExp(/(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\s+)/.source+a),lookbehind:!0,inside:{keyword:/\b(?:callback|resource|boolean|integer|double|object|string|array|false|float|mixed|bool|null|self|true|void|int)\b/,punctuation:/[|\\[\]()]/}}]}),e.languages.php["doc-comment"][0].inside.rest=e.languages.phpdoc}(Prism); \ No newline at end of file diff --git a/plugins/autoloader/prism-autoloader.js b/plugins/autoloader/prism-autoloader.js index 1916db5471..589253a269 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","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup-templating","haxe":"clike","java":"clike","javadoc":["java","javadoclike"],"jolie":"clike","jsdoc":["javascript","javadoclike"],"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","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","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup-templating","haxe":"clike","java":"clike","javadoc":["java","javadoclike"],"jolie":"clike","jsdoc":["javascript","javadoclike"],"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","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 ea4fd83080..4e46d72f21 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 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",go:"clike",groovy:"clike",haml:"ruby",handlebars:"markup-templating",haxe:"clike",java:"clike",javadoc:["java","javadoclike"],jolie:"clike",jsdoc:["javascript","javadoclike"],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",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},t=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)},n=function(a){return i.languages_path+"prism-"+a+(i.use_minified?".min":"")+".js"},l=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):[],o(r,function(){p(a,function(){Prism.highlightElement(c)})})},o=function(a,e,c){"string"==typeof a&&(a=[a]);var t=0,r=a.length,s=function(){r>t?p(a[t],function(){t++,s()},function(){c&&c(a[t])}):t===r&&e&&e(a)};s()},p=function(c,r,s){var i=function(){var a=!1;c.indexOf("!")>=0&&(a=!0,c=c.replace("!",""));var i=e[c];if(i||(i=e[c]={}),r&&(i.success_callbacks||(i.success_callbacks=[]),i.success_callbacks.push(r)),s&&(i.error_callbacks||(i.error_callbacks=[]),i.error_callbacks.push(s)),!a&&Prism.languages[c])u(c);else if(!a&&i.error)m(c);else if(a||!i.loading){i.loading=!0;var l=n(c);t(l,function(){i.loading=!1,u(c)},function(){i.loading=!1,i.error=!0,m(c)})}},l=a[c];l&&l.length?o(l,i):i()},u=function(a){e[a]&&e[a].success_callbacks&&e[a].success_callbacks.length&&e[a].success_callbacks.forEach(function(e){e(a)})},m=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&&l(a.language,a.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",go:"clike",groovy:"clike",haml:"ruby",handlebars:"markup-templating",haxe:"clike",java:"clike",javadoc:["java","javadoclike"],jolie:"clike",jsdoc:["javascript","javadoclike"],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",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},t=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)},n=function(a){return i.languages_path+"prism-"+a+(i.use_minified?".min":"")+".js"},l=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):[],o(r,function(){p(a,function(){Prism.highlightElement(c)})})},o=function(a,e,c){"string"==typeof a&&(a=[a]);var t=0,r=a.length,s=function(){r>t?p(a[t],function(){t++,s()},function(){c&&c(a[t])}):t===r&&e&&e(a)};s()},p=function(c,r,s){var i=function(){var a=!1;c.indexOf("!")>=0&&(a=!0,c=c.replace("!",""));var i=e[c];if(i||(i=e[c]={}),r&&(i.success_callbacks||(i.success_callbacks=[]),i.success_callbacks.push(r)),s&&(i.error_callbacks||(i.error_callbacks=[]),i.error_callbacks.push(s)),!a&&Prism.languages[c])u(c);else if(!a&&i.error)m(c);else if(a||!i.loading){i.loading=!0;var l=n(c);t(l,function(){i.loading=!1,u(c)},function(){i.loading=!1,i.error=!0,m(c)})}},l=a[c];l&&l.length?o(l,i):i()},u=function(a){e[a]&&e[a].success_callbacks&&e[a].success_callbacks.length&&e[a].success_callbacks.forEach(function(e){e(a)})},m=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&&l(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 df6eaf0877..e3514107af 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","javascript":"JavaScript","abap":"ABAP","actionscript":"ActionScript","apacheconf":"Apache Configuration","apl":"APL","applescript":"AppleScript","arff":"ARFF","asciidoc":"AsciiDoc","asm6502":"6502 Assembly","aspnet":"ASP.NET (C#)","autohotkey":"AutoHotkey","autoit":"AutoIt","basic":"BASIC","csharp":"C#","cpp":"C++","coffeescript":"CoffeeScript","csp":"Content-Security-Policy","css-extras":"CSS Extras","django":"Django/Jinja2","erb":"ERB","fsharp":"F#","gedcom":"GEDCOM","glsl":"GLSL","graphql":"GraphQL","http":"HTTP","hpkp":"HTTP Public-Key-Pins","hsts":"HTTP Strict-Transport-Security","ichigojam":"IchigoJam","inform7":"Inform 7","javadoclike":"JavaDoc-like","javadoc":"JavaDoc","jsdoc":"JSDoc","json":"JSON","latex":"LaTeX","livescript":"LiveScript","lolcode":"LOLCODE","markup-templating":"Markup templating","matlab":"MATLAB","mel":"MEL","n4js":"N4JS","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","tt2":"Template Toolkit 2","typescript":"TypeScript","vbnet":"VB.Net","vhdl":"VHDL","vim":"vim","visual-basic":"Visual Basic","wasm":"WebAssembly","wiki":"Wiki markup","xojo":"Xojo (REALbasic)","xquery":"XQuery","yaml":"YAML"}/*]*/; +var Languages = /*languages_placeholder[*/{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML","css":"CSS","clike":"C-like","javascript":"JavaScript","abap":"ABAP","actionscript":"ActionScript","apacheconf":"Apache Configuration","apl":"APL","applescript":"AppleScript","arff":"ARFF","asciidoc":"AsciiDoc","asm6502":"6502 Assembly","aspnet":"ASP.NET (C#)","autohotkey":"AutoHotkey","autoit":"AutoIt","basic":"BASIC","csharp":"C#","cpp":"C++","coffeescript":"CoffeeScript","csp":"Content-Security-Policy","css-extras":"CSS Extras","django":"Django/Jinja2","erb":"ERB","fsharp":"F#","gedcom":"GEDCOM","glsl":"GLSL","graphql":"GraphQL","http":"HTTP","hpkp":"HTTP Public-Key-Pins","hsts":"HTTP Strict-Transport-Security","ichigojam":"IchigoJam","inform7":"Inform 7","javadoc":"JavaDoc","javadoclike":"JavaDoc-like","jsdoc":"JSDoc","json":"JSON","latex":"LaTeX","livescript":"LiveScript","lolcode":"LOLCODE","markup-templating":"Markup templating","matlab":"MATLAB","mel":"MEL","n4js":"N4JS","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","tt2":"Template Toolkit 2","typescript":"TypeScript","vbnet":"VB.Net","vhdl":"VHDL","vim":"vim","visual-basic":"Visual Basic","wasm":"WebAssembly","wiki":"Wiki markup","xojo":"Xojo (REALbasic)","xquery":"XQuery","yaml":"YAML"}/*]*/; Prism.plugins.toolbar.registerButton('show-language', function(env) { var pre = env.element.parentNode; if (!pre || !/pre/i.test(pre.nodeName)) { diff --git a/plugins/show-language/prism-show-language.min.js b/plugins/show-language/prism-show-language.min.js index b6165e78b2..75806fb3a3 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 e={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",javascript:"JavaScript",abap:"ABAP",actionscript:"ActionScript",apacheconf:"Apache Configuration",apl:"APL",applescript:"AppleScript",arff:"ARFF",asciidoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",basic:"BASIC",csharp:"C#",cpp:"C++",coffeescript:"CoffeeScript",csp:"Content-Security-Policy","css-extras":"CSS Extras",django:"Django/Jinja2",erb:"ERB",fsharp:"F#",gedcom:"GEDCOM",glsl:"GLSL",graphql:"GraphQL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",inform7:"Inform 7",javadoclike:"JavaDoc-like",javadoc:"JavaDoc",jsdoc:"JSDoc",json:"JSON",latex:"LaTeX",livescript:"LiveScript",lolcode:"LOLCODE","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",n4js:"N4JS",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",tt2:"Template Toolkit 2",typescript:"TypeScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML"};Prism.plugins.toolbar.registerButton("show-language",function(a){var t=a.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var s=t.getAttribute("data-language")||e[a.language]||a.language&&a.language.substring(0,1).toUpperCase()+a.language.substring(1);if(s){var i=document.createElement("span");return i.textContent=s,i}}})}}(); \ 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 e={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",javascript:"JavaScript",abap:"ABAP",actionscript:"ActionScript",apacheconf:"Apache Configuration",apl:"APL",applescript:"AppleScript",arff:"ARFF",asciidoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",basic:"BASIC",csharp:"C#",cpp:"C++",coffeescript:"CoffeeScript",csp:"Content-Security-Policy","css-extras":"CSS Extras",django:"Django/Jinja2",erb:"ERB",fsharp:"F#",gedcom:"GEDCOM",glsl:"GLSL",graphql:"GraphQL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",inform7:"Inform 7",javadoc:"JavaDoc",javadoclike:"JavaDoc-like",jsdoc:"JSDoc",json:"JSON",latex:"LaTeX",livescript:"LiveScript",lolcode:"LOLCODE","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",n4js:"N4JS",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",tt2:"Template Toolkit 2",typescript:"TypeScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML"};Prism.plugins.toolbar.registerButton("show-language",function(a){var t=a.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var s=t.getAttribute("data-language")||e[a.language]||a.language&&a.language.substring(0,1).toUpperCase()+a.language.substring(1);if(s){var i=document.createElement("span");return i.textContent=s,i}}})}}(); \ No newline at end of file diff --git a/tests/languages/php+phpdoc/keyword_feature.test b/tests/languages/php+phpdoc/keyword_feature.test new file mode 100644 index 0000000000..2681efd1e2 --- /dev/null +++ b/tests/languages/php+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+php/doc-comment_feature.test b/tests/languages/phpdoc+php/doc-comment_feature.test new file mode 100644 index 0000000000..b915bf7f6e --- /dev/null +++ b/tests/languages/phpdoc+php/doc-comment_feature.test @@ -0,0 +1,11 @@ +/** Description. */ + +---------------------------------------------------- + +[ + ["doc-comment", ["/** Description. */"]] +] + +---------------------------------------------------- + +Checks for doc comments. From d37b83580de9a833db2ffd5505a6dda2e66e28c0 Mon Sep 17 00:00:00 2001 From: RunDevelopment Date: Thu, 23 Aug 2018 20:28:03 +0200 Subject: [PATCH 06/21] Added peer dependencies between languages --- components.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/components.json b/components.json index 09971aedc9..3d35012a40 100644 --- a/components.json +++ b/components.json @@ -372,6 +372,9 @@ "javadoc": { "title": "JavaDoc", "require": ["java", "javadoclike"], + "peerDependencies": [ + "scala" + ], "owner": "RunDevelopment" }, "javadoclike": { @@ -391,6 +394,11 @@ "jsdoc": { "title": "JSDoc", "require": ["javascript", "javadoclike"], + "peerDependencies": [ + "actionscript", + "coffeescript", + "n4js" + ], "owner": "RunDevelopment" }, "json": { @@ -477,6 +485,9 @@ "n4js": { "title": "N4JS", "require": "javascript", + "peerDependencies": [ + "jsdoc" + ], "alias": "n4jsd", "owner": "bsmith-n4" }, @@ -641,6 +652,9 @@ "jsx": { "title": "React JSX", "require": ["markup", "javascript"], + "peerDependencies": [ + "jsdoc" + ], "owner": "vkbansal" }, "tsx": { From 227402047ab4f266be042491a80a29f9fd621c16 Mon Sep 17 00:00:00 2001 From: RunDevelopment Date: Thu, 23 Aug 2018 20:57:09 +0200 Subject: [PATCH 07/21] Fixed circular dependency between n4js and jsdoc --- components.js | 2 +- components.json | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/components.js b/components.js index cd5d2e4330..6c02a334e6 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"},"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":{"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","alias":"shell","owner":"Golmote"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"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"},"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"},"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"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"clike","owner":"Golmote"},"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"},"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":["java","javadoclike"],"owner":"RunDevelopment"},"javadoclike":{"title":"JavaDoc-like","peerDependencies":["java","javascript","php"],"owner":"RunDevelopment"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jsdoc":{"title":"JSDoc","require":["javascript","javadoclike"],"owner":"RunDevelopment"},"json":{"title":"JSON","alias":"jsonp","aliasTitles":{"jsonp":"JSONP"},"owner":"CupOfTea696"},"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"},"n4js":{"title":"N4JS","require":"javascript","alias":"n4jsd","owner":"bsmith-n4"},"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"],"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"},"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"},"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":"Show Invisibles","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"},"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":{"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","alias":"shell","owner":"Golmote"},"bison":{"title":"Bison","require":"c","owner":"Golmote"},"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"},"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"},"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"},"gedcom":{"title":"GEDCOM","owner":"Golmote"},"gherkin":{"title":"Gherkin","owner":"hason"},"git":{"title":"Git","owner":"lgiraudel"},"glsl":{"title":"GLSL","require":"clike","owner":"Golmote"},"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"},"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":["java","javadoclike"],"peerDependencies":["scala"],"owner":"RunDevelopment"},"javadoclike":{"title":"JavaDoc-like","peerDependencies":["java","javascript","php"],"owner":"RunDevelopment"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jsdoc":{"title":"JSDoc","require":["javascript","javadoclike"],"peerDependencies":["actionscript","coffeescript"],"owner":"RunDevelopment"},"json":{"title":"JSON","alias":"jsonp","aliasTitles":{"jsonp":"JSONP"},"owner":"CupOfTea696"},"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"},"n4js":{"title":"N4JS","require":"javascript","peerDependencies":["jsdoc"],"alias":"n4jsd","owner":"bsmith-n4"},"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"],"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"},"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"},"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":"Show Invisibles","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 3d35012a40..9a6cd377e4 100644 --- a/components.json +++ b/components.json @@ -396,8 +396,7 @@ "require": ["javascript", "javadoclike"], "peerDependencies": [ "actionscript", - "coffeescript", - "n4js" + "coffeescript" ], "owner": "RunDevelopment" }, From aa9c9b1d9362a94d7d3cd090b45c9b1833d4d415 Mon Sep 17 00:00:00 2001 From: RunDevelopment Date: Thu, 23 Aug 2018 20:57:42 +0200 Subject: [PATCH 08/21] Minor improvements --- components/prism-javadoc.js | 8 +++-- components/prism-javadoc.min.js | 2 +- components/prism-javadoclike.js | 54 +++++++++++++++++------------ components/prism-javadoclike.min.js | 2 +- components/prism-jsdoc.js | 13 ++++--- components/prism-jsdoc.min.js | 2 +- components/prism-phpdoc.js | 3 +- components/prism-phpdoc.min.js | 2 +- 8 files changed, 51 insertions(+), 35 deletions(-) diff --git a/components/prism-javadoc.js b/components/prism-javadoc.js index dcb9aec0b1..7e15aa3e9c 100644 --- a/components/prism-javadoc.js +++ b/components/prism-javadoc.js @@ -1,12 +1,14 @@ (function (Prism) { + var javaDocLike = Prism.languages.javadoclike; var java = Prism.languages.java; var codeLines = { 'code': { pattern: /(^(\s*(?:\*\s*)*)).*[^*\s].+$/m, lookbehind: true, - inside: java + inside: java, + alias: 'language-java' } }; @@ -21,7 +23,7 @@ } }, { - pattern: /(@param\s+)<\w+>/, + pattern: /(@param\s+)<[A-Z]\w*>/, lookbehind: true, inside: { 'punctuation': /[.<>]/ @@ -50,5 +52,5 @@ 'tag': /<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, }); - java['doc-comment'][0].inside.rest = Prism.languages.javadoc; + javaDocLike.addSupport(['java'], Prism.languages.javadoc); }(Prism)); diff --git a/components/prism-javadoc.min.js b/components/prism-javadoc.min.js index 35638e87fb..d2df8e5548 100644 --- a/components/prism-javadoc.min.js +++ b/components/prism-javadoc.min.js @@ -1 +1 @@ -!function(e){var n=e.languages.java,a={code:{pattern:/(^(\s*(?:\*\s*)*)).*[^*\s].+$/m,lookbehind:!0,inside:n}};e.languages.javadoc=e.languages.extend("javadoclike",{}),e.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+)<\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:a},{pattern:/(<(code|tt)>\s*)[\s\S]+?(?=\s*<\/\2>)/,lookbehind:!0,inside:a}],tag:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i}),n["doc-comment"][0].inside.rest=e.languages.javadoc}(Prism); \ No newline at end of file +!function(a){var e=a.languages.javadoclike,n=a.languages.java,s={code:{pattern:/(^(\s*(?:\*\s*)*)).*[^*\s].+$/m,lookbehind:!0,inside:n,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:s},{pattern:/(<(code|tt)>\s*)[\s\S]+?(?=\s*<\/\2>)/,lookbehind:!0,inside:s}],tag:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i}),e.addSupport(["java"],a.languages.javadoc)}(Prism); \ No newline at end of file diff --git a/components/prism-javadoclike.js b/components/prism-javadoclike.js index d03c948079..5bacff1e10 100644 --- a/components/prism-javadoclike.js +++ b/components/prism-javadoclike.js @@ -1,6 +1,6 @@ (function (Prism) { - var doc = Prism.languages.javadoclike = { + var javaDocLike = Prism.languages.javadoclike = { 'parameter': { pattern: /(^\s*(?:\/{3}|\*|\/\*\*)\s*@(?:param|arg|arguments)\s+)\w+/m, lookbehind: true @@ -19,7 +19,7 @@ * 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}}, index: number, array: {inside: {rest: undefined}}[]) => void} callback the function called with each doc comment pattern as argument. + * @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'; @@ -34,37 +34,45 @@ var definition = {}; definition[tokenName] = { pattern: /(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/, - greedy: true, alias: 'comment', inside: {} }; - Prism.languages.insertBefore(lang, 'comment', definition); - token = (grammar = Prism.languages[lang])[tokenName]; - } - - if (token instanceof RegExp) // convert to regex to object array - token = grammar[tokenName] = [{ pattern: token }]; + grammar = Prism.languages.insertBefore(lang, 'comment', definition); + token = grammar[tokenName]; - else if (Prism.util.type(token) !== 'Array') // convert object to array - token = grammar[tokenName] = [token]; + } else if (token instanceof RegExp) { // convert existing regex to object + token = grammar[tokenName] = { pattern: token }; + } - else // convert regexes to objects - for (var i = 0; i < token.length; i++) + 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] }; - - // call function on each object - for (var i = 0; i < token.length; i++) { - callback(token[i], i, token); + callback(token[i]); + } + } else { + callback(token); } } - var basicSupport = ['java', 'javascript', 'php']; - for (var i = 0; i < basicSupport.length; i++) { - docCommentSupport(basicSupport[i], function (pattern, index, array) { - pattern.inside.rest = doc; - }); - } + Object.defineProperty(javaDocLike, 'addSupport', { + + /** + * Adds doc-comment support to the given languages for the given documentation language. + */ + value: function addSupport(languages, docLanguage) { + languages.forEach(function (lang) { + docCommentSupport(lang, function (pattern) { + if (!pattern.inside) + pattern.inside = {}; + pattern.inside.rest = docLanguage; + }); + }); + } + + }); + + javaDocLike.addSupport(['java', 'javascript', 'php'], javaDocLike); }(Prism)); diff --git a/components/prism-javadoclike.min.js b/components/prism-javadoclike.min.js index 696289d8a1..420075c372 100644 --- a/components/prism-javadoclike.min.js +++ b/components/prism-javadoclike.min.js @@ -1 +1 @@ -!function(a){function e(e,n){var t="doc-comment",r=a.languages[e];if(r){var i=r[t];if(!i){var s={};s[t]={pattern:/(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/,greedy:!0,alias:"comment",inside:{}},a.languages.insertBefore(e,"comment",s),i=(r=a.languages[e])[t]}if(i instanceof RegExp)i=r[t]=[{pattern:i}];else if("Array"!==a.util.type(i))i=r[t]=[i];else for(var o=0;os;s++)i[s]instanceof RegExp&&(i[s]={pattern:i[s]}),n(i[s]);else n(i)}}var n=e.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(n,"addSupport",{value:function(e,n){e.forEach(function(e){a(e,function(e){e.inside||(e.inside={}),e.inside.rest=n})})}}),n.addSupport(["java","javascript","php"],n)}(Prism); \ No newline at end of file diff --git a/components/prism-jsdoc.js b/components/prism-jsdoc.js index 7c5dae0165..dd6b0f3b4c 100644 --- a/components/prism-jsdoc.js +++ b/components/prism-jsdoc.js @@ -1,6 +1,9 @@ (function (Prism) { - var js = Prism.languages.javascript; + var javaDocLike = Prism.languages.javadoclike; + var javascript = Prism.languages.javascript; + + var type = /\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source; Prism.languages.jsdoc = Prism.languages.extend('javadoclike', { 'parameter': { @@ -10,7 +13,8 @@ 'code': { pattern: /(\w=)[^[[\]]+(?=\]$)/, lookbehind: true, - inside: js + inside: javascript, + alias: 'language-javascript' }, 'punctuation': /[=[\]]/ } @@ -41,12 +45,13 @@ 'code': { pattern: /^(\s*(?:\*\s*)?).+$/m, lookbehind: true, - inside: js + inside: javascript, + alias: 'language-javascript' } } } }); - js['doc-comment'][0].inside.rest = Prism.languages.jsdoc; + javaDocLike.addSupport(['javascript'], Prism.languages.jsdoc); }(Prism)); diff --git a/components/prism-jsdoc.min.js b/components/prism-jsdoc.min.js index cfb1cb560d..f50a88fdaa 100644 --- a/components/prism-jsdoc.min.js +++ b/components/prism-jsdoc.min.js @@ -1 +1 @@ -!function(e){var n=e.languages.javascript;e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:/(@(?:param|arg|argument)\s+(?:\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/,lookbehind:!0,inside:{code:{pattern:/(\w=)[^[[\]]+(?=\]$)/,lookbehind:!0,inside:n},punctuation:/[=[\]]/}}}),e.languages.insertBefore("jsdoc","keyword",{"class-name":[{pattern:/(@[a-z]+\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/,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:n}}}}),n["doc-comment"][0].inside.rest=e.languages.jsdoc}(Prism); \ No newline at end of file +!function(a){{var e=a.languages.javadoclike,n=a.languages.javascript;/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source}a.languages.jsdoc=a.languages.extend("javadoclike",{parameter:{pattern:/(@(?:param|arg|argument)\s+(?:\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/,lookbehind:!0,inside:{code:{pattern:/(\w=)[^[[\]]+(?=\]$)/,lookbehind:!0,inside:n,alias:"language-javascript"},punctuation:/[=[\]]/}}}),a.languages.insertBefore("jsdoc","keyword",{"class-name":[{pattern:/(@[a-z]+\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/,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:n,alias:"language-javascript"}}}}),e.addSupport(["javascript"],a.languages.jsdoc)}(Prism); \ No newline at end of file diff --git a/components/prism-phpdoc.js b/components/prism-phpdoc.js index 66cc4f5f29..1e4d7ae3fc 100644 --- a/components/prism-phpdoc.js +++ b/components/prism-phpdoc.js @@ -22,6 +22,7 @@ ], }); - Prism.languages.php['doc-comment'][0].inside.rest = Prism.languages.phpdoc; + var javaDocLike = Prism.languages.javadoclike; + javaDocLike.addSupport(['php'], Prism.languages.phpdoc); }(Prism)); diff --git a/components/prism-phpdoc.min.js b/components/prism-phpdoc.min.js index 0ee5dd324c..6b2a77f45e 100644 --- a/components/prism-phpdoc.min.js +++ b/components/prism-phpdoc.min.js @@ -1 +1 @@ -!function(e){var a=/(?:(?:\\?[A-Za-z]\w*)+(?:\[\])?\|?)+/.source;e.languages.phpdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp("("+/@(?:global|param|property(?:-read|-write)?|var)\s+/.source+"(?:"+a+"\\s+)?)"+/\$\w+/.source),lookbehind:!0}}),e.languages.insertBefore("phpdoc","keyword",{"class-name":[{pattern:RegExp(/(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\s+)/.source+a),lookbehind:!0,inside:{keyword:/\b(?:callback|resource|boolean|integer|double|object|string|array|false|float|mixed|bool|null|self|true|void|int)\b/,punctuation:/[|\\[\]()]/}}]}),e.languages.php["doc-comment"][0].inside.rest=e.languages.phpdoc}(Prism); \ No newline at end of file +!function(e){var a=/(?:(?:\\?[A-Za-z]\w*)+(?:\[\])?\|?)+/.source;e.languages.phpdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp("("+/@(?:global|param|property(?:-read|-write)?|var)\s+/.source+"(?:"+a+"\\s+)?)"+/\$\w+/.source),lookbehind:!0}}),e.languages.insertBefore("phpdoc","keyword",{"class-name":[{pattern:RegExp(/(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\s+)/.source+a),lookbehind:!0,inside:{keyword:/\b(?:callback|resource|boolean|integer|double|object|string|array|false|float|mixed|bool|null|self|true|void|int)\b/,punctuation:/[|\\[\]()]/}}]});var r=e.languages.javadoclike;r.addSupport(["php"],e.languages.phpdoc)}(Prism); \ No newline at end of file From 30155896af9ae47b30badd9173baaa1824c655dd Mon Sep 17 00:00:00 2001 From: RunDevelopment Date: Thu, 23 Aug 2018 20:57:50 +0200 Subject: [PATCH 09/21] Updated tests --- ...nt_feature.test => javadoc_inclusion.test} | 2 +- .../languages/javadoc/class-name_feature.test | 40 ++++ tests/languages/javadoc/code_feature.test | 95 +++++++++ .../keyword_feature.test | 4 +- .../languages/javadoc/parameter_feature.test | 20 ++ tests/languages/javadoc/tag_feature.test | 46 +++++ ...ment_feature.test => jsdoc_inclusion.test} | 2 +- tests/languages/jsdoc/class-name_feature.test | 75 +++++++ tests/languages/jsdoc/example_feature.test | 35 ++++ tests/languages/jsdoc/keyword_feature.test | 192 ++++++++++++++++++ .../parameter_feature.test} | 32 ++- ...ent_feature.test => phpdoc_inclusion.test} | 2 +- .../languages/phpdoc/class-name_feature.test | 37 ++++ .../keyword_feature.test | 0 tests/languages/phpdoc/parameter_feature.test | 23 +++ 15 files changed, 597 insertions(+), 8 deletions(-) rename tests/languages/javadoc+java/{doc-comment_feature.test => javadoc_inclusion.test} (81%) create mode 100644 tests/languages/javadoc/class-name_feature.test create mode 100644 tests/languages/javadoc/code_feature.test rename tests/languages/{java+javadoc => javadoc}/keyword_feature.test (98%) create mode 100644 tests/languages/javadoc/parameter_feature.test create mode 100644 tests/languages/javadoc/tag_feature.test rename tests/languages/jsdoc+javascript/{doc-comment_feature.test => jsdoc_inclusion.test} (79%) 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 rename tests/languages/{javascript+jsdoc/param_feature.test => jsdoc/parameter_feature.test} (56%) rename tests/languages/phpdoc+php/{doc-comment_feature.test => phpdoc_inclusion.test} (81%) create mode 100644 tests/languages/phpdoc/class-name_feature.test rename tests/languages/{php+phpdoc => phpdoc}/keyword_feature.test (100%) create mode 100644 tests/languages/phpdoc/parameter_feature.test diff --git a/tests/languages/javadoc+java/doc-comment_feature.test b/tests/languages/javadoc+java/javadoc_inclusion.test similarity index 81% rename from tests/languages/javadoc+java/doc-comment_feature.test rename to tests/languages/javadoc+java/javadoc_inclusion.test index b915bf7f6e..9dd0329444 100644 --- a/tests/languages/javadoc+java/doc-comment_feature.test +++ b/tests/languages/javadoc+java/javadoc_inclusion.test @@ -8,4 +8,4 @@ ---------------------------------------------------- -Checks for doc comments. +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..9ff3259a3e --- /dev/null +++ b/tests/languages/javadoc/code_feature.test @@ -0,0 +1,95 @@ +/** + * {@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", ["null"]] + ]], + ["punctuation", "}"], + ".\n * ", + ["tag", ""], + ["code-section", [ + ["code", [ + "Foo", + ["punctuation", "."], + ["function", "bar"], + ["punctuation", "("], + "null", + ["punctuation", ")"] + ]] + ]], + ["tag", ""], + "\n * ", + ["tag", "
"],
+	["tag", ""],
+	["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", "
"], + "\n */" +] + +---------------------------------------------------- + +Checks for code. diff --git a/tests/languages/java+javadoc/keyword_feature.test b/tests/languages/javadoc/keyword_feature.test similarity index 98% rename from tests/languages/java+javadoc/keyword_feature.test rename to tests/languages/javadoc/keyword_feature.test index a337f6fc46..db56bb42b1 100644 --- a/tests/languages/java+javadoc/keyword_feature.test +++ b/tests/languages/javadoc/keyword_feature.test @@ -1,4 +1,4 @@ -/* +/** * @author * @deprecated * @exception @@ -23,7 +23,7 @@ ---------------------------------------------------- [ - "/*\n * ", + "/**\n * ", ["keyword", "@author"], "\n * ", ["keyword", "@deprecated"], 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..73f151c260 --- /dev/null +++ b/tests/languages/javadoc/tag_feature.test @@ -0,0 +1,46 @@ +/** + *

+ * + * + * + * + * + *
+ * foo + * + * bar + *
+ * some link + */ + +---------------------------------------------------- + +[ + "/**\n * ", + ["tag", "

"], + "\n * ", + ["tag", ""], + "\n * ", + ["tag", ""], + "\n * ", + ["tag", ""], + "\n * ", + ["tag", ""], + "\n * ", + ["tag", ""], + "\n * ", + ["tag", "
"], + "\n * foo\n * ", + ["tag", ""], + "\n * bar\n * ", + ["tag", "
"], + "\n * ", + ["tag", ""], + "some link", + ["tag", ""], + "\n */" +] + +---------------------------------------------------- + +Checks for HTML tags inside doc comments. diff --git a/tests/languages/jsdoc+javascript/doc-comment_feature.test b/tests/languages/jsdoc+javascript/jsdoc_inclusion.test similarity index 79% rename from tests/languages/jsdoc+javascript/doc-comment_feature.test rename to tests/languages/jsdoc+javascript/jsdoc_inclusion.test index b915bf7f6e..c418f9d89c 100644 --- a/tests/languages/jsdoc+javascript/doc-comment_feature.test +++ b/tests/languages/jsdoc+javascript/jsdoc_inclusion.test @@ -8,4 +8,4 @@ ---------------------------------------------------- -Checks for doc comments. +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..cf23073c34 --- /dev/null +++ b/tests/languages/jsdoc/keyword_feature.test @@ -0,0 +1,192 @@ +/** + * @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 + * + * @example ; + */ + +---------------------------------------------------- + +[ + "/**\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 *\n * ", ["keyword", "@example"], + ["example", [ + ["code", [ + ["punctuation", ";"] + ]] + ]], + "\n */" +] + +---------------------------------------------------- + +Checks for keywords. diff --git a/tests/languages/javascript+jsdoc/param_feature.test b/tests/languages/jsdoc/parameter_feature.test similarity index 56% rename from tests/languages/javascript+jsdoc/param_feature.test rename to tests/languages/jsdoc/parameter_feature.test index f40d499809..b1ee33549a 100644 --- a/tests/languages/javascript+jsdoc/param_feature.test +++ b/tests/languages/jsdoc/parameter_feature.test @@ -1,6 +1,9 @@ /** + * @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 {{[x: string]: {start: number, end?: number}}} map */ ---------------------------------------------------- @@ -8,6 +11,29 @@ [ "/**\n * ", ["keyword", "@param"], + ["parameter", ["n"]], + " - A number.\n * ", + ["keyword", "@param"], + ["parameter", [ + ["punctuation", "["], + "n", + ["punctuation", "]"] + ]], + " - A number.\n * ", + ["keyword", "@param"], + ["parameter", [ + ["punctuation", "["], + "n", + ["punctuation", "="], + ["code", [ + ["number", "1"], + ["operator", "+"], + ["number", "2"] + ]], + ["punctuation", "]"] + ]], + " - A number.\n * ", + ["keyword", "@param"], ["class-name", [ ["punctuation", "{"], "number", @@ -15,7 +41,6 @@ ]], ["parameter", ["n"]], " - A number.\n * ", - ["keyword", "@param"], ["class-name", [ ["punctuation", "{"], @@ -32,6 +57,7 @@ " number", ["punctuation", ","], " end", + ["punctuation", "?"], ["punctuation", ":"], " number", ["punctuation", "}"], @@ -44,4 +70,4 @@ ---------------------------------------------------- -Checks for parameter types and names. +Checks for parameters. diff --git a/tests/languages/phpdoc+php/doc-comment_feature.test b/tests/languages/phpdoc+php/phpdoc_inclusion.test similarity index 81% rename from tests/languages/phpdoc+php/doc-comment_feature.test rename to tests/languages/phpdoc+php/phpdoc_inclusion.test index b915bf7f6e..fb5e3f6181 100644 --- a/tests/languages/phpdoc+php/doc-comment_feature.test +++ b/tests/languages/phpdoc+php/phpdoc_inclusion.test @@ -8,4 +8,4 @@ ---------------------------------------------------- -Checks for doc comments. +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..281102e366 --- /dev/null +++ b/tests/languages/phpdoc/class-name_feature.test @@ -0,0 +1,37 @@ +/** + * @param string $parameter a parameter + * @return self + * @var MyClass + * @throws Exception if something bad happens + */ + +---------------------------------------------------- + +[ + "/**\n * ", + ["keyword", "@param"], + ["class-name", [ + ["keyword", "string"] + ]], + ["parameter", "$parameter"], + " a parameter\n * ", + ["keyword", "@return"], + ["class-name", [ + ["keyword", "self"] + ]], + "\n * ", + ["keyword", "@var"], + ["class-name", [ + "MyClass" + ]], + "\n * ", + ["keyword", "@throws"], + ["class-name", [ + "Exception" + ]], + " if something bad happens\n */" +] + +---------------------------------------------------- + +Checks for class names. diff --git a/tests/languages/php+phpdoc/keyword_feature.test b/tests/languages/phpdoc/keyword_feature.test similarity index 100% rename from tests/languages/php+phpdoc/keyword_feature.test rename to tests/languages/phpdoc/keyword_feature.test 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. From 50665429c2cdfce7f4d2403eecac0a53a314ef1d Mon Sep 17 00:00:00 2001 From: RunDevelopment Date: Thu, 23 Aug 2018 21:39:37 +0200 Subject: [PATCH 10/21] Fixed catastrophic backtracking for PHPDoc --- components/prism-phpdoc.js | 2 +- components/prism-phpdoc.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/prism-phpdoc.js b/components/prism-phpdoc.js index 1e4d7ae3fc..c48c967b19 100644 --- a/components/prism-phpdoc.js +++ b/components/prism-phpdoc.js @@ -1,6 +1,6 @@ (function (Prism) { - var typeExpression = /(?:(?:\\?[A-Za-z]\w*)+(?:\[\])?\|?)+/.source; + var typeExpression = /(?:[a-zA-Z]\w*|[|\\[\]])+/.source; Prism.languages.phpdoc = Prism.languages.extend('javadoclike', { 'parameter': { diff --git a/components/prism-phpdoc.min.js b/components/prism-phpdoc.min.js index 6b2a77f45e..e2c1361db3 100644 --- a/components/prism-phpdoc.min.js +++ b/components/prism-phpdoc.min.js @@ -1 +1 @@ -!function(e){var a=/(?:(?:\\?[A-Za-z]\w*)+(?:\[\])?\|?)+/.source;e.languages.phpdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp("("+/@(?:global|param|property(?:-read|-write)?|var)\s+/.source+"(?:"+a+"\\s+)?)"+/\$\w+/.source),lookbehind:!0}}),e.languages.insertBefore("phpdoc","keyword",{"class-name":[{pattern:RegExp(/(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\s+)/.source+a),lookbehind:!0,inside:{keyword:/\b(?:callback|resource|boolean|integer|double|object|string|array|false|float|mixed|bool|null|self|true|void|int)\b/,punctuation:/[|\\[\]()]/}}]});var r=e.languages.javadoclike;r.addSupport(["php"],e.languages.phpdoc)}(Prism); \ No newline at end of file +!function(e){var a=/(?:[a-zA-Z]\w*|[|\\[\]])+/.source;e.languages.phpdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp("("+/@(?:global|param|property(?:-read|-write)?|var)\s+/.source+"(?:"+a+"\\s+)?)"+/\$\w+/.source),lookbehind:!0}}),e.languages.insertBefore("phpdoc","keyword",{"class-name":[{pattern:RegExp(/(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\s+)/.source+a),lookbehind:!0,inside:{keyword:/\b(?:callback|resource|boolean|integer|double|object|string|array|false|float|mixed|bool|null|self|true|void|int)\b/,punctuation:/[|\\[\]()]/}}]});var r=e.languages.javadoclike;r.addSupport(["php"],e.languages.phpdoc)}(Prism); \ No newline at end of file From 3100fcd3f8b8f0fb47a55aa096dfa8a440f9ac46 Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Sat, 25 Aug 2018 00:48:39 +0200 Subject: [PATCH 11/21] Reverted unnecessary white-space change --- components/prism-java.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/prism-java.js b/components/prism-java.js index 4b3f29e0b4..67199692f9 100644 --- a/components/prism-java.js +++ b/components/prism-java.js @@ -7,7 +7,7 @@ Prism.languages.java = Prism.languages.extend('clike', { } }); -Prism.languages.insertBefore('java', 'function', { +Prism.languages.insertBefore('java','function', { 'annotation': { alias: 'punctuation', pattern: /(^|[^.])@\w+/, From 83c349d607e0ea1961b52cf42341adff18ec05af Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Sat, 1 Dec 2018 19:36:01 +0100 Subject: [PATCH 12/21] Inlined variables --- components/prism-javadoc.js | 7 ++----- components/prism-jsdoc.js | 3 +-- components/prism-phpdoc.js | 3 +-- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/components/prism-javadoc.js b/components/prism-javadoc.js index 7e15aa3e9c..5d85ed8c14 100644 --- a/components/prism-javadoc.js +++ b/components/prism-javadoc.js @@ -1,13 +1,10 @@ (function (Prism) { - var javaDocLike = Prism.languages.javadoclike; - var java = Prism.languages.java; - var codeLines = { 'code': { pattern: /(^(\s*(?:\*\s*)*)).*[^*\s].+$/m, lookbehind: true, - inside: java, + inside: Prism.languages.java, alias: 'language-java' } }; @@ -52,5 +49,5 @@ 'tag': /<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, }); - javaDocLike.addSupport(['java'], Prism.languages.javadoc); + Prism.languages.javadoclike.addSupport(['java'], Prism.languages.javadoc); }(Prism)); diff --git a/components/prism-jsdoc.js b/components/prism-jsdoc.js index dd6b0f3b4c..6df4ae56e2 100644 --- a/components/prism-jsdoc.js +++ b/components/prism-jsdoc.js @@ -1,6 +1,5 @@ (function (Prism) { - var javaDocLike = Prism.languages.javadoclike; var javascript = Prism.languages.javascript; var type = /\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source; @@ -52,6 +51,6 @@ } }); - javaDocLike.addSupport(['javascript'], Prism.languages.jsdoc); + Prism.languages.javadoclike.addSupport(['javascript'], Prism.languages.jsdoc); }(Prism)); diff --git a/components/prism-phpdoc.js b/components/prism-phpdoc.js index c48c967b19..019b465dfd 100644 --- a/components/prism-phpdoc.js +++ b/components/prism-phpdoc.js @@ -22,7 +22,6 @@ ], }); - var javaDocLike = Prism.languages.javadoclike; - javaDocLike.addSupport(['php'], Prism.languages.phpdoc); + Prism.languages.javadoclike.addSupport(['php'], Prism.languages.phpdoc); }(Prism)); From 1f17b43b32fc56185dc1d90b6aeb0f426c890bd6 Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Sat, 1 Dec 2018 21:36:08 +0100 Subject: [PATCH 13/21] JavaDoc uses Markup's `tag` Rebuild --- components.js | 2 +- components.json | 2 +- components/prism-javadoc.js | 3 +- components/prism-javadoc.min.js | 2 +- components/prism-jsdoc.min.js | 2 +- components/prism-phpdoc.min.js | 2 +- plugins/autoloader/prism-autoloader.js | 2 +- plugins/autoloader/prism-autoloader.min.js | 2 +- tests/languages/javadoc/code_feature.test | 50 ++++++++++-- tests/languages/javadoc/tag_feature.test | 93 +++++++++++++++++++--- 10 files changed, 135 insertions(+), 25 deletions(-) diff --git a/components.js b/components.js index 909926836a..8d44d41f73 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"},"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":{"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"},"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"},"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"},"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"},"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":["java","javadoclike"],"peerDependencies":["scala"],"owner":"RunDevelopment"},"javadoclike":{"title":"JavaDoc-like","peerDependencies":["java","javascript","php"],"owner":"RunDevelopment"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jsdoc":{"title":"JSDoc","require":["javascript","javadoclike"],"peerDependencies":["actionscript","coffeescript"],"owner":"RunDevelopment"},"json":{"title":"JSON","alias":"jsonp","aliasTitles":{"jsonp":"JSONP"},"owner":"CupOfTea696"},"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"},"n4js":{"title":"N4JS","require":"javascript","peerDependencies":["jsdoc"],"alias":"n4jsd","owner":"bsmith-n4"},"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"],"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"},"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"},"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":"Show Invisibles","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"},"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":{"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"},"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"},"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"},"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"},"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"},"jolie":{"title":"Jolie","require":"clike","owner":"thesave"},"jsdoc":{"title":"JSDoc","require":["javascript","javadoclike"],"peerDependencies":["actionscript","coffeescript"],"owner":"RunDevelopment"},"json":{"title":"JSON","alias":"jsonp","aliasTitles":{"jsonp":"JSONP"},"owner":"CupOfTea696"},"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"},"n4js":{"title":"N4JS","require":"javascript","peerDependencies":["jsdoc"],"alias":"n4jsd","owner":"bsmith-n4"},"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"],"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"},"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"},"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":"Show Invisibles","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 c0a26ae6f5..6b821a6b32 100644 --- a/components.json +++ b/components.json @@ -380,7 +380,7 @@ }, "javadoc": { "title": "JavaDoc", - "require": ["java", "javadoclike"], + "require": ["markup", "java", "javadoclike"], "peerDependencies": [ "scala" ], diff --git a/components/prism-javadoc.js b/components/prism-javadoc.js index 5d85ed8c14..51513fdb49 100644 --- a/components/prism-javadoc.js +++ b/components/prism-javadoc.js @@ -20,6 +20,7 @@ } }, { + // @param the first generic type parameter pattern: /(@param\s+)<[A-Z]\w*>/, lookbehind: true, inside: { @@ -46,7 +47,7 @@ inside: codeLines } ], - 'tag': /<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, + 'tag': Prism.languages.markup.tag, }); Prism.languages.javadoclike.addSupport(['java'], Prism.languages.javadoc); diff --git a/components/prism-javadoc.min.js b/components/prism-javadoc.min.js index d2df8e5548..5e7223c33f 100644 --- a/components/prism-javadoc.min.js +++ b/components/prism-javadoc.min.js @@ -1 +1 @@ -!function(a){var e=a.languages.javadoclike,n=a.languages.java,s={code:{pattern:/(^(\s*(?:\*\s*)*)).*[^*\s].+$/m,lookbehind:!0,inside:n,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:s},{pattern:/(<(code|tt)>\s*)[\s\S]+?(?=\s*<\/\2>)/,lookbehind:!0,inside:s}],tag:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i}),e.addSupport(["java"],a.languages.javadoc)}(Prism); \ No newline at end of file +!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-jsdoc.min.js b/components/prism-jsdoc.min.js index f50a88fdaa..ce3ed3786a 100644 --- a/components/prism-jsdoc.min.js +++ b/components/prism-jsdoc.min.js @@ -1 +1 @@ -!function(a){{var e=a.languages.javadoclike,n=a.languages.javascript;/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source}a.languages.jsdoc=a.languages.extend("javadoclike",{parameter:{pattern:/(@(?:param|arg|argument)\s+(?:\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/,lookbehind:!0,inside:{code:{pattern:/(\w=)[^[[\]]+(?=\]$)/,lookbehind:!0,inside:n,alias:"language-javascript"},punctuation:/[=[\]]/}}}),a.languages.insertBefore("jsdoc","keyword",{"class-name":[{pattern:/(@[a-z]+\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/,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:n,alias:"language-javascript"}}}}),e.addSupport(["javascript"],a.languages.jsdoc)}(Prism); \ No newline at end of file +!function(a){{var e=a.languages.javascript;/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source}a.languages.jsdoc=a.languages.extend("javadoclike",{parameter:{pattern:/(@(?:param|arg|argument)\s+(?:\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/,lookbehind:!0,inside:{code:{pattern:/(\w=)[^[[\]]+(?=\]$)/,lookbehind:!0,inside:e,alias:"language-javascript"},punctuation:/[=[\]]/}}}),a.languages.insertBefore("jsdoc","keyword",{"class-name":[{pattern:/(@[a-z]+\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/,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.min.js b/components/prism-phpdoc.min.js index e2c1361db3..dce5ffa123 100644 --- a/components/prism-phpdoc.min.js +++ b/components/prism-phpdoc.min.js @@ -1 +1 @@ -!function(e){var a=/(?:[a-zA-Z]\w*|[|\\[\]])+/.source;e.languages.phpdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp("("+/@(?:global|param|property(?:-read|-write)?|var)\s+/.source+"(?:"+a+"\\s+)?)"+/\$\w+/.source),lookbehind:!0}}),e.languages.insertBefore("phpdoc","keyword",{"class-name":[{pattern:RegExp(/(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\s+)/.source+a),lookbehind:!0,inside:{keyword:/\b(?:callback|resource|boolean|integer|double|object|string|array|false|float|mixed|bool|null|self|true|void|int)\b/,punctuation:/[|\\[\]()]/}}]});var r=e.languages.javadoclike;r.addSupport(["php"],e.languages.phpdoc)}(Prism); \ No newline at end of file +!function(e){var a=/(?:[a-zA-Z]\w*|[|\\[\]])+/.source;e.languages.phpdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp("("+/@(?:global|param|property(?:-read|-write)?|var)\s+/.source+"(?:"+a+"\\s+)?)"+/\$\w+/.source),lookbehind:!0}}),e.languages.insertBefore("phpdoc","keyword",{"class-name":[{pattern:RegExp(/(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\s+)/.source+a),lookbehind:!0,inside:{keyword:/\b(?:callback|resource|boolean|integer|double|object|string|array|false|float|mixed|bool|null|self|true|void|int)\b/,punctuation:/[|\\[\]()]/}}]}),e.languages.javadoclike.addSupport(["php"],e.languages.phpdoc)}(Prism); \ No newline at end of file diff --git a/plugins/autoloader/prism-autoloader.js b/plugins/autoloader/prism-autoloader.js index 89100d4bc3..3fe0341082 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","javadoc":["java","javadoclike"],"jolie":"clike","jsdoc":["javascript","javadoclike"],"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","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"],"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","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 eb53a08f10..bc518e1977 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 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:["java","javadoclike"],jolie:"clike",jsdoc:["javascript","javadoclike"],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",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 +!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"],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",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/tests/languages/javadoc/code_feature.test b/tests/languages/javadoc/code_feature.test index 9ff3259a3e..657098773f 100644 --- a/tests/languages/javadoc/code_feature.test +++ b/tests/languages/javadoc/code_feature.test @@ -31,7 +31,14 @@ ]], ["punctuation", "}"], ".\n * ", - ["tag", ""], + + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "code" + ]], + ["punctuation", ">"] + ]], ["code-section", [ ["code", [ "Foo", @@ -42,10 +49,29 @@ ["punctuation", ")"] ]] ]], - ["tag", ""], + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], "\n * ", - ["tag", "

"],
-	["tag", ""],
+
+	["tag", [
+		["tag", [
+			["punctuation", "<"],
+			"pre"
+		]],
+		["punctuation", ">"]
+	]],
+	["tag", [
+		["tag", [
+			["punctuation", "<"],
+			"code"
+		]],
+		["punctuation", ">"]
+	]],
 	["code-section", [
 		"* ",
 		["code", [
@@ -85,8 +111,20 @@
 		]],
 		"\n *"
 	]],
-	["tag", ""],
-	["tag", "
"], + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], "\n */" ] diff --git a/tests/languages/javadoc/tag_feature.test b/tests/languages/javadoc/tag_feature.test index 73f151c260..81b49a51f5 100644 --- a/tests/languages/javadoc/tag_feature.test +++ b/tests/languages/javadoc/tag_feature.test @@ -17,27 +17,98 @@ [ "/**\n * ", - ["tag", "

"], + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "p" + ]], + ["punctuation", ">"] + ]], "\n * ", - ["tag", ""], + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "table" + ]], + ["punctuation", ">"] + ]], "\n * ", - ["tag", ""], + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "tr" + ]], + ["punctuation", ">"] + ]], "\n * ", - ["tag", ""], + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], "\n * ", - ["tag", ""], + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], "\n * ", - ["tag", ""], + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], "\n * ", - ["tag", "
"], + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "td" + ]], + ["punctuation", ">"] + ]], "\n * foo\n * ", - ["tag", ""], + ["tag", [ + ["tag", [ + ["punctuation", "<"], + "td" + ]], + ["punctuation", ">"] + ]], "\n * bar\n * ", - ["tag", "
"], + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], "\n * ", - ["tag", ""], + ["tag", [ + ["tag", [ + ["punctuation", "<"], "a"]], + ["attr-name", ["href"]], + ["attr-value", [ + ["punctuation", "="], + ["punctuation", "\""], + "example.com", + ["punctuation", "\""] + ]], + ["punctuation", ">"] + ]], "some link", - ["tag", ""], + ["tag", [ + ["tag", [ + ["punctuation", ""] + ]], "\n */" ] From db8f312203db3ec53b077744118d1f5769354d5c Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Sun, 2 Dec 2018 11:24:15 +0100 Subject: [PATCH 14/21] Fixed test --- tests/languages/javadoc/code_feature.test | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/languages/javadoc/code_feature.test b/tests/languages/javadoc/code_feature.test index 657098773f..c9e52394c3 100644 --- a/tests/languages/javadoc/code_feature.test +++ b/tests/languages/javadoc/code_feature.test @@ -27,7 +27,9 @@ ["punctuation", "{"], ["keyword", "@code"], ["code-section", [ - ["code", ["null"]] + ["code", [ + ["keyword", "null"] + ]] ]], ["punctuation", "}"], ".\n * ", @@ -41,11 +43,11 @@ ]], ["code-section", [ ["code", [ - "Foo", + ["class-name", "Foo"], ["punctuation", "."], ["function", "bar"], ["punctuation", "("], - "null", + ["keyword", "null"], ["punctuation", ")"] ]] ]], From 883337f4deed5c535c188946637f99a045ae510a Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Sun, 2 Dec 2018 14:21:36 +0100 Subject: [PATCH 15/21] JSDoc improvements --- components/prism-jsdoc.js | 27 ++++++++++++++------ components/prism-jsdoc.min.js | 2 +- tests/languages/jsdoc/keyword_feature.test | 10 -------- tests/languages/jsdoc/parameter_feature.test | 14 +++++----- 4 files changed, 27 insertions(+), 26 deletions(-) diff --git a/components/prism-jsdoc.js b/components/prism-jsdoc.js index 6df4ae56e2..c244ff3e6a 100644 --- a/components/prism-jsdoc.js +++ b/components/prism-jsdoc.js @@ -2,28 +2,39 @@ var javascript = Prism.languages.javascript; - var type = /\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source; + var type = /{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}/.source; + var parameterPrefix = '(@(?:param|arg|argument)\\s+(?:' + type + '\\s+)?)'; Prism.languages.jsdoc = Prism.languages.extend('javadoclike', { 'parameter': { - pattern: /(@(?:param|arg|argument)\s+(?:\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/, + // @param {string} foo - foo bar + pattern: RegExp(parameterPrefix + /[$\w\xA0-\uFFFF]+(?=\s|$)/.source), + lookbehind: true + } + }); + + Prism.languages.insertBefore('jsdoc', 'keyword', { + 'optional-parameter': { + // @param {string} [foo="bar"] foo bar + pattern: RegExp(parameterPrefix + /\[[$\w\xA0-\uFFFF]+(?:=[^[\]]+)?\](?=\s|$)/.source), lookbehind: true, inside: { + 'parameter': { + pattern: /(^\[)[$\w\xA0-\uFFFF]+/, + lookbehind: true + }, 'code': { - pattern: /(\w=)[^[[\]]+(?=\]$)/, + pattern: /(=)[\s\S]*(?=\]$)/, lookbehind: true, inside: javascript, alias: 'language-javascript' }, 'punctuation': /[=[\]]/ } - } - }); - - Prism.languages.insertBefore('jsdoc', 'keyword', { + }, 'class-name': [ { - pattern: /(@[a-z]+\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/, + pattern: RegExp('(@[a-z]+\\s+)' + type), lookbehind: true, inside: { 'punctuation': /[.,:?=<>|{}()[\]]/ diff --git a/components/prism-jsdoc.min.js b/components/prism-jsdoc.min.js index ce3ed3786a..3a5be641cb 100644 --- a/components/prism-jsdoc.min.js +++ b/components/prism-jsdoc.min.js @@ -1 +1 @@ -!function(a){{var e=a.languages.javascript;/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source}a.languages.jsdoc=a.languages.extend("javadoclike",{parameter:{pattern:/(@(?:param|arg|argument)\s+(?:\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}\s+)?)(?:\w+|\[\w+(?:=[^[[\]]+)?\])(?=\s|$)/,lookbehind:!0,inside:{code:{pattern:/(\w=)[^[[\]]+(?=\]$)/,lookbehind:!0,inside:e,alias:"language-javascript"},punctuation:/[=[\]]/}}}),a.languages.insertBefore("jsdoc","keyword",{"class-name":[{pattern:/(@[a-z]+\s+)\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/,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 +!function(e){var a=e.languages.javascript,n=/{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}/.source,s="(@(?:param|arg|argument)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(s+/[$\w\xA0-\uFFFF]+(?=\s|$)/.source),lookbehind:!0}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(s+/\[[$\w\xA0-\uFFFF]+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF]+/,lookbehind:!0},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:a,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:a,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport(["javascript"],e.languages.jsdoc)}(Prism); \ No newline at end of file diff --git a/tests/languages/jsdoc/keyword_feature.test b/tests/languages/jsdoc/keyword_feature.test index cf23073c34..6a74fc7cba 100644 --- a/tests/languages/jsdoc/keyword_feature.test +++ b/tests/languages/jsdoc/keyword_feature.test @@ -84,8 +84,6 @@ * @version * @yield * @yields - * - * @example ; */ ---------------------------------------------------- @@ -176,14 +174,6 @@ "\n * ", ["keyword", "@version"], "\n * ", ["keyword", "@yield"], "\n * ", ["keyword", "@yields"], - - - "\n *\n * ", ["keyword", "@example"], - ["example", [ - ["code", [ - ["punctuation", ";"] - ]] - ]], "\n */" ] diff --git a/tests/languages/jsdoc/parameter_feature.test b/tests/languages/jsdoc/parameter_feature.test index b1ee33549a..1e586d1afc 100644 --- a/tests/languages/jsdoc/parameter_feature.test +++ b/tests/languages/jsdoc/parameter_feature.test @@ -11,19 +11,19 @@ [ "/**\n * ", ["keyword", "@param"], - ["parameter", ["n"]], + ["parameter", "n"], " - A number.\n * ", ["keyword", "@param"], - ["parameter", [ + ["optional-parameter", [ ["punctuation", "["], - "n", + ["parameter", "n"], ["punctuation", "]"] ]], " - A number.\n * ", ["keyword", "@param"], - ["parameter", [ + ["optional-parameter", [ ["punctuation", "["], - "n", + ["parameter", "n"], ["punctuation", "="], ["code", [ ["number", "1"], @@ -39,7 +39,7 @@ "number", ["punctuation", "}"] ]], - ["parameter", ["n"]], + ["parameter", "n"], " - A number.\n * ", ["keyword", "@param"], ["class-name", [ @@ -64,7 +64,7 @@ ["punctuation", "}"], ["punctuation", "}"] ]], - ["parameter", ["map"]], + ["parameter", "map"], "\n */" ] From 686abbf1ec558d64c624c68a5e5eae930eeda2fb Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Sun, 2 Dec 2018 14:44:14 +0100 Subject: [PATCH 16/21] PHPDoc improvements --- components/prism-phpdoc.js | 4 ++-- components/prism-phpdoc.min.js | 2 +- .../languages/phpdoc/class-name_feature.test | 20 +++++++++++++------ 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/components/prism-phpdoc.js b/components/prism-phpdoc.js index 019b465dfd..a7e6269efa 100644 --- a/components/prism-phpdoc.js +++ b/components/prism-phpdoc.js @@ -4,7 +4,7 @@ Prism.languages.phpdoc = Prism.languages.extend('javadoclike', { 'parameter': { - pattern: RegExp('(' + /@(?:global|param|property(?:-read|-write)?|var)\s+/.source + '(?:' + typeExpression + '\\s+)?)' + /\$\w+/.source), + pattern: RegExp('(@(?:global|param|property(?:-read|-write)?|var)\\s+(?:' + typeExpression + '\\s+)?)\\$\\w+'), lookbehind: true } }); @@ -12,7 +12,7 @@ Prism.languages.insertBefore('phpdoc', 'keyword', { 'class-name': [ { - pattern: RegExp(/(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\s+)/.source + typeExpression), + 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/, diff --git a/components/prism-phpdoc.min.js b/components/prism-phpdoc.min.js index dce5ffa123..4fa96cc446 100644 --- a/components/prism-phpdoc.min.js +++ b/components/prism-phpdoc.min.js @@ -1 +1 @@ -!function(e){var a=/(?:[a-zA-Z]\w*|[|\\[\]])+/.source;e.languages.phpdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp("("+/@(?:global|param|property(?:-read|-write)?|var)\s+/.source+"(?:"+a+"\\s+)?)"+/\$\w+/.source),lookbehind:!0}}),e.languages.insertBefore("phpdoc","keyword",{"class-name":[{pattern:RegExp(/(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\s+)/.source+a),lookbehind:!0,inside:{keyword:/\b(?:callback|resource|boolean|integer|double|object|string|array|false|float|mixed|bool|null|self|true|void|int)\b/,punctuation:/[|\\[\]()]/}}]}),e.languages.javadoclike.addSupport(["php"],e.languages.phpdoc)}(Prism); \ No newline at end of file +!function(a){var e=/(?:[a-zA-Z]\w*|[|\\[\]])+/.source;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/tests/languages/phpdoc/class-name_feature.test b/tests/languages/phpdoc/class-name_feature.test index 281102e366..b55784be3a 100644 --- a/tests/languages/phpdoc/class-name_feature.test +++ b/tests/languages/phpdoc/class-name_feature.test @@ -1,8 +1,8 @@ /** - * @param string $parameter a parameter + * @param string|null $parameter a parameter * @return self - * @var MyClass - * @throws Exception if something bad happens + * @var MyClass[int] + * @throws \foo\MyException if something bad happens */ ---------------------------------------------------- @@ -11,7 +11,9 @@ "/**\n * ", ["keyword", "@param"], ["class-name", [ - ["keyword", "string"] + ["keyword", "string"], + ["punctuation", "|"], + ["keyword", "null"] ]], ["parameter", "$parameter"], " a parameter\n * ", @@ -22,12 +24,18 @@ "\n * ", ["keyword", "@var"], ["class-name", [ - "MyClass" + "MyClass", + ["punctuation", "["], + ["keyword", "int"], + ["punctuation", "]"] ]], "\n * ", ["keyword", "@throws"], ["class-name", [ - "Exception" + ["punctuation", "\\"], + "foo", + ["punctuation", "\\"], + "MyException" ]], " if something bad happens\n */" ] From 602568bac5a44575e4a297f64fe122dd0fd4b76a Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Sun, 2 Dec 2018 15:01:57 +0100 Subject: [PATCH 17/21] addSupport improvements --- components/prism-javadoc.js | 2 +- components/prism-javadoc.min.js | 2 +- components/prism-javadoclike.js | 21 ++++++++++++++------- components/prism-javadoclike.min.js | 2 +- components/prism-jsdoc.js | 2 +- components/prism-jsdoc.min.js | 2 +- components/prism-phpdoc.js | 2 +- components/prism-phpdoc.min.js | 2 +- 8 files changed, 21 insertions(+), 14 deletions(-) diff --git a/components/prism-javadoc.js b/components/prism-javadoc.js index 51513fdb49..86d0dc1a89 100644 --- a/components/prism-javadoc.js +++ b/components/prism-javadoc.js @@ -50,5 +50,5 @@ 'tag': Prism.languages.markup.tag, }); - Prism.languages.javadoclike.addSupport(['java'], Prism.languages.javadoc); + Prism.languages.javadoclike.addSupport('java', Prism.languages.javadoc); }(Prism)); diff --git a/components/prism-javadoc.min.js b/components/prism-javadoc.min.js index 5e7223c33f..760867af3f 100644 --- a/components/prism-javadoc.min.js +++ b/components/prism-javadoc.min.js @@ -1 +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 +!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 index 5bacff1e10..7b0c4a7e7d 100644 --- a/components/prism-javadoclike.js +++ b/components/prism-javadoclike.js @@ -25,8 +25,9 @@ var tokenName = 'doc-comment'; var grammar = Prism.languages[lang]; - if (!grammar) return; - + if (!grammar) { + return; + } var token = grammar[tokenName]; if (!token) { @@ -34,21 +35,22 @@ var definition = {}; definition[tokenName] = { pattern: /(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/, - alias: 'comment', - inside: {} + alias: 'comment' }; grammar = Prism.languages.insertBefore(lang, 'comment', definition); token = grammar[tokenName]; + } - } else if (token instanceof RegExp) { // convert existing regex to object + 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) + if (token[i] instanceof RegExp) { token[i] = { pattern: token[i] }; + } callback(token[i]); } } else { @@ -62,10 +64,15 @@ * Adds doc-comment support to the given languages for the given documentation language. */ value: function addSupport(languages, docLanguage) { + if (typeof languages === 'string') { + languages = [languages]; + } + languages.forEach(function (lang) { docCommentSupport(lang, function (pattern) { - if (!pattern.inside) + if (!pattern.inside) { pattern.inside = {}; + } pattern.inside.rest = docLanguage; }); }); diff --git a/components/prism-javadoclike.min.js b/components/prism-javadoclike.min.js index 420075c372..1f8ed22ae8 100644 --- a/components/prism-javadoclike.min.js +++ b/components/prism-javadoclike.min.js @@ -1 +1 @@ -!function(e){function a(a,n){var t="doc-comment",r=e.languages[a];if(r){var i=r[t];if(i)i instanceof RegExp&&(i=r[t]={pattern:i});else{var o={};o[t]={pattern:/(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/,alias:"comment",inside:{}},r=e.languages.insertBefore(a,"comment",o),i=r[t]}if("Array"===e.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)}}var n=e.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(n,"addSupport",{value:function(e,n){e.forEach(function(e){a(e,function(e){e.inside||(e.inside={}),e.inside.rest=n})})}}),n.addSupport(["java","javascript","php"],n)}(Prism); \ No newline at end of file +!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)}}var n=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(n,"addSupport",{value:function(a,n){"string"==typeof a&&(a=[a]),a.forEach(function(a){e(a,function(a){a.inside||(a.inside={}),a.inside.rest=n})})}}),n.addSupport(["java","javascript","php"],n)}(Prism); \ No newline at end of file diff --git a/components/prism-jsdoc.js b/components/prism-jsdoc.js index c244ff3e6a..acd83a51e2 100644 --- a/components/prism-jsdoc.js +++ b/components/prism-jsdoc.js @@ -62,6 +62,6 @@ } }); - Prism.languages.javadoclike.addSupport(['javascript'], Prism.languages.jsdoc); + Prism.languages.javadoclike.addSupport('javascript', Prism.languages.jsdoc); }(Prism)); diff --git a/components/prism-jsdoc.min.js b/components/prism-jsdoc.min.js index 3a5be641cb..8150efa4a1 100644 --- a/components/prism-jsdoc.min.js +++ b/components/prism-jsdoc.min.js @@ -1 +1 @@ -!function(e){var a=e.languages.javascript,n=/{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}/.source,s="(@(?:param|arg|argument)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(s+/[$\w\xA0-\uFFFF]+(?=\s|$)/.source),lookbehind:!0}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(s+/\[[$\w\xA0-\uFFFF]+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF]+/,lookbehind:!0},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:a,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:a,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport(["javascript"],e.languages.jsdoc)}(Prism); \ No newline at end of file +!function(e){var a=e.languages.javascript,n=/{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}/.source,s="(@(?:param|arg|argument)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(s+/[$\w\xA0-\uFFFF]+(?=\s|$)/.source),lookbehind:!0}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(s+/\[[$\w\xA0-\uFFFF]+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF]+/,lookbehind:!0},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:a,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:a,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(Prism); \ No newline at end of file diff --git a/components/prism-phpdoc.js b/components/prism-phpdoc.js index a7e6269efa..c3913ddb66 100644 --- a/components/prism-phpdoc.js +++ b/components/prism-phpdoc.js @@ -22,6 +22,6 @@ ], }); - Prism.languages.javadoclike.addSupport(['php'], Prism.languages.phpdoc); + Prism.languages.javadoclike.addSupport('php', Prism.languages.phpdoc); }(Prism)); diff --git a/components/prism-phpdoc.min.js b/components/prism-phpdoc.min.js index 4fa96cc446..285aca0dc3 100644 --- a/components/prism-phpdoc.min.js +++ b/components/prism-phpdoc.min.js @@ -1 +1 @@ -!function(a){var e=/(?:[a-zA-Z]\w*|[|\\[\]])+/.source;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 +!function(a){var e=/(?:[a-zA-Z]\w*|[|\\[\]])+/.source;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 From 4e7ac100ddfaaad5440eeb7a83b0dbfadcf5920a Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Mon, 3 Dec 2018 20:58:17 +0100 Subject: [PATCH 18/21] JavaDocLike improvement --- components/prism-javadoclike.js | 37 +++++++++++++++-------------- components/prism-javadoclike.min.js | 2 +- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/components/prism-javadoclike.js b/components/prism-javadoclike.js index 7b0c4a7e7d..f095e6c8f1 100644 --- a/components/prism-javadoclike.js +++ b/components/prism-javadoclike.js @@ -58,27 +58,28 @@ } } - Object.defineProperty(javaDocLike, 'addSupport', { - - /** - * Adds doc-comment support to the given languages for the given documentation language. - */ - value: function addSupport(languages, docLanguage) { - if (typeof languages === 'string') { - languages = [languages]; - } + /** + * Adds doc-comment support to the given languages for the given documentation language. + * + * @param {string[]|string} languages + * @param {Grammar} 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; - }); + 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); diff --git a/components/prism-javadoclike.min.js b/components/prism-javadoclike.min.js index 1f8ed22ae8..ad565b5e41 100644 --- a/components/prism-javadoclike.min.js +++ b/components/prism-javadoclike.min.js @@ -1 +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)}}var n=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(n,"addSupport",{value:function(a,n){"string"==typeof a&&(a=[a]),a.forEach(function(a){e(a,function(a){a.inside||(a.inside={}),a.inside.rest=n})})}}),n.addSupport(["java","javascript","php"],n)}(Prism); \ No newline at end of file +!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 From e7e604dbea37806e4e425f764b7f9434092b39fa Mon Sep 17 00:00:00 2001 From: RunDevelopment Date: Mon, 3 Dec 2018 22:46:20 +0100 Subject: [PATCH 19/21] Improved JSDoc --- components/prism-jsdoc.js | 20 +++++++++++------ components/prism-jsdoc.min.js | 2 +- tests/languages/jsdoc/parameter_feature.test | 23 +++++++++++++++----- 3 files changed, 32 insertions(+), 13 deletions(-) diff --git a/components/prism-jsdoc.js b/components/prism-jsdoc.js index acd83a51e2..161f77c699 100644 --- a/components/prism-jsdoc.js +++ b/components/prism-jsdoc.js @@ -3,25 +3,31 @@ var javascript = Prism.languages.javascript; var type = /{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}/.source; - var parameterPrefix = '(@(?:param|arg|argument)\\s+(?:' + type + '\\s+)?)'; + 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 + pattern: RegExp(parameterPrefix + /[$\w\xA0-\uFFFF.]+(?=\s|$)/.source), + lookbehind: true, + inside: { + 'punctuation': /\./ + } } }); Prism.languages.insertBefore('jsdoc', 'keyword', { 'optional-parameter': { - // @param {string} [foo="bar"] foo bar - pattern: RegExp(parameterPrefix + /\[[$\w\xA0-\uFFFF]+(?:=[^[\]]+)?\](?=\s|$)/.source), + // @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 + pattern: /(^\[)[$\w\xA0-\uFFFF\.]+/, + lookbehind: true, + inside: { + 'punctuation': /\./ + } }, 'code': { pattern: /(=)[\s\S]*(?=\]$)/, diff --git a/components/prism-jsdoc.min.js b/components/prism-jsdoc.min.js index 8150efa4a1..2cb7aa3931 100644 --- a/components/prism-jsdoc.min.js +++ b/components/prism-jsdoc.min.js @@ -1 +1 @@ -!function(e){var a=e.languages.javascript,n=/{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}/.source,s="(@(?:param|arg|argument)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(s+/[$\w\xA0-\uFFFF]+(?=\s|$)/.source),lookbehind:!0}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(s+/\[[$\w\xA0-\uFFFF]+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF]+/,lookbehind:!0},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:a,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:a,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(Prism); \ No newline at end of file +!function(e){var a=e.languages.javascript,n=/{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}/.source,s="(@(?:param|arg|argument|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(s+/[$\w\xA0-\uFFFF.]+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(s+/\[[$\w\xA0-\uFFFF.]+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:a,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:a,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(Prism); \ No newline at end of file diff --git a/tests/languages/jsdoc/parameter_feature.test b/tests/languages/jsdoc/parameter_feature.test index 1e586d1afc..80747a3753 100644 --- a/tests/languages/jsdoc/parameter_feature.test +++ b/tests/languages/jsdoc/parameter_feature.test @@ -4,6 +4,7 @@ * @param [n=1+2] - A number. * @param {number} n - A number. * @param {{[x: string]: {start: number, end?: number}}} map + * @param {any} foo.bar */ ---------------------------------------------------- @@ -11,19 +12,19 @@ [ "/**\n * ", ["keyword", "@param"], - ["parameter", "n"], + ["parameter", ["n"]], " - A number.\n * ", ["keyword", "@param"], ["optional-parameter", [ ["punctuation", "["], - ["parameter", "n"], + ["parameter", ["n"]], ["punctuation", "]"] ]], " - A number.\n * ", ["keyword", "@param"], ["optional-parameter", [ ["punctuation", "["], - ["parameter", "n"], + ["parameter", ["n"]], ["punctuation", "="], ["code", [ ["number", "1"], @@ -39,7 +40,7 @@ "number", ["punctuation", "}"] ]], - ["parameter", "n"], + ["parameter", ["n"]], " - A number.\n * ", ["keyword", "@param"], ["class-name", [ @@ -64,7 +65,19 @@ ["punctuation", "}"], ["punctuation", "}"] ]], - ["parameter", "map"], + ["parameter", ["map"]], + "\n * ", + ["keyword", "@param"], + ["class-name", [ + ["punctuation", "{"], + "any", + ["punctuation", "}"] + ]], + ["parameter", [ + "foo", + ["punctuation", "."], + "bar" + ]], "\n */" ] From 7d7477bb57382124838448d5adfc4beed33f9b01 Mon Sep 17 00:00:00 2001 From: RunDevelopment Date: Mon, 3 Dec 2018 23:17:15 +0100 Subject: [PATCH 20/21] Fixed empty comment bug --- components/prism-javadoclike.js | 2 +- components/prism-javadoclike.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/prism-javadoclike.js b/components/prism-javadoclike.js index f095e6c8f1..63143b2566 100644 --- a/components/prism-javadoclike.js +++ b/components/prism-javadoclike.js @@ -34,7 +34,7 @@ // add doc comment: /** */ var definition = {}; definition[tokenName] = { - pattern: /(^|[^\\])\/\*\*[\s\S]*?(?:\*\/|$)/, + pattern: /(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/, alias: 'comment' }; diff --git a/components/prism-javadoclike.min.js b/components/prism-javadoclike.min.js index ad565b5e41..f647d912cf 100644 --- a/components/prism-javadoclike.min.js +++ b/components/prism-javadoclike.min.js @@ -1 +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 +!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 From f67d8ca8c8459e0c3a503ae11afd86bf381b22c3 Mon Sep 17 00:00:00 2001 From: RunDevelopment Date: Mon, 3 Dec 2018 23:20:15 +0100 Subject: [PATCH 21/21] Improved doc --- components/prism-javadoclike.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/prism-javadoclike.js b/components/prism-javadoclike.js index 63143b2566..10dc2e3388 100644 --- a/components/prism-javadoclike.js +++ b/components/prism-javadoclike.js @@ -62,7 +62,7 @@ * Adds doc-comment support to the given languages for the given documentation language. * * @param {string[]|string} languages - * @param {Grammar} docLanguage + * @param {Object} docLanguage */ function addSupport(languages, docLanguage) { if (typeof languages === 'string') {