Files
Oliver Hamlet 5589dfbf4c Replace references to GitHub Flavored Markdown with CommonMark
LOOT now uses Qt's support for Markdown, but its support for GFM is
bugged so LOOT uses CommonMark instead. The practical impact is very
minor, but reflect the difference in libloot's docs.
2022-02-06 17:45:08 +00:00

77 lines
2.0 KiB
ReStructuredText

Group
=====
Groups represent sets of plugins, and are a way to concisely and extensibly
load sets of plugins after other sets of plugins.
This structure can be used to hold group definitions. It is a key-value map.
.. describe:: name
``string``
**Required.** A case-sensitive name that identifies the group.
.. describe:: description
``string``
A CommonMark description of the group, e.g. what sort of plugins it contains.
If undefined, the description is an empty string.
.. describe:: after
``string set``
The names of groups that this group loads after. Group names are
case-sensitive. If undefined, the set is empty. The named groups must be
defined when LOOT sorts plugins, but they don't need to be defined in the same
metadata file.
Sorting errors will occur if:
- A group loads after another group that does not exist.
- Group loading is cyclic (e.g. A loads after B and B loads after A).
Merging Groups
--------------
When a group definition for an already-defined group is encountered, the
``description`` field is replaced if the new value is not an empty string, and
the ``after`` sets of the two definitions are merged.
The ``default`` Group
---------------------
There is one predefined group named ``default`` that all plugins belong to by
default. It is defined with an empty ``after`` set, as no other predefined
groups exist for it to load after.
Like any other group, the ``default`` group can be redefined to add group names
to its ``after`` set.
Equality
--------
Two group data structures are equal if the values of their ``name`` keys are identical.
Examples
--------
.. code-block:: yaml
# Create a group for map marker plugins that loads after the predefined
# 'default' group.
name: 'Map Markers'
description: 'A group for map marker plugins that need to load late.'
after:
- 'default'
.. code-block:: yaml
# Extend the predefined 'default' group to load after an 'Unofficial Patches'
# group that is defined elsewhere.
name: 'default'
after:
- 'Unofficial Patches'