{"id":18693805,"url":"https://github.com/nodepit/knime-json-node-doc-generator","last_synced_at":"2025-04-12T06:54:01.279Z","repository":{"id":37993206,"uuid":"88770250","full_name":"NodePit/knime-json-node-doc-generator","owner":"NodePit","description":"Generate KNIME node documentation as a structured JSON file.","archived":false,"fork":false,"pushed_at":"2024-08-09T10:39:29.000Z","size":295,"stargazers_count":6,"open_issues_count":6,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-12T06:53:56.135Z","etag":null,"topics":["documentation-generator","json","knime"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NodePit.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-19T17:07:49.000Z","updated_at":"2024-08-09T10:36:57.000Z","dependencies_parsed_at":"2024-03-18T11:52:24.306Z","dependency_job_id":"bb596610-663b-4a57-8c6f-3932183612b7","html_url":"https://github.com/NodePit/knime-json-node-doc-generator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NodePit%2Fknime-json-node-doc-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NodePit%2Fknime-json-node-doc-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NodePit%2Fknime-json-node-doc-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NodePit%2Fknime-json-node-doc-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NodePit","download_url":"https://codeload.github.com/NodePit/knime-json-node-doc-generator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248530588,"owners_count":21119595,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["documentation-generator","json","knime"],"created_at":"2024-11-07T11:07:11.693Z","updated_at":"2025-04-12T06:54:01.258Z","avatar_url":"https://github.com/NodePit.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"KNIME JSON Node Documentation Generator\n=======================================\n\n[![Actions Status](https://github.com/NodePit/knime-json-node-doc-generator/workflows/CI/badge.svg)](https://github.com/NodePit/knime-json-node-doc-generator/actions)\n\nBuilds JSON files containing KNIME node, port, and splash icon documentations, based on and similar to\nKNIME’s `org.knime.workbench.repository.NodeDocumentationGenerator`, but with a\nstructured JSON files as a result which can be easily further processed, mined\nand integrated in different environments. Originally created for the [Selenium Nodes][1]\nwebsite where we display the node documentation on [this][3] page, and now also\nused for building [NodePit’s][4] node index.\n\nInstallation\n------------\n\nThe tool is available through the following software site (the version numbers reflect the branch names e.g. `release/4.1` -- in case there’s no explicit branch for a version, the update site will fall back to the most recent previous version):\n\n```\nhttps://download.nodepit.com/jsondocgen/3.6\nhttps://download.nodepit.com/jsondocgen/3.7\nhttps://download.nodepit.com/jsondocgen/4.0\nhttps://download.nodepit.com/jsondocgen/4.1\nhttps://download.nodepit.com/jsondocgen/4.2\nhttps://download.nodepit.com/jsondocgen/4.3\nhttps://download.nodepit.com/jsondocgen/4.4\nhttps://download.nodepit.com/jsondocgen/4.5\nhttps://download.nodepit.com/jsondocgen/4.6\nhttps://download.nodepit.com/jsondocgen/4.7\nhttps://download.nodepit.com/jsondocgen/5.0\nhttps://download.nodepit.com/jsondocgen/5.1\nhttps://download.nodepit.com/jsondocgen/5.2\nhttps://download.nodepit.com/jsondocgen/5.3\n```\n\nBeside that, the `master` branch is available through the following software site:\n\n```\nhttps://download.nodepit.com/jsondocgen/master\n```\n\nOpen KNIME, go to **File → Preferences → Install/Update → Available Software\nSites**, click on **Add…** and paste above’s URL. Save and close the preferences\nwindow, choose **File → Install KNIME Extensions…** and select the **JSON node\ndocumentation generator** in the list. Restart KNIME when promted to do so and\nfollow the usage instructions below.\n\nUsage\n-----\n\nThe application has the ID\n`de.philippkatz.knime.jsondocgen.application.JsonNodeDocumentationGenerator`.\nExecute it without options to see the following instructions:\n\n```\n$ ./Knime -nosplash -application de.philippkatz.knime.jsondocgen.application.JsonNodeDocumentationGenerator\nUsage: NodeDocuGenerator options\nAllowed options are:\n\t-destination dir : Directory where the result should be written to (should be absolute, otherwise the files will be placed relative to the knime executable)\n\t-plugin plugin-id : Only nodes of the specified plugin will be considered (specify multiple plugins by repeating this option). If not all available plugins will be processed.\n\t-category category-path (e.g. /community) : Only nodes within the specified category path will be considered. If not specified '/' is used.\n\t-includeDeprecated : Include nodes marked as 'deprecated' in the extension point.\n\t-skipNodeDocumentation : Skip generating node documentation\n\t-skipPortDocumentation : Skip generating port documentation\n\t-skipSplashIcons : Skip extracting splash screen icons\n```\n\nThis example creates three JSON file in you home directory\n(all images within the JSON files are encoded as [Base64][5] strings):\n\n* `nodeDocumentation.json` with the documentation for all Selenium nodes\n* `portDocumentation.json` with a hierarchy of all available ports\n* `splashIcons.json`: list of all registered splash screen icons\n\n```\n$ ./Knime -nosplash --launcher.suppressErrors -application de.philippkatz.knime.jsondocgen.application.JsonNodeDocumentationGenerator -destination ~ -category /selenium\n```\n\nWhen running within a headless environment (CI, Docker, …) with Xvfb, it’s\nhighly advisable to add the option `--launcher.suppressErrors`. Otherwise,\nexecution errors will lead to a seemingly hanging application, as the shown\nerror dialog remains “invisible”.\n\nYou might need to add some further configuration options, especially `-vmargs`\nto make it work with *any* kind of node extension. In our [NodePit](https://nodepit.com)\ncrawler production environment for example, we additionally supply the\n`--add-opens` arguments, which you can copy from a current `knime.ini` file\nand a customized Log4J configuration. (see also [here](https://github.com/NodePit/knime-json-node-doc-generator/issues/38))\n\nThe generated `nodeDocumentation.json` JSON file’s structure looks as follows:\n\n```json\n{\n  \"children\": [\n    {\n      \"nodes\": [\n        {\n          \"intro\": \"\u003cp\u003eThis node allows interacting with JavaScript-based \u003ca href=\\\"https://developer.mozilla.org/en-US/docs/Web/API/Window/alert\\\"\u003ealert\u003c/a\u003e, \\n        \u003ca href=\\\"https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm\\\"\u003econfirm\u003c/a\u003e, and \\n        \u003ca href=\\\"https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt\\\"\u003eprompt\u003c/a\u003e dialog boxes. \\n        When a WebBrowser shows a dialog, these can be dismissed or confirmed. Further, it allows to \\n        extract a dialog's text and send keyboard input to the dialog. The node assumes, that a \\n        dialog box is currently shown in the browser window.\u003c/p\u003e\u003cp\u003e\u003cb\u003eImportant:\u003c/b\u003e This node does \u003cb\u003enot\u003c/b\u003e work with headless browsers (PhantomJS, jBrowser, \\n        HtmlUnit, headless Chrome). In case you want to influence the page's dialog behavior when running\\n        headless browsers, you can directly modify the \u003ctt\u003ewindow.alert\u003c/tt\u003e, \u003ctt\u003ewindow.confirm\u003c/tt\u003e, \\n        or \u003ctt\u003ewindow.prompt\u003c/tt\u003e functions using an \u003cb\u003eExecute JavaScript\u003c/b\u003e node, which needs to be \\n        placed at a point in the workflow, before the dialog is actually shown. The following code\\n        snippet gives a simple example how to globally override the default behavior:\u003c/p\u003e\u003cpre\u003e\\nwindow.alert = function() {\\n   // do nothing\\n}\\nwindow.confirm = function() {\\n  return true; // simulate, that all 'confirm' dialogs are closed via 'OK' button\\n}\\nwindow.prompt = function() {\\n  return 'dummy text'; // simulate, that the given string is entered into all 'prompt' dialogs\\n}\\n        \u003c/pre\u003e\",\n          \"options\": [\n            {\n              \"type\": \"option\",\n              \"name\": \"WebDriver input\",\n              \"description\": \"Input column which provides the WebDriver(s)\",\n              \"optional\": false\n            },\n            {\n              \"type\": \"option\",\n              \"name\": \"Dismiss\",\n              \"description\": \"Close the dialog by clicking the \\\"Cancel\\\" button.\",\n              \"optional\": false\n            },\n            {\n              \"type\": \"option\",\n              \"name\": \"Accept\",\n              \"description\": \"Close the dialog by clicking the \\\"OK\\\" button.\",\n              \"optional\": false\n            },\n            {\n              \"type\": \"option\",\n              \"name\": \"Append column with text\",\n              \"description\": \"Extract the dialog's message and append it as text column.\",\n              \"optional\": false\n            },\n            {\n              \"type\": \"option\",\n              \"name\": \"Send keys\",\n              \"description\": \"The text to send to the dialog (in case it is a \\\"prompt\\\" dialog).\",\n              \"optional\": false\n            }\n          ],\n          \"inPorts\": [\n            {\n              \"index\": 0,\n              \"portObjectClass\": \"org.knime.core.node.BufferedDataTable\",\n              \"name\": \"WebDriver\",\n              \"description\": \"Table with a column providing a WebDriver with an open alert, confirm, or prompt box.\",\n              \"optional\": false\n            }\n          ],\n          \"outPorts\": [\n            {\n              \"index\": 0,\n              \"portObjectClass\": \"org.knime.core.node.BufferedDataTable\",\n              \"name\": \"WebDriver\",\n              \"description\": \"Same as input table, and appended text column in case the \\\"Save text\\\" option was selected.\",\n              \"optional\": false\n            }\n          ],\n          \"inPortObjectClasses\": [\n            \"org.knime.core.node.BufferedDataTable\"\n          ],\n          \"outPortObjectClasses\": [\n            \"org.knime.core.node.BufferedDataTable\"\n          ],\n          \"type\": \"Manipulator\",\n          \"deprecated\": false,\n          \"streamable\": false,\n          \"identifier\": \"ws.palladian.nodes.selenium.alert.AlertNodeFactory\",\n          \"id\": \"ws.palladian.nodes.selenium.alert.AlertNodeFactory\",\n          \"name\": \"Alert\",\n          \"shortDescription\": \"Interact with alert, confirm, and prompt boxes.\",\n          \"description\": \"Interact with alert, confirm, and prompt boxes.\",\n          \"contributingPlugin\": \"ws.palladian.nodes.selenium.plugin\",\n          \"iconBase64\": \"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABtUlEQVR4nKWTO2siYRSGP7DaQrBKsaWNvZWVlY2FoIJFSJ9sQggsC9ukzi+wVEQQRVHEC6hoYWEycYkJUSJGsLJQ8ILiBUXUN/N+MEsCaUwGHmY473mYc75hBADxHYTH4zGqHKucHggdo3C73SeKorx0Oh20269oNpuo159Rq9VQrVahZri7I//U50fc39fx8NBCoXD7Qlc4nc7zUqmEYrGoFgvI5XLIZrNIpVJIJpOIx+OIRqOIRCIIhUIIBoMIBALw+/3Q6XSnXOEMX7zoCpfL9Wu322G73Ur6/T4qlYqc6D2sMdP66NAVDofjYrPZYL1eS8rlMhqNBlqtljwH7q8ovD/JTOujQ1fY7fbL1WqFxWIhSafT4Jnk83lkMhkkEgm5P3f3+Xz/++jQFTab7Wo+n2MymUg47n6/lyO+hzVmWh8dusJqtf6eTqcYDocSTrBcLjGbzT7AGjOtjw5dYbFY/ozHY/R6PUk4HJZvGI1GH2CNmdZHh64wm81/B4MBut2uJBaLwev1fgozrY8OXWEyma45Ej/RIdChK/R6/ZnBYLj5CnSFev1QOVL5eSBH0v3u7/wGzWm83d0+AEIAAAAASUVORK5CYII=\"\n        },\n\n     ],\n      \"identifier\": \"selenium\",\n      \"id\": \"selenium\",\n      \"name\": \"Selenium\",\n      \"shortDescription\": \"Selenium\",\n      \"description\": \"Selenium\",\n      \"contributingPlugin\": \"ws.palladian.nodes.selenium.plugin\",\n      \"iconBase64\": \"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA6UlEQVR4nK2TAQ2EMAxFJ2ESkIAEJCABCUiYg0lAAhKQgAQkVEKPP2hTxuB2yf2kCdnoW9u/OXco7EF7cGXQmaPJHEJgImJRjLEGlCA0DAOXVAFBJY6XZUkJ67py13U8TZNCKqpw+nPf92kRkJ8A0jtaKf3kvdcqIXxjTQHzPKcNgDDMpmkuANuShSigbduLAxCgcorsAY7I2jtOwamYugUBYmeE2RTmc+85d+FJNxdAL7nwN4DsP9qI0u1FwrrdH8cx3ZW8AsLwSpKrLDZbnTbS62MSG+EQrrlo27Zkff4ivz5nJJ2J+pw/KRs8lHJwDIkAAAAASUVORK5CYII=\"\n    }\n  ],\n  \"identifier\": \"/\",\n  \"id\": \"/\",\n  \"name\": \"Root\",\n  \"contributingPlugin\": \"org.knime.base\"\n}\n```\n\nThe generated `portDocumentation.json` JSON file’s structure looks as follows:\n\n```json\n{\n  \"name\": \"PortObject\",\n  \"objectClass\": \"org.knime.core.node.port.PortObject\",\n  \"specClass\": \"org.knime.core.node.port.PortObjectSpec\",\n  \"color\": \"ff9b9b9b\",\n  \"hidden\": true,\n  \"registered\": true,\n  \"children\": [\n    {\n      \"name\": \"WebDriver Factory\",\n      \"objectClass\": \"ws.palladian.nodes.selenium.ports.AbstractWebDriverFactoryPortObject\",\n      \"specClass\": \"org.knime.core.node.port.PortObjectSpec\",\n      \"color\": \"408e2f\",\n      \"hidden\": false,\n      \"registered\": true,\n      \"children\": [\n        {\n          \"name\": \"ws.palladian.nodes.selenium.WebDriverFactory2\",\n          \"objectClass\": \"ws.palladian.nodes.selenium.ports.WebDriverFactory2PortObject\",\n          \"specClass\": \"org.knime.core.node.port.PortObjectSpec\",\n          \"color\": \"408e2f\",\n          \"hidden\": true,\n          \"registered\": true\n        },\n        {\n          \"name\": \"ws.palladian.nodes.selenium.WebDriverFactory\",\n          \"objectClass\": \"ws.palladian.nodes.selenium.ports.WebDriverFactoryPortObject\",\n          \"specClass\": \"org.knime.core.node.port.PortObjectSpec\",\n          \"color\": \"408e2f\",\n          \"hidden\": true,\n          \"registered\": true\n        }\n      ]\n    }\n  ]\n}\n```\n\nThe generated `splashIcons.json` JSON file’s structure looks as follows:\n\n```json\n[\n  {\n    \"id\": \"selenium\",\n    \"contributingPlugin\": \"ws.palladian.nodes.selenium.plugin\",\n    \"tooltip\": \"Selenium\",\n    \"icon\": \"iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADk0lEQVR4nOWZDXHzMAyGDSEQAqEQDCEQDCEQzKAQCqEQAiEQAiEQsr5blCmaZLtxm353n+50u8v8o0eWbNl17rj0D50fulTq8NDLEQOWZakyvtZwrnBEeybAzvNt2y4xxm/13puGhhBSba5nAVz4xJfLZZnneeFyvV53xjVNs4zjuGtzu90kwHQWgOcTS8NIsCrUBl7XpOs6CXEKQOSTWsLDZBgGtQ3APg4wTZNqHEKL2tzvd7VN3/efB0BiSoHHeRushhTkDXLjEwBeTPodyzAairBQDNvaQLAifIXOBoDclMlr9X4mACS4n1OUtOZURv/2bICPyzMAOLywxDkv4zAaKjS6J1ZCAjTup8aJTCE+Y/SrFU7q1rmvK9h9tSdYABene9etnc8EIIjGmHvQACZjoNrkrNExYVfkAL5mIuznOKh47XMS3HEAHFSoJrXTFd9TJfULdQOIiUaD/AZPy/JZE6VQO+rpKgAnv1mF2ZsAmhqAQQIgdLjg4kJ1D/6isEN1ijvCq8KkBOBaCsCrShiq9QNIKqEp6QvzpAhgMBrQHXWLwxIAS1GNyrsDcgmrlgGw8iALENcBtv/LEMKOU7J9avcBLgmIlH0+BxC0AaztE7U+ckILDX5vxiogwfk343JTDeC1ATCRdY3kK0PtEfMkMrn5XdlYBYiVo8cACAJGps4D2kb5lZMOOVKsmGyvAETDvvYwAFfaVWAAXxnA4f/Wk4oFrADcjLmz50BfApAKLwI7CDBl5s8CRM0DuV2Hx7UEoCTXVBl3WOeflHlmDmA91NIAGyA9EcJIDQT/53lBxpGgDJF9EgcanUOmbUumGv0DIF/Y6BkFCu9y4ykHoPw7IGA0f2ZRHrgohNsaAEqiSN61nghzMV2SB8o7kc85lwAsSgLo+Dcq2FIiX6ehfMvkkign6I5u5ufCrpTWvdf0AkIAnsXeTqcwQiGV5PQ7AsII/dDeOIFnGb5CWwnQOH27Si3jO5XyT3NsIKMX5V2IX+Bv67f2AwC0A8nXksiNlQDUeHS/rxHkCW113qkwlEcFldS791MJMLlfr7t1AHxDEvuTAfxq/LjawR0cNQD63UtK7wprohdr6/QH37BC/QHwBoAlOQNe1UfKzk4ZQlieUDjQpwCiY3kgAYL79wGwO/ltwP/p9wEpwdllbniyz5Tok5SjALvayFBpUEmfzj0pRwE0L2pere3zNoDSvby2TxHAF+Odd+SkF1qbAAAAAElFTkSuQmCC\",\n    \"icon24\": \"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABbElEQVR4nLWWDbWDMAyFkYAEJCABCUioBCTgAAmVgAQkIAEJSODtg6ULXcOAt+WcnDNYcm9+W7LsJe6h40OXf+r4xNqJ/wJwrF5HHv5ommaZpmnR4r1f8jy/Q7JmEsrSdd1iyTiOd0jA3h6qqjLBdSY3sth+4CxCiSRa/X6e5/sEwzAEoLZtg0FRFLssvkJAubSRRYAdweBL/5xz1zOwVJfuwzC8O1BrorGmhgAuDIM9RRBhXJbljoAotQ2E+l1UypcjUeOQEmqc6kld18lhUH3cp48hYCkiaaIBdI7gKCMGIQaihJQo7sspglRvYgJL3giIViKhTEd7YGWgVWFcXzQj0vObLJNhHRUpAnYGDFE12htQ3/fBiZnGAHC9gNJkfV/gJ0eGFrWk9qLFwmV0dEyIEIAuUbhwjhzJSuyILr71RBhrVZ71wnG6KdRf9wNg0o/PJZ4JSIjkWIkmEOxV/Kd9uKE+i8RlP/hs+QODqrFFftZOSwAAAABJRU5ErkJggg==\",\n    \"icon32\": \"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABwUlEQVR4nMVXDdGDMAxFAhKQgIRKQMIkIAEHSKgEJCABCUhAAh+PWz7SkLSMK9u7y91aSvKaP7KiCOE2GTZZNlkzy/LW7QoD/gGjlvhfGj+RcNqB1+u1TtO0cmCN/Ywk9nAMfLMsy5NhCTzHuQwEYDtMuHEco8Y5iQwEYPvYaJrGNKYhUziOhffedLUWGngrK4F5ngMDzrngsOahrARSyuGFnxKgJOUiCSIvEEp6jt+JXDkWy7IEBKqqunyTuq5PIZT5hDNRArIEsb5S71AsyWvAGUXfsWjbVn0JbjTY7zIMg/qeRqrve5sA2MXciGcgKW8hAcIWOegwCZA7U60YSrhHJHj54rdElAAJMjfmDR7PRwhwBbJDEhCOxwmQoCStViyBc9QHtHDeIqDdxiKQwm0CmrGsBGJt9hMCyJmu60wxCXAo9Xr6GKESUkl4QezbyYZzNQduV4Gse7gyNpBQx5Pg7VZr0yYBq94t0E1TnZMDhCSB/6EUt7zyVQN4klqzZIz0W/ahNBjLU991QBvL0bpTUAaTfSx3WrajzWqdj9qv1agQRu5FXAZ7xnAD2zv8pw0pg/hC4JskTsYJrvjy3/M/uJofbKxDOwUAAAAASUVORK5CYII=\"\n  }\n]\n```\n\nDevelopment\n-----------\n\nRun the following Maven command to compile the code, run the tests, and, if\nsuccessful, build an update site:\n\n```\n$ mvn clean verify\n```\n\nTo increment the version, make sure to update the `pom.xml`, `MANIFEST.MF`,\nand `feature.xml` files. Make sure to follow [Semantic Versioning][6].\n\nContributing\n------------\n\nPull requests are very welcome. Feel free to discuss bugs or new features by\nopening a new [issue][2].\n\nLicense\n-------\n\n[GNU General Public License](http://www.gnu.org/licenses)\n\n- - -\n\nCopyright (c) 2017 – 2024 Philipp Katz\n\n[1]: https://seleniumnodes.com\n[2]: https://github.com/NodePit/knime-json-node-doc-generator/issues\n[3]: https://seleniumnodes.com/docs\n[4]: https://nodepit.com\n[5]: https://en.wikipedia.org/wiki/Base64\n[6]: http://semver.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodepit%2Fknime-json-node-doc-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnodepit%2Fknime-json-node-doc-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodepit%2Fknime-json-node-doc-generator/lists"}