steveosoule
5/3/2016 - 5:48 PM

Miva Developer Utilities Module

Miva Developer Utilities Module

4d69 7661 0500 0100 0000 0000 0000 0000
0000 0000 0000 0000 fa15 0000 0800 0000
5200 0000 da03 0000 0000 0000 0000 0000
4f00 0000 4f00 0000 1200 0000 2a00 0000
0600 0000 3500 0000 1700 0000 6100 0000
0400 0000 6500 0000 1800 0000 7d00 0000
0400 0000 8100 0000 2100 0000 a200 0000
0800 0000 aa00 0000 0500 0000 af00 0000
0700 0000 b600 0000 0400 0000 ba00 0000
0700 0000 3100 0000 0400 0000 c100 0000
0800 0000 c900 0000 9300 0000 5600 0000
0b00 0000 5c01 0000 0d00 0000 6901 0000
0400 0000 6d01 0000 0a00 0000 5c01 0000
0300 0000 0000 0000 0000 0000 7701 0000
0c00 0000 8301 0000 0700 0000 8a01 0000
0100 0000 8b01 0000 0100 0000 8c01 0000
3a00 0000 c601 0000 3a00 0000 0002 0000
3900 0000 3902 0000 0300 0000 7701 0000
0600 0000 3c02 0000 0c00 0000 4802 0000
1800 0000 6002 0000 1400 0000 7402 0000
0200 0000 7602 0000 0d00 0000 8302 0000
3a00 0000 7602 0000 0700 0000 bd02 0000
0a00 0000 6901 0000 0400 0000 6d01 0000
0a00 0000 c702 0000 0e00 0000 6901 0000
0400 0000 c702 0000 0400 0000 7701 0000
0c00 0000 8301 0000 0700 0000 d502 0000
0100 0000 8c01 0000 3a00 0000 d602 0000
3a00 0000 0002 0000 3900 0000 3902 0000
0300 0000 7701 0000 0600 0000 1003 0000
0100 0000 3c02 0000 0c00 0000 1103 0000
0100 0000 1203 0000 0300 0000 1503 0000
0100 0000 7602 0000 0d00 0000 1603 0000
0100 0000 1703 0000 3b00 0000 7602 0000
0700 0000 5203 0000 0100 0000 2800 0000
0100 0000 5303 0000 0b00 0000 6901 0000
0400 0000 5e03 0000 1300 0000 7103 0000
0900 0000 8301 0000 0700 0000 7a03 0000
1300 0000 7103 0000 0900 0000 8d03 0000
0e00 0000 6001 0000 0600 0000 9b03 0000
1600 0000 6001 0000 0600 0000 b103 0000
0700 0000 6001 0000 0600 0000 b803 0000
0700 0000 6001 0000 0600 0000 bf03 0000
0d00 0000 6001 0000 0600 0000 cc03 0000
0800 0000 d403 0000 0600 0000 433a 5573
6572 7373 736f 756c 6544 6f63 756d 656e
7473 5765 6273 6974 6568 7464 6f63 736d
6d35 352e 3030 6d6f 6475 6c65 7375 7469
6c73 6773 5f64 6576 656c 6f70 6572 5f75
7469 6c69 7469 6573 2e6d 766d 6f64 756c
655f 6465 7363 7269 7074 696f 6e63 6f64
6553 4753 3a20 4465 7665 6c6f 7065 7220
5574 696c 6974 6965 736e 616d 6553 7465
7665 6e20 472e 2053 6f75 6c65 2028 7373
6f75 6c65 406d 6976 612e 636f 6d29 7072
6f76 6964 6572 312e 312e 3176 6572 7369
6f6e 352e 3231 6170 695f 7665 7266 6561
7475 7265 7341 204d 6976 6120 6d6f 6475
6c65 2077 6974 6820 6120 7365 7420 6f66
2068 656c 7065 7220 6675 6e63 7469 6f6e
7320 746f 206d 616b 6520 6465 7665 6c6f
706d 656e 7420 6561 7369 6572 2e20 5669
7369 7420 6874 7470 3a2f 2f73 7465 7665
6e73 6f75 6c65 2e63 6f6d 2f73 6773 5f64
6576 656c 6f70 6572 5f75 7469 6c69 7469
6573 2066 6f72 206d 6f72 6520 696e 666f
726d 6174 696f 6e2e 786d 6c5f 7374 7269
6e67 6966 7964 6174 6170 6172 656e 745f
7461 676d 656d 6265 725f 636f 756e 746d
656d 6265 7273 3c3e 5f5f 7363 7261 7463
683a 666f 7265 6163 685f 6172 7261 795f
313a 3863 3366 3138 3639 3239 6635 3135
6639 3438 3034 6339 6539 3532 3863 3264
3866 5f5f 7363 7261 7463 683a 666f 7265
6163 685f 696e 6465 785f 323a 3863 3366
3138 3639 3239 6635 3135 6639 3438 3034
6339 6539 3532 3863 3264 3866 5f5f 7363
7261 7463 683a 666f 7265 6163 685f 6c61
7374 5f31 3a38 6333 6631 3836 3932 3966
3531 3566 3934 3830 3463 3965 3935 3238
6332 6438 6670 6f73 6d65 6d62 6572 5f76
616c 7565 6861 735f 6368 696c 6472 656e
5f6f 725f 7369 626c 696e 6773 6d65 6d62
6572 5f76 616c 7565 5f6d 656d 6265 7273
3c2f 656c 656d 656e 745f 636f 756e 745f
5f73 6372 6174 6368 3a66 6f72 6561 6368
5f69 6e64 6578 5f35 3a38 6333 6631 3836
3932 3966 3531 3566 3934 3830 3463 3965
3935 3238 6332 6438 6678 6d6c 5f6f 7574
7075 746a 736f 6e5f 7374 7269 6e67 6966
797b 5f5f 7363 7261 7463 683a 666f 7265
6163 685f 696e 6465 785f 383a 3863 3366
3138 3639 3239 6635 3135 6639 3438 3034
6339 6539 3532 3863 3264 3866 2c22 223a
207d 5b5f 5f73 6372 6174 6368 3a66 6f72
6561 6368 5f69 6e64 6578 5f31 313a 3863
3366 3138 3639 3239 6635 3135 6639 3438
3034 6339 6539 3532 3863 3264 3866 5d6a
736f 6e5f 6f75 7470 7574 6d69 7661 5f73
7472 7563 745f 6d65 6d62 6572 7361 6767
7265 6761 7465 6d69 7661 5f61 7272 6179
5f65 6c65 6d65 6e74 7365 6e63 6f64 6565
6e74 6974 6965 7365 6e63 6f64 656a 6176
6173 6372 6970 7473 7472 696e 6769 7364
6967 6974 6c65 6e5f 7661 7273 7562 7374
7269 6e67 5f76 6172 706f 7369 7469 6f6e
6c65 6e67 7468 0000 0c00 0000 0000 000c
0000 0000 0c00 080c 0000 003d 0004 0000
0040 000b 0000 006b 0000 0000 006f 0009
0000 0076 0003 0000 0085 0001 0000 0086
0007 0000 00a3 0005 0000 00af 0002 0000
00eb 0008 0000 00ed 0006 0000 00f6 000a
0000 00ff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ffff ffff ffff ffff ffff ffff ffff
ffff ff01 0000 0001 0000 0000 0000 0001
0000 0000 0000 0002 0000 0001 0000 0000
0000 0001 0008 0100 0000 7500 0000 0000
0200 0000 ffff ffff 1100 0000 0200 0000
0000 0000 0200 0000 0000 0000 1200 0000
0100 0000 0000 0000 1300 0000 0000 0000
0100 0000 1000 0810 0000 0015 0004 0000
0017 0005 0000 001b 0009 0000 001d 0008
0000 0038 000c 0000 003a 000a 0000 0059
0003 0000 005d 0006 0000 006b 000f 0000
0070 0002 0000 007b 000e 0000 0095 0007
0000 00a9 0000 0000 00d1 000b 0000 00e4
000d 0000 00e6 0001 0000 0012 0000 00ff
ffff ff13 0000 00ff ffff ff14 0000 00ff
ffff ff16 0000 00ff ffff ff17 0000 00ff
ffff ff1a 0000 00ff ffff ff1b 0000 00ff
ffff ff1c 0000 00ff ffff ff1d 0000 00ff
ffff ff1e 0000 00ff ffff ff1f 0000 00ff
ffff ff20 0000 00ff ffff ff21 0000 00ff
ffff ff23 0000 00ff ffff ff24 0000 00ff
ffff ff25 0000 00ff ffff ff26 0000 0002
0000 0000 0000 0003 0000 0000 0000 0027
0000 0000 0000 0000 0000 0028 0000 0000
0000 0001 0000 0002 0008 0200 0000 a900
0000 0000 e600 0100 0000 2700 0000 ffff
ffff 2800 0000 ffff ffff 2900 0000 0100
0000 0000 0000 0400 0000 0000 0000 2a00
0000 0100 0000 0000 0000 0c00 080d 0000
0015 0003 0000 0017 0004 0000 001b 0008
0000 001d 0007 0000 003a 0009 0000 0050
0001 0000 0059 0002 0000 006b 000c 0000
0095 0006 0000 009c 0005 0000 00a9 0000
0000 00e4 000a 0000 002a 0000 00ff ffff
ff2b 0000 00ff ffff ff2c 0000 00ff ffff
ff2d 0000 00ff ffff ff2f 0000 00ff ffff
ff30 0000 00ff ffff ff31 0000 00ff ffff
ff32 0000 00ff ffff ff33 0000 00ff ffff
ff35 0000 00ff ffff ff39 0000 00ff ffff
ff3b 0000 00ff ffff ff3c 0000 000b 0000
003f 0000 0001 0000 0000 0000 0005 0000
0000 0000 0040 0000 0000 0000 0000 0000
0001 0008 0100 0000 a900 0000 0000 4000
0000 ffff ffff 4100 0000 0200 0000 1100
0000 ffff ffff ffff ffff 4200 0000 0100
0000 0000 0000 4300 0000 0100 0000 0100
0000 0200 0802 0000 0015 0001 0000 00df
0000 0000 0042 0000 00ff ffff ff43 0000
00ff ffff ff44 0000 0001 0000 0011 0000
00ff ffff ffff ffff ff45 0000 0001 0000
0000 0000 0001 0008 0100 0000 df00 0000
0000 4500 0000 ffff ffff 4600 0000 0100
0000 1100 0000 ffff ffff ffff ffff 4700
0000 0000 0000 0000 0000 0100 0801 0000
0025 0000 0000 0047 0000 00ff ffff ff48
0000 0001 0000 0011 0000 00ff ffff ffff
ffff ff49 0000 0000 0000 0000 0000 0001
0008 0100 0000 2500 0000 0000 4900 0000
ffff ffff 4a00 0000 0100 0000 1100 0000
ffff ffff ffff ffff 4b00 0000 0000 0000
0000 0000 0100 0801 0000 0025 0000 0000
004b 0000 00ff ffff ff4c 0000 0001 0000
0011 0000 00ff ffff ffff ffff ff4d 0000
0001 0000 0000 0000 0001 0008 0100 0000
2500 0000 0000 4d00 0000 ffff ffff 4e00
0000 0300 0000 1100 0000 ffff ffff ffff
ffff 4f00 0000 0100 0000 0000 0000 5000
0000 0000 0000 0100 0000 5100 0000 0000
0000 0200 0000 0300 0803 0000 0025 0000
0000 0062 0001 0000 00f1 0002 0000 004f
0000 00ff ffff ff50 0000 00ff ffff ff51
0000 00ff ffff ff06 0000 0000 0000 0000
0000 0020 0000 0020 0000 00cc 0000 00ec
0000 0094 0400 0080 0500 002e 0000 00ae
0500 005a 0400 0008 0a00 0028 0000 004a
4000 0000 0044 4001 0000 0050 4000 0000
004c 4000 0000 0043 0044 4081 0000 004a
4000 0000 0044 4004 0000 0001 4003 0000
0006 4000 0000 0001 4004 0000 0040 0042
0044 4005 0000 0001 4005 0000 0006 4000
0000 0001 4006 0000 0040 0042 0044 4006
0000 0001 4007 0000 0006 4000 0000 0001
4008 0000 0040 0042 0044 4007 0000 0001
4009 0000 0006 4000 0000 0001 400a 0000
0040 0042 0044 4008 0000 0001 400b 0000
0006 4000 0000 0001 400c 0000 0040 0042
0044 4009 0000 0001 400d 0000 0006 4000
0000 0001 400e 0000 0040 0042 0044 400a
0000 0001 400f 0000 0006 4000 0000 0001
4010 0000 0040 0042 003c 004a 4000 0000
0044 400f 0000 0001 4015 0000 000e 4002
0000 0044 4014 0000 0006 4000 0000 0006
4004 0000 003d 4005 0000 004a 4000 0000
0044 4014 0000 000e 4003 0000 0044 4015
0000 0006 4003 0000 0002 4000 0000 0038
0026 4052 0200 0044 4016 0000 0006 4002
0000 0001 4018 0000 0018 0006 4001 0000
0018 0001 4019 0000 0018 000e 4002 0000
0006 4008 0000 0054 4006 0000 0006 4004
0000 0054 4005 0000 0044 4017 0000 0006
4003 0000 000e 4007 0000 0002 4001 0000
000e 4006 0000 0006 4006 0000 0006 4007
0000 0036 0026 40a6 0100 0025 4028 0000
0006 4006 0000 0002 4001 0000 0016 000e
4006 0000 0006 4006 0000 0006 4007 0000
0036 0026 4078 0100 0006 4005 0000 0006
4006 0000 003e 0006 4009 0000 0057 0044
4018 0000 0006 4000 0000 0044 4019 0000
0006 4009 0000 0044 401a 0000 0040 0044
4018 0000 0006 400a 0000 0044 401a 0000
0057 0044 401b 0000 0006 400a 0000 003d
4006 0000 004a 4000 0000 0044 401b 0000
0006 400a 0000 0006 400c 0000 003d 4005
0000 004a 4000 0000 0044 401b 0000 002e
000e 400b 0000 0044 401c 0000 0006 400b
0000 0002 4000 0000 0034 0026 403e 0000
0044 401d 0000 0006 4002 0000 0006 400a
0000 0006 4009 0000 003d 4001 0000 004a
4000 0000 0044 401d 0000 0018 000e 4002
0000 0044 401e 0000 0025 4086 0000 0044
401f 0000 0006 4002 0000 0001 4018 0000
0018 0006 4009 0000 0018 0001 4019 0000
0018 000e 4002 0000 0044 4020 0000 0006
4002 0000 0006 400a 0000 0006 4009 0000
003d 4001 0000 004a 4000 0000 0044 4020
0000 0018 000e 4002 0000 0044 4021 0000
0006 4002 0000 0001 4022 0000 0018 0006
4009 0000 0018 0001 4019 0000 0018 000e
4002 0000 0044 4023 0000 0025 4060 feff
ff44 4024 0000 0006 4002 0000 0001 4022
0000 0018 0006 4001 0000 0018 0001 4019
0000 0018 000e 4002 0000 0044 4025 0000
0006 4002 0000 003b 0044 402c 0000 0006
4000 0000 003d 4006 0000 004a 4000 0000
0044 402c 0000 000e 400d 0000 0044 402d
0000 0006 400d 0000 0002 4000 0000 0038
0026 4086 0100 0006 4008 0000 0054 400e
0000 0006 4000 0000 0054 4005 0000 0044
402e 0000 0006 400d 0000 000e 4007 0000
0002 4001 0000 000e 400e 0000 0006 400e
0000 0006 4007 0000 0036 0026 402e 0100
0025 4028 0000 0006 400e 0000 0002 4001
0000 0016 000e 400e 0000 0006 400e 0000
0006 4007 0000 0036 0026 4000 0100 0006
4005 0000 0006 400e 0000 003e 0006 400f
0000 0057 0044 402f 0000 0006 400f 0000
0006 4004 0000 003d 4005 0000 004a 4000
0000 0044 402f 0000 000e 4003 0000 0044
4030 0000 0006 4003 0000 0002 4000 0000
0033 0026 4068 0000 0044 4031 0000 0006
4002 0000 0001 4018 0000 0018 0006 4001
0000 0018 0001 4019 0000 0018 0006 400f
0000 003d 4007 0000 004a 4000 0000 0044
4031 0000 0018 0001 4022 0000 0018 0006
4001 0000 0018 0001 4019 0000 0018 000e
4002 0000 0044 4032 0000 0025 4032 0000
0044 4033 0000 0006 4002 0000 0006 400f
0000 0006 4001 0000 003d 4001 0000 004a
4000 0000 0044 4033 0000 0018 000e 4002
0000 0044 4035 0000 0025 40d8 feff ff44
4036 0000 0006 4002 0000 003b 0044 403d
0000 0006 4000 0000 003d 4007 0000 004a
4000 0000 0044 403d 0000 003b 003c 004a
4000 0000 0044 4043 0000 0006 4000 0000
0006 4001 0000 003d 4001 0000 004a 4000
0000 0044 4043 0000 0015 003c 004a 4000
0000 0044 4049 0000 0001 4015 0000 000e
4001 0000 0044 404e 0000 0006 4000 0000
0006 4003 0000 003d 4005 0000 004a 4000
0000 0044 404e 0000 000e 4002 0000 0044
404f 0000 0006 4002 0000 0002 4000 0000
0038 0026 409a 0100 0044 4050 0000 0006
4001 0000 0001 402e 0000 0018 000e 4001
0000 0006 4007 0000 0054 4005 0000 0006
4003 0000 0054 4004 0000 0044 4051 0000
0006 4002 0000 000e 4006 0000 0002 4001
0000 000e 4005 0000 0006 4005 0000 0006
4006 0000 0036 0026 400e 0100 0025 4028
0000 0006 4005 0000 0002 4001 0000 0016
000e 4005 0000 0006 4005 0000 0006 4006
0000 0036 0026 40e0 0000 0006 4004 0000
0006 4005 0000 003e 0006 4008 0000 0057
0044 4052 0000 0006 4007 0000 0002 4001
0000 0038 0026 401a 0000 0044 4053 0000
0006 4001 0000 0001 4034 0000 0018 000e
4001 0000 0044 4056 0000 0006 4000 0000
0044 4057 0000 0006 4008 0000 0044 4058
0000 0040 0044 4056 0000 0006 4009 0000
0044 4058 0000 0057 0044 405a 0000 0006
4001 0000 0001 4036 0000 0018 0006 4008
0000 003d 4008 0000 004a 4000 0000 0044
405a 0000 0018 0001 4037 0000 0018 0006
4009 0000 003d 4003 0000 004a 4000 0000
0044 405a 0000 0018 000e 4001 0000 0044
405b 0000 0025 40f8 feff ff44 405c 0000
0006 4001 0000 0001 4038 0000 0018 000e
4001 0000 0044 405e 0000 0006 4001 0000
003b 0044 4064 0000 0006 4000 0000 003d
4006 0000 004a 4000 0000 0044 4064 0000
000e 400a 0000 0044 4065 0000 0006 400a
0000 0002 4000 0000 0038 0026 403c 0100
0044 4066 0000 0006 4001 0000 0001 403a
0000 0018 000e 4001 0000 0006 4007 0000
0054 400b 0000 0006 4000 0000 0054 4004
0000 0044 4067 0000 0006 400a 0000 000e
4006 0000 0002 4001 0000 000e 400b 0000
0006 400b 0000 0006 4006 0000 0036 0026
40b0 0000 0025 4028 0000 0006 400b 0000
0002 4001 0000 0016 000e 400b 0000 0006
400b 0000 0006 4006 0000 0036 0026 4082
0000 0006 4004 0000 0006 400b 0000 003e
0006 400c 0000 0057 0044 4068 0000 0006
4007 0000 0002 4001 0000 0038 0026 401a
0000 0044 4069 0000 0006 4001 0000 0001
4034 0000 0018 000e 4001 0000 0044 406c
0000 0006 4001 0000 0006 400c 0000 003d
4003 0000 004a 4000 0000 0044 406c 0000
0018 000e 4001 0000 0044 406d 0000 0025
4056 ffff ff44 406e 0000 0006 4001 0000
0001 403d 0000 0018 000e 4001 0000 0044
4070 0000 0006 4001 0000 003b 0044 4076
0000 0006 4000 0000 003d 4009 0000 004a
4000 0000 0044 4076 0000 0044 4077 0000
0006 4000 0000 005a 0039 002d 0044 4078
0000 0006 4000 0000 003d 400a 0000 004a
4000 0000 0044 4078 0000 0002 4002 0000
0035 0006 4000 0000 0002 4001 0000 0002
4001 0000 003d 400b 0000 004a 4000 0000
0044 4078 0000 0001 403e 0000 0033 002d
0039 002d 0026 4022 0000 0044 4079 0000
0006 4001 0000 0006 4000 0000 0018 003b
0044 407a 0000 0025 4038 0000 0044 407b
0000 0006 4001 0000 0001 4036 0000 0018
0006 4000 0000 003d 4008 0000 004a 4000
0000 0044 407b 0000 0018 0001 4036 0000
0018 003b 003c 004a 4000 0000 0044 4080
0000 0006 4000 0000 003d 4003 0000 004a
4000 0000 0044 4080 0000 0015 003c 0000
000c 0000 0000 0000 0000 6469 6374 2000
0000 7606 0000 676c 626c 9606 0000 0700
0000 7379 7374 9d06 0000 0700 0000 6675
6e63 a406 0000 e304 0000 7365 6773 870b
0000 680a 0000 6964 6e74 ef15 0000 0000
0000 6c6f 636c ef15 0000 0700 0000 6c6f
6364 f615 0000 0400 0000 
<MIVA STANDARDOUTPUTLEVEL="" ERROROUTPUTLEVEL=""><MvEXIT>

