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í.
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:
- Dokument upravuje uživatel.
- Editor vytvoří TextChange strukturu popisující úpravu a poskytuje odkaz na aktualizovanou vyrovnávací paměť textu.
- Volání editoru CheckForStructureChanges(TextChange) , které tuto změnu procházejí.
- Analyzátor určuje, zda lze změnu jednoduše použít na existující uzel stromu analýzy.
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 |