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