<MvFUNCTION NAME = "Module_Description" PARAMETERS = "module var" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.module:code"	VALUE = "sgs_developer_utilities">
	<MvASSIGN NAME = "l.module:name"	VALUE = "SGS: Developer Utilities">
	<MvASSIGN NAME = "l.module:provider"	VALUE = "Steven G. Soule (ssoule@miva.com)">
	<MvASSIGN NAME = "l.module:version"	VALUE = "1.1.1">
	<MvASSIGN NAME = "l.module:api_ver"	VALUE = "5.21">
	<MvASSIGN NAME = "l.module:features"	VALUE = "util">
	<MvASSIGN NAME = "l.module:description"	VALUE = "A Miva module with a set of helper functions to make development easier. Visit http://stevensoule.com/sgs_developer_utilities for more information.">
</MvFUNCTION>

<MvFUNCTION NAME = "XML_Stringify" PARAMETERS = "data var, parent_tag" STANDARDOUTPUTLEVEL = "">

	<MvASSIGN NAME = "l.xml" VALUE = "{ '' }">

	<MvCOMMENT>
		| Members/Keys/Associative Arrays
	</MvCOMMENT>
	<MvASSIGN NAME = "l.member_count"	VALUE = "{ miva_struct_members( l.data, l.members ) }">
	<MvIF EXPR = "{ l.member_count GT 0 }">
		<MvASSIGN NAME = "l.xml" VALUE = "{ l.xml $ '<' $ l.parent_tag $ '>' }">
			<MvFOREACH INDEX = "l.pos" ITERATOR = "l.member" ARRAY = "l.members" COUNT = "{ l.member_count }">
				<MvREFERENCEARRAY NAME = "l.member_value" VARIABLE = "l.data">
					<MvMEMBER NAME = "{ l.member }">
				</MvREFERENCEARRAY>
				<MvASSIGN NAME = "l.has_children_or_siblings" VALUE = "{ miva_array_elements(l.member_value) OR miva_struct_members(l.member_value, l.member_value_members) }"/>
				<MvIF EXPR = "{ l.has_children_or_siblings }">
					<MvASSIGN NAME = "l.xml" VALUE = "{ l.xml $ XML_Stringify( l.member_value, l.member ) }">
				<MvELSE>
					<MvASSIGN NAME = "l.xml" VALUE = "{ l.xml $ '<' $ l.member $ '>' }">
						<MvASSIGN NAME = "l.xml" VALUE = "{ l.xml $ XML_Stringify( l.member_value, l.member ) }">
					<MvASSIGN NAME = "l.xml" VALUE = "{ l.xml $ '</' $ l.member $ '>' }">
				</MvIF>
			</MvFOREACH>
		<MvASSIGN NAME = "l.xml" VALUE = "{ l.xml $ '</' $ l.parent_tag $ '>' }">
		<MvFUNCTIONRETURN VALUE = "{ l.xml }">
	</MvIF>


	<MvCOMMENT>
		| Index Based Arrays
	</MvCOMMENT>
	<MvASSIGN NAME = "l.element_count"	VALUE = "{ miva_array_elements( l.data ) }">
	<MvIF EXPR = "{ l.element_count GT 0 }">
		<MvFOREACH INDEX = "l.pos" ITERATOR = "l.element" ARRAY = "l.data" COUNT = "{ l.element_count }">
			<MvASSIGN NAME = "l.member_count"	VALUE = "{ miva_struct_members( l.element, l.members ) }">
			<MvIF EXPR = "{ l.member_count EQ 0 }">
				<MvASSIGN NAME = "l.xml" VALUE = "{ l.xml $ '<' $ l.parent_tag $ '>' $ encodeentities(l.element) $ '</' $ l.parent_tag $ '>' }">
			<MvELSE>
				<MvASSIGN NAME = "l.xml" VALUE = "{ l.xml $ XML_Stringify( l.element, l.parent_tag ) }">
			</MvIF>
		</MvFOREACH>
		<MvFUNCTIONRETURN VALUE = "{ l.xml }">
	</MvIF>


	<MvCOMMENT>
		| Content/Value
	</MvCOMMENT>
	<MvFUNCTIONRETURN VALUE = "{ encodeentities(l.data) }">

