Paste #50691: Edit of P#50690 YAML Reader

Date: 2018/11/15 05:46:16 UTC-08:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


readYAML:
# In-game YAML reader.
  type: command
  debug: false
  name: readyaml
  description: Shows the entries of a YAML file in chat.
  usage: /readyaml <&lt>yamlID<&gt>
  tab complete:
    - define yamlList "<yaml.list>"
    - if "<def[yamlList].is_empty>":
      - determine li@
    - if "<c.args.size>" > "1":
      - determine li@
    - define yamlID "<c.args.get[1]||>"
    - determine "<def[yamlList].filter[starts_with[<def[yamlID]>]]>"
  script:
    - define yamlList "<yaml.list>"
    - if "<def[yamlList].is_empty>":
      - narrate "<&6>There are no YAML files loaded."
      - queue clear
    - define yamlID "<c.args.get[1]||null>"
    - if "<def[yamlID]>" == null:
      - narrate "<&6>Specify the ID of the file you wish to view."
      - narrate "<&6>Usage<&co> <&c><&dq>/readyaml <&lt>yamlID<&gt><&dq><&6>."
      - queue clear
    - if "<def[yamlList].contains[<def[yamlID]>].not>":
      - narrate "<&6>There is no loaded file by the name of <&c><&dq><def[yamlID]><&dq><&6>."
      - queue clear
    - define keys "<yaml[<def[yamlID]>].list_keys[]>"
    - if "<def[keys].is_empty>":
      - narrate "<&6>The file specified exists, but is empty."
      - queue clear
    - define deep_keys "<yaml[<def[yamlID]>].list_deep_keys[]>"
    - foreach "<def[keys]>":
      - define key "<def[value]>"
      - define subkeys "<def[deep_keys].filter[starts_with[<def[value]>]]>"
      - define subkeys "<def[subkeys].sort_by_number[split_by[.].size]>"
      - foreach "<def[subkeys]>":
        - define subkey "<def[value]>"
        - define sp "<el@.pad_left[<def[subkey].split_by[.].size.sub[1].mul[2]>]>"
        - define subkey_formatted "<def[subkey]>"
        - if "<def[subkey].contains[.]>":
          - define subkey_formatted "<def[subkey].after_last[.]>"
        - if "<def[subkeys].filter[starts_with[<def[subkey]>]].size>" > "1":
          # Has more subkeys.
          - narrate "<def[sp]><&a><def[subkey_formatted]><&co>"
        - else:
          # Is the last subkey.
          - define value "<yaml[<def[yamlID]>].read[<def[subkey]>]>"
          - if "<def[value].type>" == "List":
            - narrate "<def[sp]><&a><def[subkey_formatted]><&co>"
            - foreach "<def[value]>":
              - narrate "<def[sp]>  <&7>- <&f><def[value]>"
          - else:
            - narrate "<def[sp]><&a><def[subkey_formatted]><&co> <&f><def[value]>"