# Module: `gears.sort`

Utilities to sort and arrange data.

## lib.gears.sort.topological Functions

:append (node, dependencies) | Ensure that `node` appears after all `dependencies`. |
:prepend (node, subordinates) | Ensure that `node` appears before all `subordinates`. |
:clone () -> gears.sort.topological | Create a copy of this topological sort. |
:remove (node) | Remove a node from the topological map. |
:sort () -> table or nil | Try to sort the nodes. |
gears.sort.topological () | A topological sorting class. |

## lib.gears.sort.topological Functions

🔗 :append (node, dependencies)
  Ensure that `node` appears after all `dependencies`.

  ### Parameters:

  Name |  | Type(s) | Description
  --- | --- | --- | ---
  node |  |  | The node that edges are added to.
  dependencies |  | table | List of nodes that have to appear before `node`.

🔗 :prepend (node, subordinates)
  Ensure that `node` appears before all `subordinates`.

  ### Parameters:

  Name |  | Type(s) | Description
  --- | --- | --- | ---
  node |  |  | The node that edges are added to.
  subordinates |  | table | List of nodes that have to appear after `node`.

🔗 :clone () -> gears.sort.topological
  Create a copy of this topological sort. This is useful to backup it before adding elements that can potentially have circular dependencies and thus render the original useless.

  ### Returns:

  gears.sort.topological The cloned sorter object.
🔗 :remove (node)
  Remove a node from the topological map.

  ### Parameters:

  Name |  | Type(s) | Description
  --- | --- | --- | ---
  node |  |  | The node

🔗 :sort () -> table or nil
  Try to sort the nodes.

  ### Returns:

  table A sorted list of nodes

  ### Or

  1. nil
  2. A node around which a loop exists
🔗 gears.sort.topological ()
  A topological sorting class.

  The object returned by this function allows to create simple dependency graphs. It can be used for decision making or ordering of complex sequences.

  **Usage example output**:

  The position #1 is: a The position #2 is: b The position #3 is: c The position #4 is: d The position #5 is: e The position #6 is: f

  ### Usage:

      local tsort = gears.sort.topological()
      tsort:prepend('a', { 'b' })
      tsort:prepend('b', { 'c' })
      tsort:prepend('c', { 'd' })
      tsort:append('e', { 'd' })
      tsort:append('f', { 'e', 'd' })
      local res = assert(tsort:sort())
      for k, v in ipairs(res) do
          print("The position #"..k.." is: "..v)
      end

generated by LDoc 1.5.0