Bearbeiten von „Datei search engine.dart“
Zur Navigation springen
Zur Suche springen
Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.
Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version | Dein Text | ||
Zeile 279: | Zeile 279: | ||
lastShowedLine = lineNo; | lastShowedLine = lineNo; | ||
} | } | ||
} else { | |||
} | hitLines++; | ||
totalHitLines++; | |||
if (searchOptions.list) { | |||
showLine(file); | |||
break; | |||
} | |||
aboveBound = lineNo + searchOptions.aboveContext; | |||
if (!searchOptions.count) { | |||
if (searchOptions.belowContext > 0) { | |||
for (var lineNo2 = lineNo - searchOptions.belowContext; | |||
lineNo2 < lineNo; | |||
lineNo2++) { | |||
if (lineNo2 > lastShowedLine) { | |||
line2 = formatLine(searchOptions.formatContext, file, | |||
lines[lineNo2 - 1], lineNo2, '<'); | |||
showLine(line2); | |||
} | |||
} | } | ||
} | } | ||
line2 = formatLine( | |||
searchOptions.format, file, line, lineNo, prefixMatch, | |||
match: match); | |||
showLine(line2); | |||
lastShowedLine = lineNo; | |||
} | |||
if (searchOptions.exitLines != null && | |||
totalHitLines >= searchOptions.exitLines) { | |||
throw ExitException('hit lines: $totalHitLines'); | |||
} | |||
if (searchOptions.breakLines != null && | |||
hitLines >= searchOptions.breakLines) { | |||
break; | |||
} | } | ||
} | } | ||
} | } | ||
Zeile 325: | Zeile 325: | ||
} | } | ||
} | } | ||
</pre> | </pre> | ||
* <code>final lines = File(file).readAsLinesSync();</code> Die Klasse <code>File></code> instantiiert ein Objekt mit dem Dateinamen <code>file</code>, die Methode <code>readAsLinesSync()</code> liefert den Dateiinhalt als Liste von Zeilen. | * <code>final lines = File(file).readAsLinesSync();</code> Die Klasse <code>File></code> instantiiert ein Objekt mit dem Dateinamen <code>file</code>, die Methode <code>readAsLinesSync()</code> liefert den Dateiinhalt als Liste von Zeilen. | ||
Zeile 332: | Zeile 331: | ||
* <code>isHit = !searchOptions.invertMatch && match != null || searchOptions.invertMatch && match == null;</code> | * <code>isHit = !searchOptions.invertMatch && match != null || searchOptions.invertMatch && match == null;</code> | ||
** Ein Treffer liegt vor, wenn die Option <code>--invert-match</code> gesetzt ist und das Suchmuster nicht gefunden wurde oder wenn Option <code>--invert-match</code> '''nicht''' gesetzt ist und das Suchmuster gefunden wurde. | ** Ein Treffer liegt vor, wenn die Option <code>--invert-match</code> gesetzt ist und das Suchmuster nicht gefunden wurde oder wenn Option <code>--invert-match</code> '''nicht''' gesetzt ist und das Suchmuster gefunden wurde. | ||
* <code>if (!isHit)</code> Wenn kein Treffer vorliegt, Behandlung des "nachfolgenden Contexts" (Option <code>--above-lines</code>) | * <code>if (!isHit)</code> Wenn kein Treffer vorliegt, Behandlung des "nachfolgenden Contexts" (Option <code>--above-lines</code>) | ||
* <code>if (searchOptions.list)</code> Wenn die Option <code>--list</code> gesetzt ist, wird der Dateiname ausgegeben <code>showLine(file);</code> und die Suche in dieser Datei beendet (<code>break</code>). | * <code>if (searchOptions.list)</code> Wenn die Option <code>--list</code> gesetzt ist, wird der Dateiname ausgegeben <code>showLine(file);</code> und die Suche in dieser Datei beendet (<code>break</code>). | ||
* <code>if (!searchOptions.count)</code> Wenn die Option <code>--count</code> nicht gesetzt ist | * <code>if (!searchOptions.count)</code> Wenn die Option <code>--count</code> nicht gesetzt ist... | ||
* <code>line2 = formatLine(searchOptions.format, file, line, lineNo, prefixMatch, match: match);</code> Der Treffer wird aufbereitet ... | * <code>line2 = formatLine(searchOptions.format, file, line, lineNo, prefixMatch, match: match);</code> Der Treffer wird aufbereitet ... | ||
* <code>showLine(line2);</code> ... und ausgegeben | * <code>showLine(line2);</code> ... und ausgegeben |