From ef7a514d7e4d3da6dff79861d60c64963ad9f089 Mon Sep 17 00:00:00 2001 From: Relintai Date: Wed, 31 May 2023 11:00:58 +0200 Subject: [PATCH] Added a new api json generator helper script. --- scripts/api_json_helper.ipynb | 217 ++++++++++++++++++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 scripts/api_json_helper.ipynb diff --git a/scripts/api_json_helper.ipynb b/scripts/api_json_helper.ipynb new file mode 100644 index 0000000..c487f9c --- /dev/null +++ b/scripts/api_json_helper.ipynb @@ -0,0 +1,217 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "858dddfa", + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets as widgets" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "94eff880", + "metadata": {}, + "outputs": [], + "source": [ + "l = widgets.Label(value=\"Input:\")\n", + "ta = widgets.Textarea(layout=widgets.Layout(width='80%', height='200px'))\n", + "b = widgets.Button(description='Convert',tooltip='Convert',icon='check')\n", + "\n", + "ol = widgets.Label(value=\"Output:\")\n", + "\n", + "olh = widgets.Label(value=\"JSON:\")\n", + "otah = widgets.Output(layout={'border': '1px solid black'})\n", + "\n", + "ool = widgets.Label(value=\"Output:\")\n", + "out = widgets.Output(layout={'border': '1px solid black'})\n", + "\n", + "vbi = widgets.VBox([ l, ta, b])\n", + "vbo = widgets.VBox([ol, olh, otah, ool, out])\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "74160baa", + "metadata": {}, + "outputs": [], + "source": [ + "if 'transform_input' in globals():\n", + " b.on_click(transform_input, True)\n", + "\n", + "def transform_input(b):\n", + " with out:\n", + " out.clear_output()\n", + " \n", + " with otah:\n", + " otah.clear_output()\n", + "\n", + " lines = ta.value.split('\\n')\n", + " \n", + " for l in lines:\n", + " if l.strip() == '':\n", + " #with otah:\n", + " # print('')\n", + " \n", + " continue\n", + " \n", + " with out:\n", + " print('line:')\n", + " print(l)\n", + " print('')\n", + " \n", + " if '//' in l:\n", + " #with otah:\n", + " # print(' ')\n", + " continue\n", + "\n", + " l = l.replace(';', '').strip()\n", + " l = l.replace('inline', '').strip()\n", + " l = l.replace('_FORCE_INLINE_', '').strip()\n", + " l = l.replace('GDAPI', '').strip()\n", + " l = l.replace(' ', ' ').strip()\n", + " l = l.replace(' ', ' ').strip()\n", + " l = l.replace(' ', ' ').strip()\n", + " l = l.replace(')', '').strip()\n", + " l = l.strip()\n", + " \n", + " data = {}\n", + " \n", + " method_def_and_argss = l.split('(')\n", + " \n", + " if len(method_def_and_argss) < 2:\n", + " #with otah:\n", + " # print(' ')\n", + " continue\n", + " \n", + " method_ret_and_name = method_def_and_argss[0]\n", + " method_ret_and_name_s = method_ret_and_name.split(' ')\n", + " \n", + " method_return_type = ' '.join(method_ret_and_name_s[:-1]).strip()\n", + " method_name = ' '.join(method_ret_and_name_s[len(method_ret_and_name_s) - 1:]).strip()\n", + " \n", + " if '*' in method_name:\n", + " method_name = method_name.replace('*', '')\n", + " method_return_type += ' *'\n", + " \n", + " data['name'] = method_name\n", + " data['return_type'] = method_return_type\n", + " \n", + " \n", + " method_all_args = method_def_and_argss[1]\n", + " method_all_argss = method_all_args.split(',')\n", + " \n", + " method_args = []\n", + " \n", + " for ma in method_all_argss:\n", + " mas = ma.split(' ')\n", + " \n", + " marg_type = ' '.join(mas[:-1]).strip()\n", + " marg_name = ' '.join(mas[len(mas) - 1:]).strip()\n", + " \n", + " sc = marg_name.count('*')\n", + " \n", + " marg_name = marg_name.replace('*', '')\n", + " \n", + " if sc > 0:\n", + " marg_type += ' ' + '*' * sc\n", + " \n", + " method_args.append([ marg_type, marg_name ])\n", + " \n", + " \n", + " \n", + " data['arguments'] = method_args\n", + " \n", + " \n", + " s = l\n", + " \n", + " \n", + " with otah:\n", + " #print(method_return_type)\n", + " #print(method_name)\n", + " #print(method_args)\n", + " \n", + " print(str(data).replace(\"'\", '\"') + ',')\n", + " \n", + " with out:\n", + " print(str(l))\n", + "\n", + "\n", + "b.on_click(transform_input)" + ] + }, + { + "cell_type": "markdown", + "id": "730e99a0", + "metadata": {}, + "source": [ + "# Input" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a78d6458", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "display(vbi)" + ] + }, + { + "cell_type": "markdown", + "id": "1662e017", + "metadata": {}, + "source": [ + "# Output" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fae586c3", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "display(vbo)" + ] + }, + { + "cell_type": "markdown", + "id": "a84ec551", + "metadata": {}, + "source": [ + " " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}