Repository: NilsJPWerner/autoDocstring
Pull request #267 (2023-07-29 06:07:46)

Update node.js to version 18 for github actions
Updated the version of node.js used in github actions and updated the version of some dev-dependencies packages. #265 


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f38db15..334ae93 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,9 @@
 
 ## Unreleased
 
+-   Added doxygen format support ([#120](https://github.com/NilsJPWerner/autoDocstring/issues/120)) (@daluar @PhilipNelson5)
+-   Disable HTML-escaping behavior globally ([#235](https://github.com/NilsJPWerner/autoDocstring/issues/235)) (@PhilipNelson5)
+
 [All Changes](https://github.com/NilsJPWerner/autoDocstring/compare/v0.6.1...master)
 
 ## [0.6.1](https://github.com/NilsJPWerner/autoDocstring/tree/v0.6.1) - 2022-02-15
diff --git a/README.md b/README.md
index f2f25fe..dacaf68 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-[![Installs](https://vsmarketplacebadge.apphb.com/installs-short/njpwerner.autodocstring.svg)](https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring)
-[![Rating](https://vsmarketplacebadge.apphb.com/rating-short/njpwerner.autodocstring.svg)](https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring&ssr=false#review-details)
+[![Installs](https://vsmarketplacebadges.dev/installs-short/njpwerner.autodocstring.svg)](https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring)
+[![Rating](https://vsmarketplacebadges.dev/rating-short/njpwerner.autodocstring.svg)](https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring&ssr=false#review-details)
 [![Build Status](https://github.com/NilsJPWerner/autoDocstring/actions/workflows/test_and_publish.yml/badge.svg)](https://github.com/NilsJPWerner/autoDocstring/actions/workflows/test_and_publish.yml)
 [![Github Sponsorship](https://img.shields.io/badge/sponsor-5A5A5A?style=flat&logo=GitHub-Sponsors)](https://github.com/sponsors/NilsJPWerner)
 
@@ -20,12 +20,13 @@ Visual Studio Code extension to quickly generate docstrings for python functions
 
 To turn off type generation in docstrings use the `-notypes` template of the desired format. The docBlockr format is a typed version of PEP0257.
 
+-   [docBlockr](docs/docblockr.md)
+-   [doxygen](docs/doxygen.md)
 -   [google](docs/google.md)
--   [sphinx](docs/sphinx.md)
 -   [numpy](docs/numpy.md)
--   [docBlockr](docs/docblockr.md)
 -   [one-line-sphinx](docs/one-line-sphinx.md)
 -   [pep257](docs/pep257.md)
+-   [sphinx](docs/sphinx.md)
 
 ## Usage
 
diff --git a/docs/doxygen.md b/docs/doxygen.md
new file mode 100644
index 0000000..d8cd9c5
--- /dev/null
+++ b/docs/doxygen.md
@@ -0,0 +1,19 @@
+# Doxygen Docstring Format
+
+```python
+def abc(a: int, c = [1,2]):
+    """!
+    @brief _summary_
+
+    @param a (int): _description_
+    @param c (list, optional): _description_. Defaults to [1,2].
+
+    @return (_type_): _description_
+
+    @exception AssertionError: _description_
+    """
+    if a > 10:
+        raise AssertionError("a is more than 10")
+
+    return c
+```
diff --git a/package-lock.json b/package-lock.json
index 4c0243f..19f2062 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -29,7 +29,7 @@
                 "eslint": "^8.9.0",
                 "eslint-config-prettier": "^8.3.0",
                 "eslint-plugin-import": "^2.25.4",
-                "eslint-plugin-jsdoc": "^37.9.1",
+                "eslint-plugin-jsdoc": "^46.4.4",
                 "eslint-plugin-prefer-arrow": "^1.2.3",
                 "mocha": "^9.2.0",
                 "ts-node": "^10.5.0",
@@ -61,17 +61,17 @@
             }
         },
         "node_modules/@es-joy/jsdoccomment": {
-            "version": "0.19.0",
-            "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.19.0.tgz",
-            "integrity": "sha512-lRx/5ChsOwv7gIU05m8Ur1Rxa4/XkE23wTsX8XFBGWRYrCcCrngPf6yGJMG6n9dqnyDehPrBBVeFIm2INEIeQA==",
+            "version": "0.39.4",
+            "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.39.4.tgz",
+            "integrity": "sha512-Jvw915fjqQct445+yron7Dufix9A+m9j1fCJYlCo1FWlRvTxa3pjJelxdSTdaLWcTwRU6vbL+NYjO4YuNIS5Qg==",
             "dev": true,
             "dependencies": {
-                "comment-parser": "1.3.0",
-                "esquery": "^1.4.0",
-                "jsdoc-type-pratt-parser": "~2.2.2"
+                "comment-parser": "1.3.1",
+                "esquery": "^1.5.0",
+                "jsdoc-type-pratt-parser": "~4.0.0"
             },
             "engines": {
-                "node": "^12 || ^14 || ^16 || ^17"
+                "node": ">=16"
             }
         },
         "node_modules/@eslint/eslintrc": {
@@ -563,6 +563,15 @@
                 "node": ">= 8"
             }
         },
+        "node_modules/are-docs-informative": {
+            "version": "0.0.2",
+            "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz",
+            "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==",
+            "dev": true,
+            "engines": {
+                "node": ">=14"
+            }
+        },
         "node_modules/arg": {
             "version": "4.1.3",
             "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
@@ -718,6 +727,18 @@
                 "node": ">=0.2.0"
             }
         },
+        "node_modules/builtin-modules": {
+            "version": "3.3.0",
+            "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
+            "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
         "node_modules/call-bind": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
@@ -876,9 +897,9 @@
             "dev": true
         },
         "node_modules/comment-parser": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.0.tgz",
-            "integrity": "sha512-hRpmWIKgzd81vn0ydoWoyPoALEOnF4wt8yKD35Ib1D6XC2siLiYaiqfGkYrunuKdsXGwpBpHU3+9r+RVw2NZfA==",
+            "version": "1.3.1",
+            "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz",
+            "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==",
             "dev": true,
             "engines": {
                 "node": ">= 12.0.0"
@@ -1368,27 +1389,45 @@
             "dev": true
         },
         "node_modules/eslint-plugin-jsdoc": {
-            "version": "37.9.1",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-37.9.1.tgz",
-            "integrity": "sha512-ynIsYL+rOtIKWOttAYWCgOJawPwYKexcX3cuoYHwifvz4+uY+MZ2un5nMHBULigdSITnQ5/ZSHpO/O1nwv/uJA==",
+            "version": "46.4.5",
+            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.4.5.tgz",
+            "integrity": "sha512-HjTuxqDYplAQFu29F3MHFCDDBgeqOxPXI6TyBhL0u2rr4XntJ0z3C9PmJvpjFscKdHwkZDN/0l1QCG0QwyRi4g==",
             "dev": true,
             "dependencies": {
-                "@es-joy/jsdoccomment": "~0.19.0",
-                "comment-parser": "1.3.0",
-                "debug": "^4.3.3",
+                "@es-joy/jsdoccomment": "~0.39.4",
+                "are-docs-informative": "^0.0.2",
+                "comment-parser": "1.3.1",
+                "debug": "^4.3.4",
                 "escape-string-regexp": "^4.0.0",
-                "esquery": "^1.4.0",
-                "regextras": "^0.8.0",
-                "semver": "^7.3.5",
+                "esquery": "^1.5.0",
+                "is-builtin-module": "^3.2.1",
+                "semver": "^7.5.4",
                 "spdx-expression-parse": "^3.0.1"
             },
             "engines": {
-                "node": "^12 || ^14 || ^16 || ^17"
+                "node": ">=16"
             },
             "peerDependencies": {
                 "eslint": "^7.0.0 || ^8.0.0"
             }
         },
+        "node_modules/eslint-plugin-jsdoc/node_modules/debug": {
+            "version": "4.3.4",
+            "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+            "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+            "dev": true,
+            "dependencies": {
+                "ms": "2.1.2"
+            },
+            "engines": {
+                "node": ">=6.0"
+            },
+            "peerDependenciesMeta": {
+                "supports-color": {
+                    "optional": true
+                }
+            }
+        },
         "node_modules/eslint-plugin-prefer-arrow": {
             "version": "1.2.3",
             "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz",
@@ -1496,9 +1535,9 @@
             }
         },
         "node_modules/esquery": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
-            "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+            "version": "1.5.0",
+            "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+            "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
             "dev": true,
             "dependencies": {
                 "estraverse": "^5.1.0"
@@ -2064,6 +2103,21 @@
                 "url": "https://github.com/sponsors/ljharb"
             }
         },
+        "node_modules/is-builtin-module": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
+            "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
+            "dev": true,
+            "dependencies": {
+                "builtin-modules": "^3.3.0"
+            },
+            "engines": {
+                "node": ">=6"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
         "node_modules/is-callable": {
             "version": "1.2.4",
             "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
@@ -2282,9 +2336,9 @@
             }
         },
         "node_modules/jsdoc-type-pratt-parser": {
-            "version": "2.2.3",
-            "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.3.tgz",
-            "integrity": "sha512-QPyxq62Q8veBSDtDrWmqaEPjSCeknUV9dH/OAGt3q9an8qC8UQDqitQiw1NvoMskIESpoRZ6qzt4H3rlK0xo8A==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz",
+            "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==",
             "dev": true,
             "engines": {
                 "node": ">=12.0.0"
@@ -2843,15 +2897,6 @@
                 "url": "https://github.com/sponsors/mysticatea"
             }
         },
-        "node_modules/regextras": {
-            "version": "0.8.0",
-            "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz",
-            "integrity": "sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ==",
-            "dev": true,
-            "engines": {
-                "node": ">=0.1.14"
-            }
-        },
         "node_modules/require-directory": {
             "version": "2.1.1",
             "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -2956,9 +3001,9 @@
             ]
         },
         "node_modules/semver": {
-            "version": "7.3.5",
-            "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-            "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+            "version": "7.5.4",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+            "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
             "dev": true,
             "dependencies": {
                 "lru-cache": "^6.0.0"
@@ -3655,14 +3700,14 @@
             }
         },
         "@es-joy/jsdoccomment": {
-            "version": "0.19.0",
-            "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.19.0.tgz",
-            "integrity": "sha512-lRx/5ChsOwv7gIU05m8Ur1Rxa4/XkE23wTsX8XFBGWRYrCcCrngPf6yGJMG6n9dqnyDehPrBBVeFIm2INEIeQA==",
+            "version": "0.39.4",
+            "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.39.4.tgz",
+            "integrity": "sha512-Jvw915fjqQct445+yron7Dufix9A+m9j1fCJYlCo1FWlRvTxa3pjJelxdSTdaLWcTwRU6vbL+NYjO4YuNIS5Qg==",
             "dev": true,
             "requires": {
-                "comment-parser": "1.3.0",
-                "esquery": "^1.4.0",
-                "jsdoc-type-pratt-parser": "~2.2.2"
+                "comment-parser": "1.3.1",
+                "esquery": "^1.5.0",
+                "jsdoc-type-pratt-parser": "~4.0.0"
             }
         },
         "@eslint/eslintrc": {
@@ -4010,6 +4055,12 @@
                 "picomatch": "^2.0.4"
             }
         },
+        "are-docs-informative": {
+            "version": "0.0.2",
+            "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz",
+            "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==",
+            "dev": true
+        },
         "arg": {
             "version": "4.1.3",
             "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
@@ -4129,6 +4180,12 @@
             "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=",
             "dev": true
         },
+        "builtin-modules": {
+            "version": "3.3.0",
+            "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
+            "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
+            "dev": true
+        },
         "call-bind": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
@@ -4245,9 +4302,9 @@
             "dev": true
         },
         "comment-parser": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.0.tgz",
-            "integrity": "sha512-hRpmWIKgzd81vn0ydoWoyPoALEOnF4wt8yKD35Ib1D6XC2siLiYaiqfGkYrunuKdsXGwpBpHU3+9r+RVw2NZfA==",
+            "version": "1.3.1",
+            "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz",
+            "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==",
             "dev": true
         },
         "concat-map": {
@@ -4671,19 +4728,31 @@
             }
         },
         "eslint-plugin-jsdoc": {
-            "version": "37.9.1",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-37.9.1.tgz",
-            "integrity": "sha512-ynIsYL+rOtIKWOttAYWCgOJawPwYKexcX3cuoYHwifvz4+uY+MZ2un5nMHBULigdSITnQ5/ZSHpO/O1nwv/uJA==",
+            "version": "46.4.5",
+            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.4.5.tgz",
+            "integrity": "sha512-HjTuxqDYplAQFu29F3MHFCDDBgeqOxPXI6TyBhL0u2rr4XntJ0z3C9PmJvpjFscKdHwkZDN/0l1QCG0QwyRi4g==",
             "dev": true,
             "requires": {
-                "@es-joy/jsdoccomment": "~0.19.0",
-                "comment-parser": "1.3.0",
-                "debug": "^4.3.3",
+                "@es-joy/jsdoccomment": "~0.39.4",
+                "are-docs-informative": "^0.0.2",
+                "comment-parser": "1.3.1",
+                "debug": "^4.3.4",
                 "escape-string-regexp": "^4.0.0",
-                "esquery": "^1.4.0",
-                "regextras": "^0.8.0",
-                "semver": "^7.3.5",
+                "esquery": "^1.5.0",
+                "is-builtin-module": "^3.2.1",
+                "semver": "^7.5.4",
                 "spdx-expression-parse": "^3.0.1"
+            },
+            "dependencies": {
+                "debug": {
+                    "version": "4.3.4",
+                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+                    "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+                    "dev": true,
+                    "requires": {
+                        "ms": "2.1.2"
+                    }
+                }
             }
         },
         "eslint-plugin-prefer-arrow": {
@@ -4738,9 +4807,9 @@
             }
         },
         "esquery": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
-            "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+            "version": "1.5.0",
+            "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+            "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
             "dev": true,
             "requires": {
                 "estraverse": "^5.1.0"
@@ -5161,6 +5230,15 @@
                 "has-tostringtag": "^1.0.0"
             }
         },
+        "is-builtin-module": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
+            "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
+            "dev": true,
+            "requires": {
+                "builtin-modules": "^3.3.0"
+            }
+        },
         "is-callable": {
             "version": "1.2.4",
             "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
@@ -5304,9 +5382,9 @@
             }
         },
         "jsdoc-type-pratt-parser": {
-            "version": "2.2.3",
-            "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.3.tgz",
-            "integrity": "sha512-QPyxq62Q8veBSDtDrWmqaEPjSCeknUV9dH/OAGt3q9an8qC8UQDqitQiw1NvoMskIESpoRZ6qzt4H3rlK0xo8A==",
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz",
+            "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==",
             "dev": true
         },
         "json-schema-traverse": {
@@ -5713,12 +5791,6 @@
             "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
             "dev": true
         },
-        "regextras": {
-            "version": "0.8.0",
-            "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz",
-            "integrity": "sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ==",
-            "dev": true
-        },
         "require-directory": {
             "version": "2.1.1",
             "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -5773,9 +5845,9 @@
             "dev": true
         },
         "semver": {
-            "version": "7.3.5",
-            "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-            "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+            "version": "7.5.4",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+            "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
             "dev": true,
             "requires": {
                 "lru-cache": "^6.0.0"
diff --git a/package.json b/package.json
index 91d95e9..0c5fd68 100644
--- a/package.json
+++ b/package.json
@@ -24,14 +24,15 @@
     "keywords": [
         "python",
         "docstring",
-        "google",
-        "numpy",
-        "sphinx",
         "generator",
         "autodocstring",
-        "docblockr",
         "documentation",
-        "pydocstring"
+        "pydocstring",
+        "docblockr",
+        "doxygen",
+        "google",
+        "numpy",
+        "sphinx"
     ],
     "galleryBanner": {},
     "engines": {
@@ -75,14 +76,16 @@
                     "default": "google",
                     "enum": [
                         "docblockr",
-                        "pep257",
+                        "doxygen",
+                        "doxygen-notypes",
                         "google",
                         "google-notypes",
-                        "sphinx",
-                        "sphinx-notypes",
                         "numpy",
                         "numpy-notypes",
-                        "one-line-sphinx"
+                        "one-line-sphinx",
+                        "pep257",
+                        "sphinx",
+                        "sphinx-notypes"
                     ],
                     "description": "Which docstring format to use."
                 },
@@ -165,7 +168,7 @@
         "eslint": "^8.9.0",
         "eslint-config-prettier": "^8.3.0",
         "eslint-plugin-import": "^2.25.4",
-        "eslint-plugin-jsdoc": "^37.9.1",
+        "eslint-plugin-jsdoc": "^46.4.4",
         "eslint-plugin-prefer-arrow": "^1.2.3",
         "mocha": "^9.2.0",
         "ts-node": "^10.5.0",
diff --git a/src/docstring/docstring_factory.ts b/src/docstring/docstring_factory.ts
index 381c412..c1d83b8 100644
--- a/src/docstring/docstring_factory.ts
+++ b/src/docstring/docstring_factory.ts
@@ -2,6 +2,10 @@ import { render } from "mustache";
 import { DocstringParts } from "../docstring_parts";
 import { TemplateData } from "./template_data";
 import { dedent } from "ts-dedent";
+import Mustache = require("mustache");
+
+// Disable HTML-escaping behavior globally
+Mustache.escape = (text: string) => text;
 
 export class DocstringFactory {
     private template: string;
diff --git a/src/docstring/templates/doxygen-notypes.mustache b/src/docstring/templates/doxygen-notypes.mustache
new file mode 100644
index 0000000..9f8f140
--- /dev/null
+++ b/src/docstring/templates/doxygen-notypes.mustache
@@ -0,0 +1,32 @@
+{{! Doxygen Docstring Template }}
+!
+@brief {{summaryPlaceholder}}
+
+{{extendedSummaryPlaceholder}}
+{{#parametersExist}}
+
+{{#args}}
+@param {{var}}: {{descriptionPlaceholder}}
+{{/args}}
+{{#kwargs}}
+@param {{var}}: {{descriptionPlaceholder}}. Defaults to {{&default}}.
+{{/kwargs}}
+{{/parametersExist}}
+{{#returnsExist}}
+
+{{#returns}}
+@return: {{descriptionPlaceholder}}
+{{/returns}}
+{{/returnsExist}}
+{{#exceptionsExist}}
+
+{{#exceptions}}
+@exception: {{descriptionPlaceholder}}
+{{/exceptions}}
+{{/exceptionsExist}}
+{{#yieldsExist}}
+
+{{#yields}}
+@returns: {{descriptionPlaceholder}}
+{{/yields}}
+{{/yieldsExist}}
diff --git a/src/docstring/templates/doxygen.mustache b/src/docstring/templates/doxygen.mustache
new file mode 100644
index 0000000..1efb185
--- /dev/null
+++ b/src/docstring/templates/doxygen.mustache
@@ -0,0 +1,32 @@
+{{! Doxygen Docstring Template }}
+!
+@brief {{summaryPlaceholder}}
+
+{{extendedSummaryPlaceholder}}
+{{#parametersExist}}
+
+{{#args}}
+@param {{var}} ({{typePlaceholder}}): {{descriptionPlaceholder}}
+{{/args}}
+{{#kwargs}}
+@param {{var}} ({{typePlaceholder}}, optional): {{descriptionPlaceholder}}. Defaults to {{&default}}.
+{{/kwargs}}
+{{/parametersExist}}
+{{#returnsExist}}
+
+{{#returns}}
+@return ({{typePlaceholder}}): {{descriptionPlaceholder}}
+{{/returns}}
+{{/returnsExist}}
+{{#exceptionsExist}}
+
+{{#exceptions}}
+@exception {{type}}: {{descriptionPlaceholder}}
+{{/exceptions}}
+{{/exceptionsExist}}
+{{#yieldsExist}}
+
+{{#yields}}
+@returns {{typePlaceholder}}: {{descriptionPlaceholder}}
+{{/yields}}
+{{/yieldsExist}}


Test patch:
diff --git a/.github/workflows/test_and_publish.yml b/.github/workflows/test_and_publish.yml
index 1efba41..8de06ff 100644
--- a/.github/workflows/test_and_publish.yml
+++ b/.github/workflows/test_and_publish.yml
@@ -12,7 +12,7 @@ jobs:
         strategy:
             matrix:
                 os: [ubuntu-latest, macos-latest, windows-latest]
-                node: [16]
+                node: [18]
         steps:
             - uses: actions/checkout@v2
             - uses: actions/setup-node@v2
@@ -29,7 +29,7 @@ jobs:
             - uses: actions/checkout@v2
             - uses: actions/setup-node@v2
               with:
-                  node-version: 16
+                  node-version: 18
                   cache: "npm"
             - run: npm install
             - run: npm run prepare_integration_tests
@@ -47,7 +47,7 @@ jobs:
             - uses: actions/checkout@v2
             - uses: actions/setup-node@v2
               with:
-                  node-version: 16
+                  node-version: 18
                   cache: "npm"
             - run: npm ci
             - name: GitHub Release
diff --git a/src/test/docstring/generate_docstring.spec.ts b/src/test/docstring/generate_docstring.spec.ts
index c557ffe..e9bdf52 100644
--- a/src/test/docstring/generate_docstring.spec.ts
+++ b/src/test/docstring/generate_docstring.spec.ts
@@ -260,6 +260,22 @@ describe("DocstringFactory", () => {
             });
         });
 
+        context("when there are args", () => {
+            const template = "{{#args}}{{var}}:{{typePlaceholder}}{{/args}}";
+
+            it("should format Literals correctly", () => {
+                const docstringComponents = defaultDocstringComponents;
+                docstringComponents.args = [
+                    { var: "var_a", type: 'Literal["A", "B"]' },
+                ];
+                const factory = new DocstringFactory(template);
+
+                const result = factory.generateDocstring(docstringComponents);
+
+                expect(result).to.equal('"""var_a:${1:Literal["A", "B"]}"""');
+            });
+        });
+
         context("when the argsExist tag is used", () => {
             const template = "{{#argsExist}}Args Exist!{{/argsExist}}";