Compartir a través de


RazorEditorParser Clase

Definición

Analizador que usa el editor para evitar que se analice de nuevo todo el documento en cada cambio de texto.

public ref class RazorEditorParser : IDisposable
public class RazorEditorParser : IDisposable
type RazorEditorParser = class
    interface IDisposable
Public Class RazorEditorParser
Implements IDisposable
Herencia
RazorEditorParser
Implementaciones

Comentarios

Este analizador está diseñado para permitir que los editores eviten tener que preocuparse por el análisis incremental. Se CheckForStructureChanges(TextChange) puede llamar al método con todos los cambios realizados por un usuario en un editor y el analizador proporcionará un resultado que indica si pudo aplicar el cambio de forma incremental.

El flujo de trabajo general para los editores con este analizador es:

  1. El usuario edita el documento.
  2. El editor crea una TextChange estructura que describe la edición y proporciona una referencia al búfer de texto actualizado .
  3. El editor llama a CheckForStructureChanges(TextChange) pasar ese cambio.
  4. El analizador determina si el cambio se puede aplicar simplemente a un nodo de árbol de análisis existente.
NOTA: Se pueden aplicar marcas adicionales a PartialParseResult, vea que enum para obtener más detalles. Sin embargo, las Accepted marcas o Rejected siempre estarán presentes.

Un cambio solo se puede analizar de forma incremental si se puede identificar un único único Span (vea Microsoft.AspNetCore.Razor.Parser.SyntaxTree) en el árbol de sintaxis como propietario de todo el cambio. Por ejemplo, si un cambio se superpone con varios Spans, el cambio no se puede analizar incrementalmente y es necesario realizar un análisis completo. Un Span "propietario" de un cambio si el cambio se produce en su totalidad dentro de sus límites o b) es una inserción pura (vea TextChange) al final de un Span cuyo EditHandler puede aceptar el cambio (vea CanAcceptChange(Span, TextChange)).

RazorEditorParser Cuando devuelve Accepted, se actualiza CurrentParseTree inmediatamente. Sin embargo, se espera que el editor actualice sus propias estructuras de datos de forma independiente. Puede usar CurrentParseTree para hacerlo, en cuanto el editor vuelva de CheckForStructureChanges(TextChange), pero debería (idealmente) tener lógica para hacerlo sin necesidad del nuevo árbol.

Cuando Rejected devuelve CheckForStructureChanges(TextChange), ya se ha iniciado una tarea de análisis en segundo plano. Cuando finalice esa tarea, se desencadenará el DocumentParseComplete evento que contiene el nuevo código generado, analizar el árbol y una referencia al original TextChange que provocó el reanálisis, para permitir que el editor resuelva el nuevo árbol en los cambios realizados desde la llamada a CheckForStructureChanges(TextChange).

Si se produce una llamada a CheckForStructureChanges(TextChange) mientras un reanálisis ya está en curso, el reanálisis se cancela INMEDIATAMENTE y Rejected se devuelve sin intentar volver a analizar. Esto significa que si un consumidor llama a CheckForStructureChanges(TextChange), que devuelve Rejected, lo llama de nuevo antes de DocumentParseComplete que se desencadene, solo recibirá un DocumentParseComplete evento para el segundo cambio.

Constructores

RazorEditorParser(RazorEngineHost, String)

Construye el analizador de editor. Se debe usar una instancia por editor activo. Esta instancia se puede compartir entre reanálisis, pero nunca debe compartirse entre documentos.

Propiedades

CurrentParseTree

Analizador que usa el editor para evitar que se analice de nuevo todo el documento en cada cambio de texto.

FileName

Analizador que usa el editor para evitar que se analice de nuevo todo el documento en cada cambio de texto.

Host

Analizador que usa el editor para evitar que se analice de nuevo todo el documento en cada cambio de texto.

LastResultProvisional

Analizador que usa el editor para evitar que se analice de nuevo todo el documento en cada cambio de texto.

Métodos

CheckForStructureChanges(TextChange)

Determina si un cambio dará lugar a un cambio estructural en el documento y, si no lo hará, lo aplica al árbol existente. Si se produciría un cambio estructural, se inicia automáticamente un reanálisis.

Dispose()

Elimina este analizador. Se debe llamar cuando se cierra la ventana del editor y se descarga el documento.

Dispose(Boolean)

Analizador que usa el editor para evitar que se analice de nuevo todo el documento en cada cambio de texto.

GetAutoCompleteString()

Analizador que usa el editor para evitar que se analice de nuevo todo el documento en cada cambio de texto.

Eventos

DocumentParseComplete

Evento generado cuando se completa un reanálisis completo del documento.

Se aplica a