json_to_table 0.13.0

A library for pretty print JSON as a table
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
use json_to_table::{json_to_table, Orientation};

use serde_json::json;
use tabled::assert::test_table;
use tabled::settings::Style;

test_table!(
    orientation_test_1,
    json_to_table(&json!({
            "widget": {
                "debug": "on",
                "window": {
                    "title": "Sample Konfabulator Widget",
                    "name": "main_window",
                    "width": 500,
                    "height": 500
                },
                "image": {
                    "src": "Images/Sun.png",
                    "name": "sun1",
                    "hOffset": 250,
                    "vOffset": 250,
                    "alignment": "center"
                },
                "text": {
                    "data": "Click Here",
                    "size": 36,
                    "style": "bold",
                    "name": "text1",
                    "hOffset": 250,
                    "vOffset": 100,
                    "alignment": "center",
                    "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
                }
            }
        }))
        .with(Style::extended())
        .object_orientation(Orientation::Row),
    "╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗"
    "║ widget                                                                                                                                                                                                                                                                   ║"
    "╠══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣"
    "║ ╔═══════╦═══════════════════════════════════════════════════════════════╦══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╦═══════════════════════════════════════════════════════════════════╗ ║"
    "║ ║ debug ║ image                                                         ║ text                                                                                                                     ║ window                                                            ║ ║"
    "║ ╠═══════╬═══════════════════════════════════════════════════════════════╬══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╬═══════════════════════════════════════════════════════════════════╣ ║"
    "║ ║  on   ║ ╔═══════════╦═════════╦════════╦══════════════════╦═════════╗ ║ ╔═══════════╦══════════════╦═════════╦═════════╦═════════════════════════════════════════════╦══════╦════════╦═════════╗ ║ ╔════════╦═══════════════╦══════════════════════════════╦═══════╗ ║ ║"
    "║ ║       ║ ║ alignment ║ hOffset ║ name   ║ src              ║ vOffset ║ ║ ║ alignment ║ data         ║ hOffset ║ name    ║ onMouseUp                                   ║ size ║ style  ║ vOffset ║ ║ ║ height ║ name          ║ title                        ║ width ║ ║ ║"
    "║ ║       ║ ╠═══════════╬═════════╬════════╬══════════════════╬═════════╣ ║ ╠═══════════╬══════════════╬═════════╬═════════╬═════════════════════════════════════════════╬══════╬════════╬═════════╣ ║ ╠════════╬═══════════════╬══════════════════════════════╬═══════╣ ║ ║"
    "║ ║       ║ ║  center   ║  250    ║  sun1  ║  Images/Sun.png  ║  250    ║ ║ ║  center   ║  Click Here  ║  250    ║  text1  ║  sun1.opacity = (sun1.opacity / 100) * 90;  ║  36  ║  bold  ║  100    ║ ║ ║  500   ║  main_window  ║  Sample Konfabulator Widget  ║  500  ║ ║ ║"
    "║ ║       ║ ╚═══════════╩═════════╩════════╩══════════════════╩═════════╝ ║ ╚═══════════╩══════════════╩═════════╩═════════╩═════════════════════════════════════════════╩══════╩════════╩═════════╝ ║ ╚════════╩═══════════════╩══════════════════════════════╩═══════╝ ║ ║"
    "║ ╚═══════╩═══════════════════════════════════════════════════════════════╩══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╩═══════════════════════════════════════════════════════════════════╝ ║"
    "╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝"
);

test_table!(
    orientation_test_2,
    json_to_table(&json!({
            "glossary": {
                "title": "example glossary",
                "GlossDiv": {
                    "title": "S",
                    "GlossList": {
                        "GlossEntry": {
                            "ID": "SGML",
                            "SortAs": "SGML",
                            "GlossTerm": "Standard Generalized Markup Language",
                            "Acronym": "SGML",
                            "Abbrev": "ISO 8879:1986",
                            "GlossDef": {
                                "para": "A meta-markup language, used to create markup languages such as DocBook.",
                                "GlossSeeAlso": ["GML", "XML"]
                            },
                            "GlossSee": "markup"
                        }
                    }
                }
            }
        }))
        .with(Style::modern())
        .object_orientation(Orientation::Row)
        .array_orientation(Orientation::Row),
    "┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"
    "│ glossary                                                                                                                                                                                                                                          │"
    "├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤"
    "│ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬────────────────────┐ │"
    "│ │ GlossDiv                                                                                                                                                                                                                 │ title              │ │"
    "│ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────────────┤ │"
    "│ │ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬───────┐ │  example glossary  │ │"
    "│ │ │ GlossList                                                                                                                                                                                                    │ title │ │                    │ │"
    "│ │ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼───────┤ │                    │ │"
    "│ │ │ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │  S    │ │                    │ │"
    "│ │ │ │ GlossEntry                                                                                                                                                                                               │ │       │ │                    │ │"
    "│ │ │ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │       │ │                    │ │"
    "│ │ │ │ ┌─────────────────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────┬────────────────────────────────────────┬────────┬────────┐ │ │       │ │                    │ │"
    "│ │ │ │ │ Abbrev          │ Acronym │ GlossDef                                                                                           │ GlossSee │ GlossTerm                              │ ID     │ SortAs │ │ │       │ │                    │ │"
    "│ │ │ │ ├─────────────────┼─────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────┼────────────────────────────────────────┼────────┼────────┤ │ │       │ │                    │ │"
    "│ │ │ │ │  ISO 8879:1986  │  SGML   │ ┌───────────────────┬────────────────────────────────────────────────────────────────────────────┐ │  markup  │  Standard Generalized Markup Language  │  SGML  │  SGML  │ │ │       │ │                    │ │"
    "│ │ │ │ │                 │         │ │ GlossSeeAlso      │ para                                                                       │ │          │                                        │        │        │ │ │       │ │                    │ │"
    "│ │ │ │ │                 │         │ ├───────────────────┼────────────────────────────────────────────────────────────────────────────┤ │          │                                        │        │        │ │ │       │ │                    │ │"
    "│ │ │ │ │                 │         │ │ ┌───────┬───────┐ │  A meta-markup language, used to create markup languages such as DocBook.  │ │          │                                        │        │        │ │ │       │ │                    │ │"
    "│ │ │ │ │                 │         │ │ │  GML  │  XML  │ │                                                                            │ │          │                                        │        │        │ │ │       │ │                    │ │"
    "│ │ │ │ │                 │         │ │ └───────┴───────┘ │                                                                            │ │          │                                        │        │        │ │ │       │ │                    │ │"
    "│ │ │ │ │                 │         │ └───────────────────┴────────────────────────────────────────────────────────────────────────────┘ │          │                                        │        │        │ │ │       │ │                    │ │"
    "│ │ │ │ └─────────────────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────┴────────────────────────────────────────┴────────┴────────┘ │ │       │ │                    │ │"
    "│ │ │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ │       │ │                    │ │"
    "│ │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴───────┘ │                    │ │"
    "│ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────────────────┘ │"
    "└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘"
);

