Sdílet prostřednictvím


RazorEditorParser Třída

Definice

Parser používaný editory, aby při každé změně textu nedocházelo k úpravám celého dokumentu.

public ref class RazorEditorParser : IDisposable
public class RazorEditorParser : IDisposable
type RazorEditorParser = class
    interface IDisposable
Public Class RazorEditorParser
Implements IDisposable
Dědičnost
RazorEditorParser
Implementuje

Poznámky

Tento analyzátor je navržený tak, aby editorům umožnil vyhnout se starostem o přírůstkovou analýzu. Metodu CheckForStructureChanges(TextChange) lze volat s každou změnou provedenou uživatelem v editoru a analyzátor poskytne výsledek, který bude indikovat, jestli bylo možné tuto změnu postupně použít.

Obecný pracovní postup pro editory s tímto analyzátorem je:

  1. Uživatel upravuje dokument.
  2. Editor vytvoří TextChange strukturu popisující úpravy a poskytuje odkaz na aktualizovanou vyrovnávací paměť textu.
  3. Editor volá CheckForStructureChanges(TextChange) předání této změny.
  4. Analyzátor určuje, jestli je možné změnu jednoduše použít u existujícího uzlu stromu analýzy.
POZNÁMKA: Další příznaky lze použít na PartialParseResult. Další podrobnosti najdete enum v tomto tématu. Accepted Příznaky nebo Rejected však budou VŽDY k dispozici.

Změnu lze postupně analyzovat pouze v případě, Span že jeden jedinečný (viz Microsoft.AspNetCore.Razor.Parser.SyntaxTree) ve stromu syntaxe lze identifikovat jako vlastníka celé změny. Pokud se například změna překrývá s více Spans, nelze ji analyzovat přírůstkově a je nutné provést úplné opakování. " Span Vlastní" změnu, pokud ke změně dojde buď a) zcela uvnitř svých hranic, nebo b) je to pouhé vložení (viz TextChange) na konci objektu, Span který EditHandler změnu může přijmout (viz CanAcceptChange(Span, TextChange)).

Jakmile se vrátí RazorEditorParserAccepted, okamžitě se aktualizuje CurrentParseTree . Očekává se ale, že editor aktualizuje své vlastní datové struktury nezávisle. Může k tomu použít CurrentParseTree , jakmile se editor vrátí z CheckForStructureChanges(TextChange), ale měl by (v ideálním případě) mít logiku, aby to udělal, aniž by potřeboval nový strom.

Když Rejected nástroj vrátí CheckForStructureChanges(TextChange), úloha analýzy na pozadí již byla spuštěna. Po dokončení této úlohy se aktivuje událost obsahující DocumentParseComplete nový vygenerovaný kód, strom analýzy a odkaz na původní TextChange , který způsobil přepsanou analýzu, aby editor mohl vyřešit nový strom proti změnám provedeným od volání CheckForStructureChanges(TextChange).

Pokud dojde k CheckForStructureChanges(TextChange) volání v době, kdy již probíhá rerse, je rerse zrušena OKAMŽITĚ a Rejected vrátí se bez pokusu o opakování. To znamená, že pokud příjemce zavolá CheckForStructureChanges(TextChange), který vrátí Rejected, zavolá ho znovu před tím, než DocumentParseComplete se aktivuje, obdrží pouze jednu DocumentParseComplete událost pro druhou změnu.

Konstruktory

RazorEditorParser(RazorEngineHost, String)

Vytvoří analyzátor editoru. Pro každý aktivní editor by se měla použít jedna instance. Tuto instanci lze sdílet mezi reparsy, ale nikdy by neměla být sdílena mezi dokumenty.

Vlastnosti

CurrentParseTree

Parser používaný editory, aby při každé změně textu nedocházelo k úpravám celého dokumentu.

FileName

Parser používaný editory, aby při každé změně textu nedocházelo k úpravám celého dokumentu.

Host

Parser používaný editory, aby při každé změně textu nedocházelo k úpravám celého dokumentu.

LastResultProvisional

Parser používaný editory, aby při každé změně textu nedocházelo k úpravám celého dokumentu.

Metody

CheckForStructureChanges(TextChange)

Určuje, jestli změna způsobí strukturální změnu v dokumentu, a pokud ne, použije ji na existující strom. Pokud by došlo ke strukturální změně, spustí se automaticky přepouštěná změna.

Dispose()

Odstraní tento analyzátor. Mělo by se volat při zavření okna editoru a uvolnění dokumentu.

Dispose(Boolean)

Parser používaný editory, aby při každé změně textu nedocházelo k úpravám celého dokumentu.

GetAutoCompleteString()

Parser používaný editory, aby při každé změně textu nedocházelo k úpravám celého dokumentu.

Událost

DocumentParseComplete

Událost se aktivovala po dokončení úplného opakování dokumentu.

Platí pro