]> gitweb.ps.run Git - iftint/commitdiff
notes.md, changes in GetNode()
authorPatrick <patrick.schoenberger@posteo.de>
Sun, 13 Aug 2023 19:51:48 +0000 (21:51 +0200)
committerPatrick <patrick.schoenberger@posteo.de>
Sun, 13 Aug 2023 19:51:48 +0000 (21:51 +0200)
main2.c
notes.md [new file with mode: 0644]

diff --git a/main2.c b/main2.c
index db8e7cb927686a2694c824d4ae3985fd36b61b3c..aeb0c5586d7daa90902f8d1ce203bd3c47c6459a 100644 (file)
--- a/main2.c
+++ b/main2.c
@@ -327,15 +327,48 @@ GetNode() {
         if (c == KEY_CTRL_C)
             break;
 
-        if (editingNode) {
-            if (node->data == (size_t)NULL) {
-                node->data = (size_t)NEWARR(char, 16);
-                strLen = 0;
-            }
-            if (isNewline(c)) {
+        /*
+
+        - editing
+          - primitive -> input
+          - obj/arr   -> new node inside
+        - not editing
+          - hjkl      -> movement
+          - isoa
+            - parent=obj -> new key/value node after
+            - parent=arr -> new node after
+            - else       -> nothing
+        */
+
+        if (isNewline(c)) {
+            if (editingNode) {
                 editingNode = false;
+                if (node->parent != NULL && node->parent->kind == JSONNodeKind_Obj && node->firstChild != NULL) {
+                    node = node->firstChild;
+                    editingNode = true;
+                }
+                else if (node->parent != NULL && node->parent->kind == JSONNodeKind_Str && node->parent->parent != NULL) {
+                    node = node->parent->parent;
+                    editingNode = true;
+                }
             }
             else {
+                if (node->parent != NULL)
+                    node = node->parent;
+            }
+
+            g_CurrNode = node;
+            
+            continue;
+        }
+
+        if (editingNode) {
+            if (JSONNodeEditable(node)) {
+                if (node->data == (size_t)NULL) {
+                    node->data = (size_t)NEWARR(char, 16);
+                    strLen = 0;
+                }
+                
                 char * str = (char *)node->data;
 
                 if (isBackspace(c)) {
@@ -348,56 +381,44 @@ GetNode() {
                     strLen++;
                 }
             }
+            else {
+                if (node->kind == JSONNodeKind_Obj) {
+                    /**/ if (c == 'i') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Int))->parent); }
+                    else if (c == 's') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Str))->parent); }
+                    else if (c == 'o') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Obj))->parent); }
+                    else if (c == 'a') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Arr))->parent); }
+                }
+                else if (node->kind == JSONNodeKind_Arr) {
+                    /**/ if (c == 'i') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Int)); }
+                    else if (c == 's') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Str)); }
+                    else if (c == 'o') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Obj)); }
+                    else if (c == 'a') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Arr)); }
+                }
+                g_CurrNode = node;
+            }
         }
         else {
             if (node == NULL) {
                 /**/ if (c == 'i') { node = JSONNodeNew(JSONNodeKind_Int); editingNode = true; }
                 else if (c == 's') { node = JSONNodeNew(JSONNodeKind_Str); editingNode = true; }
-                else if (c == 'o') { node = JSONNodeNew(JSONNodeKind_Obj); }
-                else if (c == 'a') { node = JSONNodeNew(JSONNodeKind_Arr); }
+                else if (c == 'o') { node = JSONNodeNew(JSONNodeKind_Obj); editingNode = true; }
+                else if (c == 'a') { node = JSONNodeNew(JSONNodeKind_Arr); editingNode = true; }
                 g_DrawNode = g_CurrNode = result = node;
             }
-            else if (node->kind == JSONNodeKind_Int) {
-                /**/ if (c == 'h') { if (node->prev       != NULL) g_CurrNode = node = node->prev; }
-                else if (c == 'l') { if (node->next       != NULL) g_CurrNode = node = node->next; }
-                else if (c == 'k') { if (node->parent     != NULL) g_CurrNode = node = node->parent; }
-                else if (c == 'j') { if (node->firstChild != NULL) g_CurrNode = node = node->firstChild; }
-                else if (c == ' ') { if (JSONNodeEditable(node)) editingNode = true; }
-                else if (isBackspace(c)) { g_CurrNode = node = JSONNodeRemove(node); }
-            }
-            else if (node->kind == JSONNodeKind_Str) {
-                /**/ if (c == 'h') { if (node->prev       != NULL) g_CurrNode = node = node->prev; }
-                else if (c == 'l') { if (node->next       != NULL) g_CurrNode = node = node->next; }
-                else if (c == 'k') { if (node->parent     != NULL) g_CurrNode = node = node->parent; }
-                else if (c == 'j') { if (node->firstChild != NULL) g_CurrNode = node = node->firstChild; }
-                else if (c == ' ') { if (JSONNodeEditable(node)) editingNode = true; }
-                else if (isBackspace(c)) { g_CurrNode = node = JSONNodeRemove(node); }
-            }
-            else if (node->kind == JSONNodeKind_Obj) {
-                /**/ if (c == 'i') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Int))->parent); editingNode = true; }
-                else if (c == 's') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Str))->parent); editingNode = true; }
-                else if (c == 'o') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Obj))->parent); editingNode = true; }
-                else if (c == 'a') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Arr))->parent); editingNode = true; }
-                
-                else if (c == 'h') { if (node->prev       != NULL) g_CurrNode = node = node->prev; }
-                else if (c == 'l') { if (node->next       != NULL) g_CurrNode = node = node->next; }
-                else if (c == 'k') { if (node->parent     != NULL) g_CurrNode = node = node->parent; }
-                else if (c == 'j') { if (node->firstChild != NULL) g_CurrNode = node = node->firstChild; }
-                else if (isBackspace(c)) { node = JSONNodeRemove(node); }
-
-                g_CurrNode = node;
-            }
-            else if (node->kind == JSONNodeKind_Arr) {
-                /**/ if (c == 'i') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Int)); editingNode = true; }
-                else if (c == 's') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Str)); editingNode = true; }
-                else if (c == 'o') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Obj)); }
-                else if (c == 'a') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Arr)); }
+            // else if (node->kind == JSONNodeKind_Str && node->parent != NULL && node->parent->kind == JSONNodeKind_Obj) {
                 