test_table!(
    orientation_visitor_test,
    json_to_table(&json!({
            "menu": {
                "header": "SVG Viewer",
                "items": [
                    {"id": "Open"},
                    {"id": "OpenNew", "label": "Open New"},
                    null,
                    {"id": "ZoomIn", "label": "Zoom In"},
                    {"id": "ZoomOut", "label": "Zoom Out"},
                    {"id": "OriginalView", "label": "Original View"},
                    null,
                    {"id": "Quality"},
                    {"id": "Pause"},
                    {"id": "Mute"},
                    null,
                    {"id": "Find", "label": "Find..."},
                    {"id": "FindAgain", "label": "Find Again"},
                    {"id": "Copy"},
                    {"id": "CopyAgain", "label": "Copy Again"},
                    {"id": "CopySVG", "label": "Copy SVG"},
                    {"id": "ViewSVG", "label": "View SVG"},
                    {"id": "ViewSource", "label": "View Source"},
                    {"id": "SaveAs", "label": "Save As"},
                    null,
                    {"id": "Help"},
                    {"id": "About", "label": "About Adobe CVG Viewer..."}
                ]
            }
        }))
        .with(Style::modern()),
        "┌──────┬──────────────────────────────────────────────────────────┐"
        "│ menu │ ┌────────┬─────────────────────────────────────────────┐ │"
        "│      │ │ header │  SVG Viewer                                 │ │"
        "│      │ ├────────┼─────────────────────────────────────────────┤ │"
        "│      │ │ items  │ ┌─────────────────────────────────────────┐ │ │"
        "│      │ │        │ │ ┌────┬────────┐                         │ │ │"
        "│      │ │        │ │ │ id │  Open  │                         │ │ │"
        "│      │ │        │ │ └────┴────────┘                         │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌───────┬────────────┐                  │ │ │"
        "│      │ │        │ │ │ id    │  OpenNew   │                  │ │ │"
        "│      │ │        │ │ ├───────┼────────────┤                  │ │ │"
        "│      │ │        │ │ │ label │  Open New  │                  │ │ │"
        "│      │ │        │ │ └───────┴────────────┘                  │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │                                         │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌───────┬───────────┐                   │ │ │"
        "│      │ │        │ │ │ id    │  ZoomIn   │                   │ │ │"
        "│      │ │        │ │ ├───────┼───────────┤                   │ │ │"
        "│      │ │        │ │ │ label │  Zoom In  │                   │ │ │"
        "│      │ │        │ │ └───────┴───────────┘                   │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌───────┬────────────┐                  │ │ │"
        "│      │ │        │ │ │ id    │  ZoomOut   │                  │ │ │"
        "│      │ │        │ │ ├───────┼────────────┤                  │ │ │"
        "│      │ │        │ │ │ label │  Zoom Out  │                  │ │ │"
        "│      │ │        │ │ └───────┴────────────┘                  │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌───────┬─────────────────┐             │ │ │"
        "│      │ │        │ │ │ id    │  OriginalView   │             │ │ │"
        "│      │ │        │ │ ├───────┼─────────────────┤             │ │ │"
        "│      │ │        │ │ │ label │  Original View  │             │ │ │"
        "│      │ │        │ │ └───────┴─────────────────┘             │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │                                         │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌────┬───────────┐                      │ │ │"
        "│      │ │        │ │ │ id │  Quality  │                      │ │ │"
        "│      │ │        │ │ └────┴───────────┘                      │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌────┬─────────┐                        │ │ │"
        "│      │ │        │ │ │ id │  Pause  │                        │ │ │"
        "│      │ │        │ │ └────┴─────────┘                        │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌────┬────────┐                         │ │ │"
        "│      │ │        │ │ │ id │  Mute  │                         │ │ │"
        "│      │ │        │ │ └────┴────────┘                         │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │                                         │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌───────┬───────────┐                   │ │ │"
        "│      │ │        │ │ │ id    │  Find     │                   │ │ │"
        "│      │ │        │ │ ├───────┼───────────┤                   │ │ │"
        "│      │ │        │ │ │ label │  Find...  │                   │ │ │"
        "│      │ │        │ │ └───────┴───────────┘                   │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌───────┬──────────────┐                │ │ │"
        "│      │ │        │ │ │ id    │  FindAgain   │                │ │ │"
        "│      │ │        │ │ ├───────┼──────────────┤                │ │ │"
        "│      │ │        │ │ │ label │  Find Again  │                │ │ │"
        "│      │ │        │ │ └───────┴──────────────┘                │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌────┬────────┐                         │ │ │"
        "│      │ │        │ │ │ id │  Copy  │                         │ │ │"
        "│      │ │        │ │ └────┴────────┘                         │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌───────┬──────────────┐                │ │ │"
        "│      │ │        │ │ │ id    │  CopyAgain   │                │ │ │"
        "│      │ │        │ │ ├───────┼──────────────┤                │ │ │"
        "│      │ │        │ │ │ label │  Copy Again  │                │ │ │"
        "│      │ │        │ │ └───────┴──────────────┘                │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌───────┬────────────┐                  │ │ │"
        "│      │ │        │ │ │ id    │  CopySVG   │                  │ │ │"
        "│      │ │        │ │ ├───────┼────────────┤                  │ │ │"
        "│      │ │        │ │ │ label │  Copy SVG  │                  │ │ │"
        "│      │ │        │ │ └───────┴────────────┘                  │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌───────┬────────────┐                  │ │ │"
        "│      │ │        │ │ │ id    │  ViewSVG   │                  │ │ │"
        "│      │ │        │ │ ├───────┼────────────┤                  │ │ │"
        "│      │ │        │ │ │ label │  View SVG  │                  │ │ │"
        "│      │ │        │ │ └───────┴────────────┘                  │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌───────┬───────────────┐               │ │ │"
        "│      │ │        │ │ │ id    │  ViewSource   │               │ │ │"
        "│      │ │        │ │ ├───────┼───────────────┤               │ │ │"
        "│      │ │        │ │ │ label │  View Source  │               │ │ │"
        "│      │ │        │ │ └───────┴───────────────┘               │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌───────┬───────────┐                   │ │ │"
        "│      │ │        │ │ │ id    │  SaveAs   │                   │ │ │"
        "│      │ │        │ │ ├───────┼───────────┤                   │ │ │"
        "│      │ │        │ │ │ label │  Save As  │                   │ │ │"
        "│      │ │        │ │ └───────┴───────────┘                   │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │                                         │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌────┬────────┐                         │ │ │"
        "│      │ │        │ │ │ id │  Help  │                         │ │ │"
        "│      │ │        │ │ └────┴────────┘                         │ │ │"
        "│      │ │        │ ├─────────────────────────────────────────┤ │ │"
        "│      │ │        │ │ ┌───────┬─────────────────────────────┐ │ │ │"
        "│      │ │        │ │ │ id    │  About                      │ │ │ │"
        "│      │ │        │ │ ├───────┼─────────────────────────────┤ │ │ │"
        "│      │ │        │ │ │ label │  About Adobe CVG Viewer...  │ │ │ │"
        "│      │ │        │ │ └───────┴─────────────────────────────┘ │ │ │"
        "│      │ │        │ └─────────────────────────────────────────┘ │ │"
        "│      │ └────────┴─────────────────────────────────────────────┘ │"
        "└──────┴──────────────────────────────────────────────────────────┘"
);

