Zum Inhalt

tsort: Führt eine topologische Sortierung der Eingabedaten durch

Installation

Wenn Sie noch kein RPM-Repository-Abonnement eingerichtet haben, melden Sie sich an. Dann können Sie mit den folgenden Schritten fortfahren.

CentOS/RHEL 7 oder Amazon Linux 2

yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-tsort

CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023

dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-tsort

Um diese Lua-Bibliothek mit NGINX zu verwenden, stellen Sie sicher, dass nginx-module-lua installiert ist.

Dieses Dokument beschreibt lua-resty-tsort v1.0, das am 06. April 2016 veröffentlicht wurde.


Führt eine topologische Sortierung der Eingabedaten durch.

Synopsis

local dump  = require "pl.pretty".dump
local tsort = require "resty.tsort"

local graph = tsort.new()

graph:add('a', 'b')
graph:add('b', 'c')
graph:add('0', 'a')

dump(graph:sort())

-- Ausgabe:
-- {
--   "0",
--   "a",
--   "b",
--   "c"
-- }

graph:add('1', '2', '3', 'a');

dump(graph:sort())

-- Ausgabe:
-- {
--   "0",
--   "1",
--   "2",
--   "3",
--   "a",
--   "b",
--   "c"
-- }

graph:add{'1', '1.5'};
graph:add{'1.5', 'a'};

dump(graph:sort())

-- Ausgabe:
-- {
--   "0",
--   "1",
--   "2",
--   "3",
--   "1.5",
--   "a",
--   "b",
--   "c"
-- }

graph:add('first', 'second');
graph:add('second', 'third', 'first');

local sorted, err = graph:sort()

-- Gibt zurück:
-- sorted = nil
-- err = "Es gibt eine zirkuläre Abhängigkeit im Graphen. Es ist nicht möglich, eine topologische Sortierung abzuleiten."

Alternativen

Bevor ich diese Bibliothek entwickelt habe, habe ich im #lua-Kanal auf Freenode gefragt, ob jemand eine Bibliothek kennt, die eine topologische Sortierung durchführt. Ich habe auch versucht, nach einer Bibliothek zu suchen. Leider habe ich nichts gefunden. Aber es gab bereits eine Bibliothek vom großartigen @starius namens toposort. toposort sieht wirklich gut aus und hat im Vergleich zu lua-resty-tsort viele weitere Funktionen. Daher möchten Sie vielleicht auch einen Blick darauf werfen, insbesondere wenn Sie nach einer umfangreicheren Bibliothek suchen. Ich habe diese Bibliotheken nicht benchmarked oder mit der C-Implementierung von tsort oder anderen Alternativen verglichen. Wenn Ihr Graph nicht zu groß ist, sagen wir, Sie verwenden diese, um Javascript / CSS-Dateien oder etwas Ähnliches zu sortieren, denke ich, dass die Leistung kein Problem darstellt.

GitHub

Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-tsort.