github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/core/datatools/structkeys_doc.yaml (about) 1 - DocumentID: struct-keys 2 Title: >+ 3 `struct-keys` 4 CategoryID: commands 5 Summary: >- 6 Outputs all the keys in a structure as a file path 7 Description: |- 8 `struct-keys` outputs all of the keys in a structured data-type eg JSON, YAML, 9 TOML, etc. 10 11 The output is a JSON array of the keys with each value being a file path 12 representation of the input structure's node. 13 Usage: |- 14 ``` 15 <stdin> -> struct-keys [ depth ] -> <stdout> 16 17 <stdin> -> struct-keys [ flags ] -> <stdout> 18 ``` 19 Examples: |- 20 The source for these examples will be defined in the variable `$example`: 21 22 ``` 23 » set json example={ 24 "firstName": "John", 25 "lastName": "Smith", 26 "isAlive": true, 27 "age": 27, 28 "address": { 29 "streetAddress": "21 2nd Street", 30 "city": "New York", 31 "state": "NY", 32 "postalCode": "10021-3100" 33 }, 34 "phoneNumbers": [ 35 { 36 "type": "home", 37 "number": "212 555-1234" 38 }, 39 { 40 "type": "office", 41 "number": "646 555-4567" 42 }, 43 { 44 "type": "mobile", 45 "number": "123 456-7890" 46 } 47 ], 48 "children": [], 49 "spouse": null 50 } 51 ``` 52 53 Without any flags set: 54 55 ``` 56 » $example -> struct-keys 57 [ 58 "/lastName", 59 "/isAlive", 60 "/age", 61 "/address", 62 "/address/state", 63 "/address/postalCode", 64 "/address/streetAddress", 65 "/address/city", 66 "/phoneNumbers", 67 "/phoneNumbers/0", 68 "/phoneNumbers/0/type", 69 "/phoneNumbers/0/number", 70 "/phoneNumbers/1", 71 "/phoneNumbers/1/number", 72 "/phoneNumbers/1/type", 73 "/phoneNumbers/2", 74 "/phoneNumbers/2/type", 75 "/phoneNumbers/2/number", 76 "/children", 77 "/spouse", 78 "/firstName" 79 ] 80 ``` 81 82 Defining max depth and changing the separator string: 83 84 ``` 85 » $example -> struct-keys --depth 1 --separator '.' 86 [ 87 ".children", 88 ".spouse", 89 ".firstName", 90 ".lastName", 91 ".isAlive", 92 ".age", 93 ".address", 94 ".phoneNumbers" 95 ] 96 ``` 97 98 An example of a unicode character being used as a separator: 99 100 ``` 101 » $example -> struct-keys --depth 2 --separator ☺ 102 [ 103 "☺age", 104 "☺address", 105 "☺address☺streetAddress", 106 "☺address☺city", 107 "☺address☺state", 108 "☺address☺postalCode", 109 "☺phoneNumbers", 110 "☺phoneNumbers☺0", 111 "☺phoneNumbers☺1", 112 "☺phoneNumbers☺2", 113 "☺children", 114 "☺spouse", 115 "☺firstName", 116 "☺lastName", 117 "☺isAlive" 118 ] 119 ``` 120 121 Separator can also be multiple characters: 122 123 ``` 124 » $example -> struct-keys --depth 1 --separator '|||' 125 [ 126 "|||firstName", 127 "|||lastName", 128 "|||isAlive", 129 "|||age", 130 "|||address", 131 "|||phoneNumbers", 132 "|||children", 133 "|||spouse" 134 ] 135 ``` 136 Flags: 137 "--depth" : How far to traverse inside the nested structure 138 "-d" : Alias for `--depth` 139 "--separator": String to use as a separator between fields (defaults to `/`) 140 "-s" : Alias for `--separator` 141 Detail: |- 142 Synonyms: 143 Related: 144 - set 145 - item-index 146 - element 147 - formap 148