test_table!(
    collapse_array_orientation_test_1,
    json_to_table(&json!({
            "widget": {
                "debug": "on",
                "text": {
                    "data": ["Click Here", "asda", "123132"],
                    "size": 36,
                    "style": "bold",
                    "name": "text1",
                    "hOffset": 250,
                    "vOffset": 100,
                    "alignment": "center",
                    "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
                }
            }
        }))
        .with(Style::extended())
        .array_orientation(Orientation::Row)
        .collapse(),
    "╔════════╦═══════╦═══════════════════════════════════════════════════════╗"
    "║ widget ║ debug ║ on                                                    ║"
    "║        ╠═══════╬═══════════╦═══════════════════════════════════════════╣"
    "║        ║ text  ║ alignment ║ center                                    ║"
    "║        ║       ╠═══════════╬═════════════════╦═══════════╦═════════════╣"
    "║        ║       ║ data      ║ Click Here      ║ asda      ║ 123132      ║"
    "║        ║       ╠═══════════╬═════════════════╩═══════════╩═════════════╣"
    "║        ║       ║ hOffset   ║ 250                                       ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ name      ║ text1                                     ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ onMouseUp ║ sun1.opacity = (sun1.opacity / 100) * 90; ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ size      ║ 36                                        ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ style     ║ bold                                      ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ vOffset   ║ 100                                       ║"
    "╚════════╩═══════╩═══════════╩═══════════════════════════════════════════╝"
);

test_table!(
    collapse_array_orientation_test_2,
    json_to_table(&json!({
            "widget": {
                "debug": "on",
                "text": {
                    "data": ["Click Here", "asda", "123132"],
                    "data1": [["Click", "1", "3", "4"], "aa", {"123132": 11}],
                    "size": 36,
                    "style": "bold",
                    "name": "text1",
                    "hOffset": 250,
                    "vOffset": 100,
                    "alignment": "center",
                    "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
                }
            }
        }))
        .with(Style::extended())
        .array_orientation(Orientation::Row)
        .collapse(),
    "╔════════╦═══════╦═══════════════════════════════════════════════════════╗"
    "║ widget ║ debug ║ on                                                    ║"
    "║        ╠═══════╬═══════════╦═══════════════════════════════════════════╣"
    "║        ║ text  ║ alignment ║ center                                    ║"
    "║        ║       ╠═══════════╬═════════════════╦═══════════╦═════════════╣"
    "║        ║       ║ data      ║ Click Here      ║ asda      ║ 123132      ║"
    "║        ║       ╠═══════════╬══════════╦═══╦══╩╦═══╦═════╦╩═══════╦═════╣"
    "║        ║       ║ data1     ║ Click    ║ 1 ║ 3 ║ 4 ║ aa  ║ 123132 ║ 11  ║"
    "║        ║       ╠═══════════╬══════════╩═══╩═══╩═══╩═════╩════════╩═════╣"
    "║        ║       ║ hOffset   ║ 250                                       ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ name      ║ text1                                     ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ onMouseUp ║ sun1.opacity = (sun1.opacity / 100) * 90; ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ size      ║ 36                                        ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ style     ║ bold                                      ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ vOffset   ║ 100                                       ║"
    "╚════════╩═══════╩═══════════╩═══════════════════════════════════════════╝"
);

test_table!(
    collapse_array_orientation_test_3,
    json_to_table(&json!({
            "widget": {
                "debug": "on",
                "text": {
                    "data": ["Click Here", "asda", "123132"],
                    "data1": [["Click", "1", "3", "4"], "aa", "123132", 11],
                    "size": 36,
                    "style": "bold",
                    "name": "text1",
                    "hOffset": 250,
                    "vOffset": 100,
                    "alignment": "center",
                    "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
                }
            }
        }))
        .with(Style::extended())
        .array_orientation(Orientation::Row)
        .collapse(),
    "╔════════╦═══════╦═══════════════════════════════════════════════════════╗"
    "║ widget ║ debug ║ on                                                    ║"
    "║        ╠═══════╬═══════════╦═══════════════════════════════════════════╣"
    "║        ║ text  ║ alignment ║ center                                    ║"
    "║        ║       ╠═══════════╬═════════════════╦═══════════╦═════════════╣"
    "║        ║       ║ data      ║ Click Here      ║ asda      ║ 123132      ║"
    "║        ║       ╠═══════════╬═════════╦═══╦═══╬═══╦═════╦═╩═══════╦═════╣"
    "║        ║       ║ data1     ║ Click   ║ 1 ║ 3 ║ 4 ║ aa  ║ 123132  ║ 11  ║"
    "║        ║       ╠═══════════╬═════════╩═══╩═══╩═══╩═════╩═════════╩═════╣"
    "║        ║       ║ hOffset   ║ 250                                       ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ name      ║ text1                                     ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ onMouseUp ║ sun1.opacity = (sun1.opacity / 100) * 90; ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ size      ║ 36                                        ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ style     ║ bold                                      ║"
    "║        ║       ╠═══════════╬═══════════════════════════════════════════╣"
    "║        ║       ║ vOffset   ║ 100                                       ║"
    "╚════════╩═══════╩═══════════╩═══════════════════════════════════════════╝"
);

