class SyntaxSuggest::CaptureCodeContext

Verwandelt „ungültige(n) Block(s)“ in nützlichen Kontext

Es gibt drei Hauptphasen im Algorithmus

  1. Bereinigung/Formatierung des Eingabequellcodes

  2. Suche nach ungültigen Blöcken

  3. Formatierung ungültiger Blöcke in etwas Sinnvolles

Diese Klasse behandelt den dritten Teil.

Der Algorithmus ist sehr gut darin, einen Syntaxfehler in einem einzigen Block unter Nummer 2 zu erfassen, jedoch können die Ergebnisse Mehrdeutigkeiten enthalten. Menschen sind gut im Mustererkennung und Filtern und können unwesentliche Daten mental entfernen, aber sie können keine zusätzlichen Daten hinzufügen, die nicht vorhanden sind.

In Fällen bekannter mehrdeutiger Fälle fügt diese Klasse Kontext zur Mehrdeutigkeit hinzu, damit der Programmierer vollständige Informationen hat.

Über die Behandlung dieser Mehrdeutigkeiten hinaus erfasst sie auch Informationen über den umliegenden Codekontext

puts block.to_s # => "def bark"

context = CaptureCodeContext.new(
  blocks: block,
  code_lines: code_lines
)

lines = context.call.map(&:original)
puts lines.join
# =>
  class Dog
    def bark
  end