+            // }
+            else {
+                /**/ if (c == 'i' && node->parent != NULL) { node = JSONNodePush(node->parent, JSONNodeNew(JSONNodeKind_Int)); editingNode = true; }
+                else if (c == 's' && node->parent != NULL) { node = JSONNodePush(node->parent, JSONNodeNew(JSONNodeKind_Str)); editingNode = true; }
+                else if (c == 'o' && node->parent != NULL) { node = JSONNodePush(node->parent, JSONNodeNew(JSONNodeKind_Obj)); editingNode = true; }
+                else if (c == 'a' && node->parent != NULL) { node = JSONNodePush(node->parent, JSONNodeNew(JSONNodeKind_Arr)); editingNode = true; }
                 else if (c == 'h') { if (node->prev       != NULL) g_CurrNode = node = node->prev; }
                 else if (c == 'l') { if (node->next       != NULL) g_CurrNode = node = node->next; }
                 else if (c == 'k') { if (node->parent     != NULL) g_CurrNode = node = node->parent; }
                 else if (c == 'j') { if (node->firstChild != NULL) g_CurrNode = node = node->firstChild; }
-                else if (isBackspace(c)) { node = JSONNodeRemove(node); }
+                else if (c == ' ') { editingNode = true; if (JSONNodeEditable(node) && (void *)node->data != NULL) strLen = strlen((char *)node->data); }
+                else if (isBackspace(c)) { g_CurrNode = node = JSONNodeRemove(node); }
 
                 g_CurrNode = node;
             }
diff --git a/notes.md b/notes.md
new file mode 100644 (file)
index 0000000..9810cb5
--- /dev/null
+++ b/notes.md
@@ -0,0 +1,3 @@
+# ideen\r
+- utility die unicode zeichen inputtet, eine Tastenkombi, MenĂ¼ mit Eingabe, Tastatur simulieren\r
+  - maybe AHK?
\ No newline at end of file