test_table!(
    collapse_array_orientation_test_4,
    json_to_table(&json!({
            "data": ["Click Here", "asda", "123132"],
            "data0":  "",
            "data1": [["Click", "1", "3", "4"], ["aa", "123132"], [11, 1, 1, 1, 1, 1]],
            "data2": [["C", "1", "3", "4"], ["a", "12"], [11, 1, 1]],
        }))
        .with(Style::extended())
        .array_orientation(Orientation::Row)
        .collapse(),
    "╔═══════╦══════════════════════╦════════════════╦══════════════════╗"
    "║ data  ║ Click Here           ║ asda           ║ 123132           ║"
    "╠═══════╬══════════════════════╩════════════════╩══════════════════╣"
    "║ data0 ║                                                          ║"
    "╠═══════╬═══════╦═══╦═══╦═══╦════╦════════╦════╦═══╦═══╦═══╦═══╦═══╣"
    "║ data1 ║ Click ║ 1 ║ 3 ║ 4 ║ aa ║ 123132 ║ 11 ║ 1 ║ 1 ║ 1 ║ 1 ║ 1 ║"
    "╠═══════╬═══════╬═══╩╦══╩═╦═╩══╦═╩═════╦══╩════╬═══╩═══╬═══╩═╦═╩═══╣"
    "║ data2 ║ C     ║ 1  ║ 3  ║ 4  ║ a     ║ 12    ║ 11    ║ 1   ║ 1   ║"
    "╚═══════╩═══════╩════╩════╩════╩═══════╩═══════╩═══════╩═════╩═════╝"
);

test_table!(
    collapse_array_orientation_test_5,
    json_to_table(&json!({
            "data": ["Click Here", "asda", "123132", "1"],
            "data1": [["Click", "1", "3", "4"], ["aa", "123132"], [11, 1, 1, 1, 1, 1]],
            "data2": [["C", "1", "3", "4"], ["a", "12"], [11, 1, 1]],
        }))
        .with(Style::extended())
        .array_orientation(Orientation::Row)
        .collapse(),
    "╔═══════╦════════════════════╦════════════╦══════════════╦═════════╗"
    "║ data  ║ Click Here         ║ asda       ║ 123132       ║ 1       ║"
    "╠═══════╬═══════╦═══╦═══╦═══╦╩═══╦════════╬════╦═══╦═══╦═╩═╦═══╦═══╣"
    "║ data1 ║ Click ║ 1 ║ 3 ║ 4 ║ aa ║ 123132 ║ 11 ║ 1 ║ 1 ║ 1 ║ 1 ║ 1 ║"
    "╠═══════╬═══════╬═══╩╦══╩═╦═╩══╦═╩═════╦══╩════╬═══╩═══╬═══╩═╦═╩═══╣"
    "║ data2 ║ C     ║ 1  ║ 3  ║ 4  ║ a     ║ 12    ║ 11    ║ 1   ║ 1   ║"
    "╚═══════╩═══════╩════╩════╩════╩═══════╩═══════╩═══════╩═════╩═════╝"
);

test_table!(
    collapse_array_orientation_test_6,
    json_to_table(&json!({
            "data": ["Click Here", "asda", "123132", "1"],
            "data1": [["Click", "1", "3", "4"], {"aa": "123132", "bb": "123132"}, [11, 1, 1, 1, 1, 1]],
            "data2": { "11": {"x": "xxx"}, "22": 1 },
            "data3": [["C", "1", "3", "4"], ["a", "12"], [11, 1, 1]],
        }))
        .with(Style::extended())
        .array_orientation(Orientation::Row)
        .collapse(),
    "╔═══════╦════════════════════╦════════════╦══════════════╦═════════╗"
    "║ data  ║ Click Here         ║ asda       ║ 123132       ║ 1       ║"
    "╠═══════╬═══════╦═══╦═══╦═══╦╩═══╦════════╬════╦═══╦═══╦═╩═╦═══╦═══╣"
    "║ data1 ║ Click ║ 1 ║ 3 ║ 4 ║ aa ║ 123132 ║ 11 ║ 1 ║ 1 ║ 1 ║ 1 ║ 1 ║"
    "║       ║       ║   ║   ║   ╠════╬════════╣    ║   ║   ║   ║   ║   ║"
    "║       ║       ║   ║   ║   ║ bb ║ 123132 ║    ║   ║   ║   ║   ║   ║"
    "╠═══════╬════╦══╩╦══╩═══╩═══╩════╩════════╩════╩═══╩═══╩═══╩═══╩═══╣"
    "║ data2 ║ 11 ║ x ║ xxx                                             ║"
    "║       ╠════╬═══╩═════════════════════════════════════════════════╣"
    "║       ║ 22 ║ 1                                                   ║"
    "╠═══════╬════╩══╦════╦════╦════╦═══════╦═══════╦═══════╦═════╦═════╣"
    "║ data3 ║ C     ║ 1  ║ 3  ║ 4  ║ a     ║ 12    ║ 11    ║ 1   ║ 1   ║"
    "╚═══════╩═══════╩════╩════╩════╩═══════╩═══════╩═══════╩═════╩═════╝"
);

test_table!(
    collapse_object_orientation_test_1,
    json_to_table(&json!({
            "widget": {
                "debug": "on",
                "text": {
                    "data": ["Click Here", "asda", "123132"],
                    "size": 36,
                    "style": "bold",
                    "name": "text1",
                    "hOffset": 250,
                    "vOffset": 100,
                    "alignment": "center",
                    "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
                }
            }
        }))
        .with(Style::extended())
        .object_orientation(Orientation::Row)
        .collapse(),
    "╔═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗"
    "║ widget                                                                                                                ║"
    "╠═══════╦═══════════════════════════════════════════════════════════════════════════════════════════════════════════════╣"
    "║ debug ║ text                                                                                                          ║"
    "╠═══════╬═══════════╦════════════╦═════════╦═══════╦═══════════════════════════════════════════╦══════╦═══════╦═════════╣"
    "║ on    ║ alignment ║ data       ║ hOffset ║ name  ║ onMouseUp                                 ║ size ║ style ║ vOffset ║"
    "║       ╠═══════════╬════════════╬═════════╬═══════╬═══════════════════════════════════════════╬══════╬═══════╬═════════╣"
    "║       ║ center    ║ Click Here ║ 250     ║ text1 ║ sun1.opacity = (sun1.opacity / 100) * 90; ║ 36   ║ bold  ║ 100     ║"
    "║       ║           ╠════════════╣         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ║ asda       ║         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ╠════════════╣         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ║ 123132     ║         ║       ║                                           ║      ║       ║         ║"
    "╚═══════╩═══════════╩════════════╩═════════╩═══════╩═══════════════════════════════════════════╩══════╩═══════╩═════════╝"
);