</MvFUNCTION>


<MvFUNCTION NAME = "XML_Output" PARAMETERS = "data, parent_tag" STANDARDOUTPUTLEVEL = "">
	<MvEVAL EXPR = "{ XML_Stringify(l.data, l.parent_tag) }" />
</MvFUNCTION>


<MvFUNCTION NAME = "JSON_Stringify" PARAMETERS = "data var" STANDARDOUTPUTLEVEL = "">

	<MvASSIGN NAME = "l.json" VALUE = "{ '' }">

	<MvCOMMENT>
		| Members/Keys/Associative Arrays
	</MvCOMMENT>
	<MvASSIGN NAME = "l.member_count"	VALUE = "{ miva_struct_members( l.data, l.members ) }">
	<MvIF EXPR = "{ l.member_count GT 0 }">
		<MvASSIGN NAME = "l.json" VALUE = "{ l.json $ '{' }">
			<MvFOREACH INDEX = "l.pos" ITERATOR = "l.member" ARRAY = "l.members" COUNT = "{ l.member_count }">
				<MvIF EXPR = "{ l.pos GT 1 }">
					<MvASSIGN NAME = "l.json" VALUE = "{ l.json $ ',' }">
				</MvIF>

				<MvREFERENCEARRAY NAME = "l.member_value" VARIABLE = "l.data">
					<MvMEMBER NAME = "{ l.member }">
				</MvREFERENCEARRAY>

				<MvASSIGN NAME = "l.json" VALUE = "{ l.json $ '"' $ encodejavascriptstring( l.member ) $ '": ' $ JSON_Stringify( l.member_value ) }">
			</MvFOREACH>
		<MvASSIGN NAME = "l.json" VALUE = "{ l.json $ '}' }">

		<MvFUNCTIONRETURN VALUE = "{ l.json }">
	</MvIF>

	<MvCOMMENT>
		| Index Based Arrays
	</MvCOMMENT>
	<MvASSIGN NAME = "l.element_count"	VALUE = "{ miva_array_elements( l.data ) }">
	<MvIF EXPR = "{ l.element_count GT 0 }">
		<MvASSIGN NAME = "l.json" VALUE = "{ l.json $ '[' }">
		<MvFOREACH INDEX = "l.pos" ITERATOR = "l.element" ARRAY = "l.data" COUNT = "{ l.element_count }">
			<MvIF EXPR = "{ l.pos GT 1 }">
				<MvASSIGN NAME = "l.json" VALUE = "{ l.json $ ',' }">
			</MvIF>

			<MvASSIGN NAME = "l.json" VALUE = "{ l.json $ JSON_Stringify( l.element ) }">
		</MvFOREACH>
		<MvASSIGN NAME = "l.json" VALUE = "{ l.json $ ']' }">

		<MvFUNCTIONRETURN VALUE = "{ l.json }">
	</MvIF>

	<MvCOMMENT>
		| Content/Value
	</MvCOMMENT>
	<MvIF EXPR = "{ isdigit( l.data ) 	AND
					NOT ISNULL l.data	AND
					NOT ( len_var( l.data ) GE 2 AND substring_var( l.data, 1, 1 ) EQ '0' ) }">
		<MvFUNCTIONRETURN VALUE = "{ l.json $ l.data }">
	<MvELSE>
		<MvFUNCTIONRETURN VALUE = "{ l.json $ '"' $ encodejavascriptstring( l.data ) $ '"' }">
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "JSON_Output" PARAMETERS = "data" STANDARDOUTPUTLEVEL = "">
	<MvEVAL EXPR = "{ JSON_Stringify(l.data) }" />
