RazorEditorParser Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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:
- Uživatel upravuje dokument.
- Editor vytvoří TextChange strukturu popisující úpravy a poskytuje odkaz na aktualizovanou vyrovnávací paměť textu.
- Editor volá CheckForStructureChanges(TextChange) předání této změny.
- Analyzátor určuje, jestli je možné změnu jednoduše použít u existujícího uzlu stromu analýzy.
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. |