test_table!(
    collapse_object_orientation_test_2,
    json_to_table(&json!({
            "widget": {
                "debug": "on",
                "text": {
                    "data": ["Click Here", "asda", "123132"],
                    "data1": [["Click", "1", "3", "4"], "aa", {"123132": 11}],
                    "size": 36,
                    "style": "bold",
                    "name": "text1",
                    "hOffset": 250,
                    "vOffset": 100,
                    "alignment": "center",
                    "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
                }
            }
        }))
        .with(Style::extended())
        .object_orientation(Orientation::Row)
        .collapse(),
    "╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗"
    "║ widget                                                                                                                         ║"
    "╠═══════╦════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣"
    "║ debug ║ text                                                                                                                   ║"
    "╠═══════╬═══════════╦════════════╦════════╦═════════╦═══════╦═══════════════════════════════════════════╦══════╦═══════╦═════════╣"
    "║ on    ║ alignment ║ data       ║ data1  ║ hOffset ║ name  ║ onMouseUp                                 ║ size ║ style ║ vOffset ║"
    "║       ╠═══════════╬════════════╬════════╬═════════╬═══════╬═══════════════════════════════════════════╬══════╬═══════╬═════════╣"
    "║       ║ center    ║ Click Here ║ Click  ║ 250     ║ text1 ║ sun1.opacity = (sun1.opacity / 100) * 90; ║ 36   ║ bold  ║ 100     ║"
    "║       ║           ║            ╠════════╣         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ║            ║ 1      ║         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ║            ╠════════╣         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ║            ║ 3      ║         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ╠════════════╬════════╣         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ║ asda       ║ 4      ║         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ║            ╠════════╣         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ║            ║ aa     ║         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ╠════════════╬════════╣         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ║ 123132     ║ 123132 ║         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ║            ╠════════╣         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ║            ║ 11     ║         ║       ║                                           ║      ║       ║         ║"
    "╚═══════╩═══════════╩════════════╩════════╩═════════╩═══════╩═══════════════════════════════════════════╩══════╩═══════╩═════════╝"
);

test_table!(
    collapse_object_orientation_test_3,
    json_to_table(&json!({
            "widget": {
                "debug": "on",
                "text": {
                    "data": ["Click Here", "asda", "123132"],
                    "data1": [["Click", "1", "3", "4"], "aa", "123132", 11],
                    "size": 36,
                    "style": "bold",
                    "name": "text1",
                    "hOffset": 250,
                    "vOffset": 100,
                    "alignment": "center",
                    "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
                }
            }
        }))
        .with(Style::modern())
        .object_orientation(Orientation::Row)
        .collapse(),
    "┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"
    "│ widget                                                                                                                         │"
    "├───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤"
    "│ debug │ text                                                                                                                   │"
    "├───────┼───────────┬────────────┬────────┬─────────┬───────┬───────────────────────────────────────────┬──────┬───────┬─────────┤"
    "│ on    │ alignment │ data       │ data1  │ hOffset │ name  │ onMouseUp                                 │ size │ style │ vOffset │"
    "│       ├───────────┼────────────┼────────┼─────────┼───────┼───────────────────────────────────────────┼──────┼───────┼─────────┤"
    "│       │ center    │ Click Here │ Click  │ 250     │ text1 │ sun1.opacity = (sun1.opacity / 100) * 90; │ 36   │ bold  │ 100     │"
    "│       │           │            ├────────┤         │       │                                           │      │       │         │"
    "│       │           │            │ 1      │         │       │                                           │      │       │         │"
    "│       │           │            ├────────┤         │       │                                           │      │       │         │"
    "│       │           │            │ 3      │         │       │                                           │      │       │         │"
    "│       │           ├────────────┼────────┤         │       │                                           │      │       │         │"
    "│       │           │ asda       │ 4      │         │       │                                           │      │       │         │"
    "│       │           │            ├────────┤         │       │                                           │      │       │         │"
    "│       │           │            │ aa     │         │       │                                           │      │       │         │"
    "│       │           ├────────────┼────────┤         │       │                                           │      │       │         │"
    "│       │           │ 123132     │ 123132 │         │       │                                           │      │       │         │"
    "│       │           │            ├────────┤         │       │                                           │      │       │         │"
    "│       │           │            │ 11     │         │       │                                           │      │       │         │"
    "└───────┴───────────┴────────────┴────────┴─────────┴───────┴───────────────────────────────────────────┴──────┴───────┴─────────┘"
);

test_table!(
    collapse_object_orientation_test_4,
    json_to_table(&json!({
            "data": ["Click Here", "asda", "123132"],
            "data0":  "",
            "data1": [["Click", "1", "3", "4"], ["aa", "123132"], [11, 1, 1, 1, 1, 1]],
            "data2": [["C", "1", "3", "4"], ["a", "12"], [11, 1, 1]],
        }))
        .with(Style::extended())
        .object_orientation(Orientation::Row)
        .collapse(),
    "╔════════════╦═══════╦════════╦═══════╗"
    "║ data       ║ data0 ║ data1  ║ data2 ║"
    "╠════════════╬═══════╬════════╬═══════╣"
    "║ Click Here ║       ║ Click  ║ C     ║"
    "║            ║       ╠════════╣       ║"
    "║            ║       ║ 1      ║       ║"
    "║            ║       ╠════════╬═══════╣"
    "║            ║       ║ 3      ║ 1     ║"
    "║            ║       ╠════════╬═══════╣"
    "║            ║       ║ 4      ║ 3     ║"
    "╠════════════║       ╠════════╬═══════╣"
    "║ asda       ║       ║ aa     ║ 4     ║"
    "║            ║       ╠════════╬═══════╣"
    "║            ║       ║ 123132 ║ a     ║"
    "║            ║       ╠════════╣       ║"
    "║            ║       ║ 11     ╠═══════╣"
    "║            ║       ╠════════╣ 12    ║"
    "║            ║       ║ 1      ║       ║"
    "╠════════════║       ╠════════╬═══════╣"
    "║ 123132     ║       ║ 1      ║ 11    ║"
    "║            ║       ╠════════╣       ║"
    "║            ║       ║ 1      ║       ║"
    "║            ║       ╠════════╬═══════╣"
    "║            ║       ║ 1      ║ 1     ║"
    "║            ║       ╠════════╬═══════╣"
    "║            ║       ║ 1      ║ 1     ║"
    "╚════════════╩═══════╩════════╩═══════╝"
);

