class Prism::Pattern

Ein Muster ist ein Objekt, das einen Ruby-Mustervergleichsausdruck umschließt. Der Ausdruck würde normalerweise an eine in-Klausel innerhalb eines case-Ausdrucks oder eines nachgestellten Zuweisungsausdrucks übergeben. Zum Beispiel im folgenden Ausschnitt

case node
in ConstantPathNode[ConstantReadNode[name: :Prism], ConstantReadNode[name: :Pattern]]
end

ist das Muster der Ausdruck ConstantPathNode[...].

Das Muster wird in ein Objekt kompiliert, das durch Ausführen der Methode compile auf Aufrufe reagiert. Diese Methode selbst läuft zurück durch Prism, um den Ausdruck in einen Baum zu parsen, und durchläuft dann den Baum, um die notwendigen aufrufbaren Objekte zu generieren. Wenn Sie beispielsweise den obigen Ausdruck in ein aufrufbares Objekt kompilieren möchten, würden Sie

callable = Prism::Pattern.new("ConstantPathNode[ConstantReadNode[name: :Prism], ConstantReadNode[name: :Pattern]]").compile
callable.call(node)

Das von compile zurückgegebene aufrufbare Objekt reagiert garantiert auf Aufrufe mit einem einzigen Argument, das der zu vergleichende Knoten ist. Es reagiert auch garantiert auf ===, was bedeutet, dass es selbst in einem case-Ausdruck verwendet werden kann, wie in

case node
when callable
end

Wenn die an den Initialisierer übergebene Abfrage nicht in einen gültigen Übereinstimmungsprozess kompiliert werden kann (entweder aufgrund eines Syntaxfehlers oder weil sie eine Syntax verwendet, die wir noch nicht unterstützen), wird eine Prism::Pattern::CompilationError ausgelöst.