</MvFUNCTION>

Developer Utilities

UPDATE: Latest version is now maintained at the Github repo

A Miva module with a set of helper functions to make development easier.

Functions

XML_Stringify

Pass a miva data structure & text for a parent tag to wrap it in, and it will return the XML string

Parameters: data var, parent_tag Return Value string

<mvt:do file="g.Module_Root $ g.Module_Path $ 'util/sgs_developer_utilities.mvc'" name="l.settings:xml" value="XML_Stringify(l.settings:basket, 'basket')" />
&mvt:xml;

XML_Output

Same as XML_Stringify but it will output directly to the page

Parameters: data var, parent_tag Return Value null

<mvt:do file="g.Module_Root $ g.Module_Path $ 'util/sgs_developer_utilities.mvc'" name="l.null" value="XML_Output(l.settings:basket, 'basket')" />

JSON_Stringify

Pass a miva data structure, and it will return a JSON string (Based on Miva's JSON_Output function in json.mv)

Parameters: data var, parent_tag Return Value string

<mvt:do file="g.Module_Root $ g.Module_Path $ 'util/sgs_developer_utilities.mvc'" name="l.settings:json" value="JSON_Stringify(l.settings:basket)" />
&mvt:json;

JSON_Output

Same as JSON_Stringify but it will output the JSON directly to the page.

Parameters: data var, parent_tag Return Value null

<mvt:do file="g.Module_Root $ g.Module_Path $ 'util/sgs_developer_utilities.mvc'" name="l.null" value="JSON_Output(l.settings:basket)" />