test_table!(
    collapse_object_orientation_test_5,
    json_to_table(&json!({
            "data": ["Click Here", "asda", "123132", "1"],
            "data1": [["Click", "1", "3", "4"], ["aa", "123132"], [11, 1, 1, 1, 1, 1]],
            "data2": [["C", "1", "3", "4"], ["a", "12"], [11, 1, 1]],
        }))
        .with(Style::extended())
        .object_orientation(Orientation::Row)
        .collapse(),
    "╔════════════╦════════╦═══════╗"
    "║ data       ║ data1  ║ data2 ║"
    "╠════════════╬════════╬═══════╣"
    "║ Click Here ║ Click  ║ C     ║"
    "║            ╠════════╣       ║"
    "║            ║ 1      ║       ║"
    "║            ╠════════╬═══════╣"
    "║            ║ 3      ║ 1     ║"
    "╠════════════╬════════╬═══════╣"
    "║ asda       ║ 4      ║ 3     ║"
    "║            ╠════════╬═══════╣"
    "║            ║ aa     ║ 4     ║"
    "║            ╠════════╬═══════╣"
    "║            ║ 123132 ║ a     ║"
    "╠════════════╬════════╣       ║"
    "║ 123132     ║ 11     ╠═══════╣"
    "║            ╠════════╣ 12    ║"
    "║            ║ 1      ║       ║"
    "║            ╠════════╬═══════╣"
    "║            ║ 1      ║ 11    ║"
    "╠════════════╬════════╣       ║"
    "║ 1          ║ 1      ║       ║"
    "║            ╠════════╬═══════╣"
    "║            ║ 1      ║ 1     ║"
    "║            ╠════════╬═══════╣"
    "║            ║ 1      ║ 1     ║"
    "╚════════════╩════════╩═══════╝"
);

test_table!(
    collapse_object_orientation_test_6,
    json_to_table(&json!({
            "data": ["Click Here", "asda", "123132", "1"],
            "data1": [["Click", "1", "3", "4"], {"aa": "123132", "bb": "123132"}, [11, 1, 1, 1, 1, 1]],
            "data2": { "11": {"x": "xxx"}, "22": 1 },
            "data3": [["C", "1", "3", "4"], ["a", "12"], [11, 1, 1]],
        }))
        .with(Style::extended())
        .object_orientation(Orientation::Row)
        .collapse(),
    "╔════════════╦═════════════════╦══════════╦═══════╗"
    "║ data       ║ data1           ║ data2    ║ data3 ║"
    "╠════════════╬═════════════════╬═════╦════╬═══════╣"
    "║ Click Here ║ Click           ║ 11  ║ 22 ║ C     ║"
    "║            ╠═════════════════╬═════╬════╣       ║"
    "║            ║ 1               ║ x   ║ 1  ║       ║"
    "║            ╠═════════════════╬═════╣    ╠═══════╣"
    "║            ║ 3               ║ xxx ║    ║ 1     ║"
    "╠════════════╬═════════════════╣     ║    ╠═══════╣"
    "║ asda       ║ 4               ║     ║    ║ 3     ║"
    "║            ╠════════╦════════╣     ║    ╠═══════╣"
    "║            ║ aa     ║ bb     ║     ║    ║ 4     ║"
    "║            ╠════════╬════════╣     ║    ╠═══════╣"
    "║            ║ 123132 ║ 123132 ║     ║    ║ a     ║"
    "╠════════════╬════════╩════════╣     ║    ║       ║"
    "║ 123132     ║ 11              ║     ║    ╠═══════╣"
    "║            ╠═════════════════║     ║    ║ 12    ║"
    "║            ║ 1               ║     ║    ║       ║"
    "║            ╠═════════════════║     ║    ╠═══════╣"
    "║            ║ 1               ║     ║    ║ 11    ║"
    "╠════════════╬═════════════════║     ║    ║       ║"
    "║ 1          ║ 1               ║     ║    ║       ║"
    "║            ╠═════════════════║     ║    ╠═══════╣"
    "║            ║ 1               ║     ║    ║ 1     ║"
    "║            ╠═════════════════║     ║    ╠═══════╣"
    "║            ║ 1               ║     ║    ║ 1     ║"
    "╚════════════╩═════════════════╩═════╩════╩═══════╝"
);

test_table!(
    collapse_object_array_orientation_test_1,
    json_to_table(&json!({
            "widget": {
                "debug": "on",
                "text": {
                    "data": ["Click Here", "asda", "123132"],
                    "size": 36,
                    "style": "bold",
                    "name": "text1",
                    "hOffset": 250,
                    "vOffset": 100,
                    "alignment": "center",
                    "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
                }
            }
        }))
        .with(Style::extended())
        .object_orientation(Orientation::Row)
        .array_orientation(Orientation::Row)
        .collapse(),
    "╔═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗"
    "║ widget                                                                                                                                ║"
    "╠═══════╦═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣"
    "║ debug ║ text                                                                                                                          ║"
    "╠═══════╬═══════════╦════════════════════════════╦═════════╦═══════╦═══════════════════════════════════════════╦══════╦═══════╦═════════╣"
    "║ on    ║ alignment ║ data                       ║ hOffset ║ name  ║ onMouseUp                                 ║ size ║ style ║ vOffset ║"
    "║       ╠═══════════╬════════════╦══════╦════════╬═════════╬═══════╬═══════════════════════════════════════════╬══════╬═══════╬═════════╣"
    "║       ║ center    ║ Click Here ║ asda ║ 123132 ║ 250     ║ text1 ║ sun1.opacity = (sun1.opacity / 100) * 90; ║ 36   ║ bold  ║ 100     ║"
    "╚═══════╩═══════════╩════════════╩══════╩════════╩═════════╩═══════╩═══════════════════════════════════════════╩══════╩═══════╩═════════╝"
);

