Annotated config fileΒΆ

Here is a YAML config file, annotated to explain all the keys/values/lists etc.

case_sensitive: False  # optional, boolean, default False
screen_width: 80  # optional, integer, default 80
tabs:  # if there's only one tab, there should be no headers. In fact, you can leave out the tabs
       # key entirely and have 'items' as a top-level key.
  - tab_header_input: a  # this is the input that will change to this header; it can be any length
    tab_header_description: First tab  # this key is optional, or it can be None. It is displayed next to the tab_header_input
    tab_header_long_description: Changing to First tab  # this key is optional, or it can be set to None.
                                                        # it is displayed only when changing tabs 
    items:
      - item_choice_displayed: x  # an element to be put within square brackets to the left of every choice/item line
                                  # note that it does not necessarily have to correspond at all to item_inputs, although
                                  # it probably should
        item_description: Choice x  # displayed to the right of item_choice_displayed
        item_inputs:  # not displayed, a list of all inputs that will trigger the return of this item's 'item_returns'
          - x
        item_returns: xmarksthespot  # just a string
      - item_choice_displayed: y,z  # note I put a comma here for clarity, but this field is not parsed, I could have put 
                                    # anything eg "yz", "y|z", "y or z", "fizzbin", etc.
        item_description: Choice y or z
        item_inputs: 
          - y
          - z
        item_returns: yorz
  - tab_header_input: bee  # the second tab, note we can require a multi-letter input. This one has no descriptions.
    items:
      - item_choice_displayed: z  # this overlaps with the other tab, but that's okay, it's a different tab
        item_description: Choice z
        item_inputs: 
          - z  
        item_returns: z
      - item_choice_displayed: spam  # again multi-letter
        item_description: Surprise!
        item_inputs: 
          - ham
          - jam
          - lamb  # none of these match the choice displayed! Bad idea, but they don't have to!
        item_returns: 1001010001010  # why not?