class SyntaxSuggest::CodeSearch

Durchsucht Code nach einem Syntaxfehler

Es gibt drei Hauptphasen im Algorithmus

  1. Bereinigung/Formatierung des Eingabequellcodes

  2. Suche nach ungültigen Blöcken

  3. Formatiert ungültige Blöcke in etwas Sinnvolles

Diese Klasse kümmert sich um diesen Teil.

Der Großteil der Schwerstarbeit wird in

- CodeFrontier (Holds information for generating blocks and determining if we can stop searching)
- ParseBlocksFromLine (Creates blocks into the frontier)
- BlockExpand (Expands existing blocks to search more code)

## Syntaxfehlererkennung

Wenn die Grenze den Syntaxfehler enthält, können wir die Suche stoppen

search = CodeSearch.new(<<~EOM)
  def dog
    def lol
  end
EOM

search.call

search.invalid_blocks.map(&:to_s) # =>
# => ["def lol\n"]