test_table!(
    collapse_object_array_orientation_test_2,
    json_to_table(&json!({
            "widget": {
                "debug": "on",
                "text": {
                    "data": ["Click Here", "asda", "123132"],
                    "data1": [["Click", "1", "3", "4"], "aa", {"123132": 11}],
                    "size": 36,
                    "style": "bold",
                    "name": "text1",
                    "hOffset": 250,
                    "vOffset": 100,
                    "alignment": "center",
                    "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
                }
            }
        }))
        .with(Style::extended())
        .object_orientation(Orientation::Row)
        .array_orientation(Orientation::Row)
        .collapse(),
    "╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗"
    "║ widget                                                                                                                                                                  ║"
    "╠═══════╦═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣"
    "║ debug ║ text                                                                                                                                                            ║"
    "╠═══════╬═══════════╦════════════════════════════╦═════════════════════════════════╦═════════╦═══════╦═══════════════════════════════════════════╦══════╦═══════╦═════════╣"
    "║ on    ║ alignment ║ data                       ║ data1                           ║ hOffset ║ name  ║ onMouseUp                                 ║ size ║ style ║ vOffset ║"
    "║       ╠═══════════╬════════════╦══════╦════════╬═══════╦═══╦═══╦═══╦════╦════════╬═════════╬═══════╬═══════════════════════════════════════════╬══════╬═══════╬═════════╣"
    "║       ║ center    ║ Click Here ║ asda ║ 123132 ║ Click ║ 1 ║ 3 ║ 4 ║ aa ║ 123132 ║ 250     ║ text1 ║ sun1.opacity = (sun1.opacity / 100) * 90; ║ 36   ║ bold  ║ 100     ║"
    "║       ║           ║            ║      ║        ║       ║   ║   ║   ║    ╠════════╣         ║       ║                                           ║      ║       ║         ║"
    "║       ║           ║            ║      ║        ║       ║   ║   ║   ║    ║ 11     ║         ║       ║                                           ║      ║       ║         ║"
    "╚═══════╩═══════════╩════════════╩══════╩════════╩═══════╩═══╩═══╩═══╩════╩════════╩═════════╩═══════╩═══════════════════════════════════════════╩══════╩═══════╩═════════╝"
);

test_table!(
    collapse_object_array_orientation_test_3,
    json_to_table(&json!({
            "widget": {
                "debug": "on",
                "text": {
                    "data": ["Click Here", "asda", "123132"],
                    "data1": [["Click", "1", "3", "4"], "aa", "123132", 11],
                    "size": 36,
                    "style": "bold",
                    "name": "text1",
                    "hOffset": 250,
                    "vOffset": 100,
                    "alignment": "center",
                    "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
                }
            }
        }))
        .with(Style::modern())
        .object_orientation(Orientation::Row)
        .array_orientation(Orientation::Row)
        .collapse(),
    "┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐"
    "│ widget                                                                                                                                                                       │"
    "├───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤"
    "│ debug │ text                                                                                                                                                                 │"
    "├───────┼───────────┬────────────────────────────┬──────────────────────────────────────┬─────────┬───────┬───────────────────────────────────────────┬──────┬───────┬─────────┤"
    "│ on    │ alignment │ data                       │ data1                                │ hOffset │ name  │ onMouseUp                                 │ size │ style │ vOffset │"
    "│       ├───────────┼────────────┬──────┬────────┼───────┬───┬───┬───┬────┬────────┬────┼─────────┼───────┼───────────────────────────────────────────┼──────┼───────┼─────────┤"
    "│       │ center    │ Click Here │ asda │ 123132 │ Click │ 1 │ 3 │ 4 │ aa │ 123132 │ 11 │ 250     │ text1 │ sun1.opacity = (sun1.opacity / 100) * 90; │ 36   │ bold  │ 100     │"
    "└───────┴───────────┴────────────┴──────┴────────┴───────┴───┴───┴───┴────┴────────┴────┴─────────┴───────┴───────────────────────────────────────────┴──────┴───────┴─────────┘"
);

test_table!(
    collapse_object_array_orientation_test_4,
    json_to_table(&json!({
            "data": ["Click Here", "asda", "123132"],
            "data0":  "",
            "data1": [["Click", "1", "3", "4"], ["aa", "123132"], [11, 1, 1, 1, 1, 1]],
            "data2": [["C", "1", "3", "4"], ["a", "12"], [11, 1, 1]],
        }))
        .with(Style::extended())
        .object_orientation(Orientation::Row)
        .array_orientation(Orientation::Row)
        .collapse(),
    "╔════════════════════════════╦═══════╦══════════════════════════════════════════════════════════╦═════════════════════════════════════╗"
    "║ data                       ║ data0 ║ data1                                                    ║ data2                               ║"
    "╠════════════╦══════╦════════╬═══════╬═══════╦═══╦═══╦═══╦════╦════════╦════╦═══╦═══╦═══╦═══╦═══╬═══╦═══╦═══╦═══╦═══╦════╦════╦═══╦═══╣"
    "║ Click Here ║ asda ║ 123132 ║       ║ Click ║ 1 ║ 3 ║ 4 ║ aa ║ 123132 ║ 11 ║ 1 ║ 1 ║ 1 ║ 1 ║ 1 ║ C ║ 1 ║ 3 ║ 4 ║ a ║ 12 ║ 11 ║ 1 ║ 1 ║"
    "╚════════════╩══════╩════════╩═══════╩═══════╩═══╩═══╩═══╩════╩════════╩════╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩════╩════╩═══╩═══╝"
);

test_table!(
    collapse_object_array_orientation_test_5,
    json_to_table(&json!({
            "data": ["Click Here", "asda", "123132", "1"],
            "data1": [["Click", "1", "3", "4"], ["aa", "123132"], [11, 1, 1, 1, 1, 1]],
            "data2": [["C", "1", "3", "4"], ["a", "12"], [11, 1, 1]],
        }))
        .with(Style::extended())
        .object_orientation(Orientation::Row)
        .array_orientation(Orientation::Row)
        .collapse(),
    "╔════════════════════════════════╦══════════════════════════════════════════════════════════╦═════════════════════════════════════╗"
    "║ data                           ║ data1                                                    ║ data2                               ║"
    "╠════════════╦══════╦════════╦═══╬═══════╦═══╦═══╦═══╦════╦════════╦════╦═══╦═══╦═══╦═══╦═══╬═══╦═══╦═══╦═══╦═══╦════╦════╦═══╦═══╣"
    "║ Click Here ║ asda ║ 123132 ║ 1 ║ Click ║ 1 ║ 3 ║ 4 ║ aa ║ 123132 ║ 11 ║ 1 ║ 1 ║ 1 ║ 1 ║ 1 ║ C ║ 1 ║ 3 ║ 4 ║ a ║ 12 ║ 11 ║ 1 ║ 1 ║"
    "╚════════════╩══════╩════════╩═══╩═══════╩═══╩═══╩═══╩════╩════════╩════╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩════╩════╩═══╩═══╝"
);

