RazorEditorParser Třída

Definice

Analyzátor používaný editory k zamezení přeanalýzování celého dokumentu při každé změně textu.

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 umožňoval editorům vyhnout se nutnosti dělat si starosti s přírůstkovým analýzou. CheckForStructureChanges(TextChange)Metodu lze volat při každé změně provedené uživatelem v editoru a analyzátor poskytne výsledek označující, zda byl schopen přírůstkově použít změnu.

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

  1. Dokument upravuje uživatel.
  2. Editor vytvoří TextChange strukturu popisující úpravu a poskytuje odkaz na aktualizovanou vyrovnávací paměť textu.
  3. Volání editoru CheckForStructureChanges(TextChange) , které tuto změnu procházejí.
  4. Analyzátor určuje, zda lze změnu jednoduše použít na existující uzel stromu analýzy.
Poznámka: další příznaky lze použít pro PartialParseResult . Další informace naleznete v tomto výčtu . Nicméně Accepted Rejected příznaky nebo budou vždy k dispozici.

Změnu lze přírůstkově analyzovat pouze v případě, že je možné identifikovat jednu, jedinečnou hodnotu Span (viz Microsoft.AspNetCore.Razor.Parser.SyntaxTree ) ve stromové struktuře syntaxe jako vlastnící celou změnu. Například pokud se změna překrývá s více Span s, změnu nelze analyzovat přírůstkově a je nutné provést úplné reanalýzování. Span"Vlastní" Změna, pokud dojde ke změně buď zcela v rámci hranice nebo b), je čistě vkládání (viz TextChange ) na konci a, Span jejichž EditHandler Změna může přijmout změnu (viz CanAcceptChange(Span, TextChange) ).

Po RazorEditorParser návratu se Accepted aktualizace aktualizuje CurrentParseTree okamžitě. V editoru je však očekávána aktualizace vlastních datových struktur nezávisle na sobě. To může použít CurrentParseTree k tomu, jakmile se Editor vrátí z CheckForStructureChanges(TextChange) , ale měl by (ideálně) mít logiku pro to, aniž by bylo potřeba nový strom.

Když Rejected je vrácena nástrojem CheckForStructureChanges(TextChange) , úloha analýzy na pozadí již byla spuštěna. Po dokončení této úlohy DocumentParseComplete bude událost vyvolána obsahující nový generovaný kód, strom analýzy a odkaz na originál TextChange , který způsobil přeanalýzu, aby Editor mohl přeložit nový strom na všechny změny provedené od volání CheckForStructureChanges(TextChange) .

Pokud CheckForStructureChanges(TextChange) je volání provedeno v době, kdy již probíhá opětovné zpracování, přeanalýzou se okamžitě zruší a Rejected vrátí se, aniž by se pokoušel znovu analyzovat. To znamená, že pokud příjemce volá CheckForStructureChanges(TextChange) , který vrací Rejected , pak je znovu volá před vyvoláním DocumentParseComplete , bude DocumentParseComplete pro druhou změnu přijímat pouze jednu událost.

Konstruktory

RazorEditorParser(RazorEngineHost, String)

Vytvoří analyzátor editoru. Pro každý aktivní Editor by se měla použít jedna instance. Tato instance může být sdílená mezi reanalýzami, ale neměla by být sdílená mezi dokumenty.

Vlastnosti

CurrentParseTree
FileName
Host
LastResultProvisional

Metody

CheckForStructureChanges(TextChange)

Určuje, zda změna způsobí strukturální změnu v dokumentu a v případě potřeby ji použije na existující strom. Pokud by došlo ke strukturální změně, automaticky spustí znovu analýzu.

Dispose()

Odstraní tento analyzátor. By měla být volána při zavření okna editoru a při uvolnění dokumentu.

Dispose(Boolean)
GetAutoCompleteString()

událost

DocumentParseComplete

Událost aktivovaná po dokončení úplného přezpracování dokumentu

Platí pro