Partager via


RazorEditorParser Classe

Définition

Analyseur utilisé par les éditeurs pour éviter d'analyser l'ensemble du document à chaque changement de texte.

public ref class RazorEditorParser : IDisposable
public class RazorEditorParser : IDisposable
type RazorEditorParser = class
    interface IDisposable
Public Class RazorEditorParser
Implements IDisposable
Héritage
RazorEditorParser
Implémente

Remarques

Cet analyseur est conçu pour permettre aux éditeurs d’éviter d’avoir à se soucier de l’analyse incrémentielle. La CheckForStructureChanges(TextChange) méthode peut être appelée à chaque modification apportée par un utilisateur dans un éditeur et l’analyseur fournit un résultat indiquant s’il a été en mesure d’appliquer la modification de manière incrémentielle.

Le flux de travail général pour les éditeurs avec cet analyseur est le suivant :

  1. L’utilisateur modifie le document.
  2. L’éditeur génère une TextChange structure décrivant la modification et fournissant une référence à la mémoire tampon de texte mise à jour .
  3. Les appels de CheckForStructureChanges(TextChange) l’éditeur transmettent cette modification.
  4. L’analyseur détermine si la modification peut simplement être appliquée à un nœud d’arborescence d’analyse existant.
REMARQUE : Des indicateurs supplémentaires peuvent être appliqués à , consultez-le PartialParseResultpour plus d’informations enum . Toutefois, les Accepted indicateurs ou Rejected sont TOUJOURS présents.

Une modification ne peut être analysée de manière incrémentielle que si une seule et unique Span (voir Microsoft.AspNetCore.Razor.Parser.SyntaxTree) dans l’arborescence de syntaxe peut être identifiée comme propriétaire de la modification entière. Par exemple, si une modification chevauche plusieurs Spans, la modification ne peut pas être analysée de manière incrémentielle et une analyse complète est nécessaire. Un Span « possède » une modification si la modification se produit soit a) entièrement à l’intérieur de ses limites, soit b) il s’agit d’une insertion pure (voir TextChange) à la fin d’un Span dont EditHandler peut accepter la modification (voir CanAcceptChange(Span, TextChange)).

Lorsque le RazorEditorParser retourne Accepted, il est mis à jour CurrentParseTree immédiatement. Toutefois, l’éditeur est censé mettre à jour ses propres structures de données indépendamment. Il peut utiliser CurrentParseTree pour ce faire, dès que l’éditeur revient de CheckForStructureChanges(TextChange), mais il doit (idéalement) avoir une logique pour le faire sans avoir besoin de la nouvelle arborescence.

Quand Rejected est retourné par CheckForStructureChanges(TextChange), une tâche d’analyse en arrière-plan a déjà été démarrée. Une fois cette tâche terminée, l’événement DocumentParseComplete est déclenché contenant le nouveau code généré, l’arborescence d’analyse et une référence à l’original TextChange qui a provoqué l’analyse, pour permettre à l’éditeur de résoudre la nouvelle arborescence par rapport aux modifications apportées depuis l’appel CheckForStructureChanges(TextChange)de .

Si un appel à CheckForStructureChanges(TextChange) se produit alors qu’une analyse est déjà en cours, l’analyse est annulée IMMÉDIATEMENT et Rejected est retournée sans tentative d’analyse. Cela signifie que si un consommateur appelle CheckForStructureChanges(TextChange), qui retourne Rejected, puis l’appelle à nouveau avant DocumentParseComplete d’être déclenché, il ne recevra qu’un DocumentParseComplete seul événement, pour la deuxième modification.

Constructeurs

RazorEditorParser(RazorEngineHost, String)

Construit l'analyseur de l'éditeur. Une instance doit être utilisée par éditeur actif. Cette instance peut être partagée entre des réparations, mais ne doit jamais être partagée entre les documents.

Propriétés

CurrentParseTree

Analyseur utilisé par les éditeurs pour éviter d'analyser l'ensemble du document à chaque changement de texte.

FileName

Analyseur utilisé par les éditeurs pour éviter d'analyser l'ensemble du document à chaque changement de texte.

Host

Analyseur utilisé par les éditeurs pour éviter d'analyser l'ensemble du document à chaque changement de texte.

LastResultProvisional

Analyseur utilisé par les éditeurs pour éviter d'analyser l'ensemble du document à chaque changement de texte.

Méthodes

CheckForStructureChanges(TextChange)

Détermine si un changement provoquera un changement de structure du document et, sinon, l'applique à l'arborescence existante. Si un changement de structure risque de se produire, lance automatiquement une analyse.

Dispose()

Supprime cet analyseur. Doit être appelé lorsque la fenêtre de l’éditeur est fermée et que le document est déchargé.

Dispose(Boolean)

Analyseur utilisé par les éditeurs pour éviter d'analyser l'ensemble du document à chaque changement de texte.

GetAutoCompleteString()

Analyseur utilisé par les éditeurs pour éviter d'analyser l'ensemble du document à chaque changement de texte.

Événements

DocumentParseComplete

Événement déclenché quand une analyse complète du document est terminée.

S’applique à