test_table!(
    collapse_object_array_orientation_test_6,
    json_to_table(&json!({
            "data": ["Click Here", "asda", "123132", "1"],
            "data1": [["Click", "1", "3", "4"], {"aa": "123132", "bb": "123132"}, [11, 1, 1, 1, 1, 1]],
            "data2": { "11": {"x": "xxx"}, "22": 1 },
            "data3": [["C", "1", "3", "4"], ["a", "12"], [11, 1, 1]],
        }))
        .with(Style::extended())
        .object_orientation(Orientation::Row)
        .array_orientation(Orientation::Row)
        .collapse(),
    "╔════════════════════════════════╦══════════════════════════════════════════════════════════════╦══════════╦═════════════════════════════════════╗"
    "║ data                           ║ data1                                                        ║ data2    ║ data3                               ║"
    "╠════════════╦══════╦════════╦═══╬═══════╦═══╦═══╦═══╦════════╦════════╦════╦═══╦═══╦═══╦═══╦═══╬═════╦════╬═══╦═══╦═══╦═══╦═══╦════╦════╦═══╦═══╣"
    "║ Click Here ║ asda ║ 123132 ║ 1 ║ Click ║ 1 ║ 3 ║ 4 ║ aa     ║ bb     ║ 11 ║ 1 ║ 1 ║ 1 ║ 1 ║ 1 ║ 11  ║ 22 ║ C ║ 1 ║ 3 ║ 4 ║ a ║ 12 ║ 11 ║ 1 ║ 1 ║"
    "║            ║      ║        ║   ║       ║   ║   ║   ╠════════╬════════╣    ║   ║   ║   ║   ║   ╠═════╬════╣   ║   ║   ║   ║   ║    ║    ║   ║   ║"
    "║            ║      ║        ║   ║       ║   ║   ║   ║ 123132 ║ 123132 ║    ║   ║   ║   ║   ║   ║ x   ║ 1  ║   ║   ║   ║   ║   ║    ║    ║   ║   ║"
    "║            ║      ║        ║   ║       ║   ║   ║   ║        ║        ║    ║   ║   ║   ║   ║   ╠═════╣    ║   ║   ║   ║   ║   ║    ║    ║   ║   ║"
    "║            ║      ║        ║   ║       ║   ║   ║   ║        ║        ║    ║   ║   ║   ║   ║   ║ xxx ║    ║   ║   ║   ║   ║   ║    ║    ║   ║   ║"
    "╚════════════╩══════╩════════╩═══╩═══════╩═══╩═══╩═══╩════════╩════════╩════╩═══╩═══╩═══╩═══╩═══╩═════╩════╩═══╩═══╩═══╩═══╩═══╩════╩════╩═══╩═══╝"
);

test_table!(
    collapse_object_array_orientation_test_7,
    json_to_table(&json!({
            "widget": {
                "debug": "on",
                "text": {
                    "data": ["Click Here", "asda", "123132"],
                    "size": 36,
                    "style": "bold",
                    "name": "text1",
                    "hOffset": 250,
                    "vOffset": 100,
                    "alignment": "center",
                    "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
                }
            },
            "123": ["1123", "qwe", "sad"],
            "2345": {
                "debug1\ndebug1": "on",
                "debug2": "on",
                "text": {
                    "data": ["Click Here", "asda", "123132"],
                    "alignment": ";\n;\n;",
                    "onMouseUp": ";"
                }
            },
            "132456": "1123",
            "wwwww23": "1123",
        }))
        .with(Style::extended())
        .object_orientation(Orientation::Row)
        .array_orientation(Orientation::Row)
        .collapse(),
    "╔══════════════════╦════════╦══════════════════════════════════════════════════════════════════════╦═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╦═════════╗"
    "║ 123              ║ 132456 ║ 2345                                                                 ║ widget                                                                                                                                ║ wwwww23 ║"
    "╠══════╦═════╦═════╬════════╬════════╦════════╦════════════════════════════════════════════════════╬═══════╦═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╬═════════╣"
    "║ 1123 ║ qwe ║ sad ║ 1123   ║ debug1 ║ debug2 ║ text                                               ║ debug ║ text                                                                                                                          ║ 1123    ║"
    "║      ║     ║     ║        ║ debug1 ║        ║                                                    ╠═══════╬═══════════╦════════════════════════════╦═════════╦═══════╦═══════════════════════════════════════════╦══════╦═══════╦═════════╣         ║"
    "║      ║     ║     ║        ╠════════╬════════╬═══════════╦════════════════════════════╦═══════════╣ on    ║ alignment ║ data                       ║ hOffset ║ name  ║ onMouseUp                                 ║ size ║ style ║ vOffset ║         ║"
    "║      ║     ║     ║        ║ on     ║ on     ║ alignment ║ data                       ║ onMouseUp ║       ╠═══════════╬════════════╦══════╦════════╬═════════╬═══════╬═══════════════════════════════════════════╬══════╬═══════╬═════════╣         ║"
    "║      ║     ║     ║        ║        ║        ╠═══════════╬════════════╦══════╦════════╬═══════════╣       ║ center    ║ Click Here ║ asda ║ 123132 ║ 250     ║ text1 ║ sun1.opacity = (sun1.opacity / 100) * 90; ║ 36   ║ bold  ║ 100     ║         ║"
    "║      ║     ║     ║        ║        ║        ║ ;         ║ Click Here ║ asda ║ 123132 ║ ;         ║       ║           ║            ║      ║        ║         ║       ║                                           ║      ║       ║         ║         ║"
    "║      ║     ║     ║        ║        ║        ║ ;         ║            ║      ║        ║           ║       ║           ║            ║      ║        ║         ║       ║                                           ║      ║       ║         ║         ║"
    "║      ║     ║     ║        ║        ║        ║ ;         ║            ║      ║        ║           ║       ║           ║            ║      ║        ║         ║       ║                                           ║      ║       ║         ║         ║"
    "╚══════╩═════╩═════╩════════╩════════╩════════╩═══════════╩════════════╩══════╩════════╩═══════════╩═══════╩═══════════╩════════════╩══════╩════════╩═════════╩═══════╩═══════════════════════════════════════════╩══════╩═══════╩═════════╩═════════╝"
);