RazorEditorParser Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 a los editores evitar tener que preocuparse por el análisis incremental. CheckForStructureChanges(TextChange)Se 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 se puede aplicar incrementalmente el cambio.
El flujo de trabajo general de los editores con este analizador es el siguiente:
- El usuario edita el documento.
- El editor crea una TextChange estructura que describe la edición y proporciona una referencia al búfer de texto actualizado .
- Llamadas CheckForStructureChanges(TextChange) del editor que pasan ese cambio.
- El analizador determina si el cambio se puede aplicar simplemente a un nodo de árbol de análisis existente.
enumeración para obtener más detalles. Sin embargo, Accepted las Rejected marcas o siempre estarán presentes.Un cambio solo se puede analizar de forma incremental si un único, único, Span (vea Microsoft.AspNetCore.Razor.Parser.SyntaxTree ) en el árbol de sintaxis se puede identificar como propiedad del cambio completo. Por ejemplo, si un cambio se superpone con varios Span s, el cambio no se puede analizar de forma incremental y es necesario un reanálisis completo. Un Span "propietario" es un cambio si el cambio se produce en su totalidad dentro de los límites de o b) es una inserción pura (vea TextChange ) al final de un Span cuyo EditHandler puede aceptar el cambio (vea CanAcceptChange(Span, TextChange) ).
Cuando RazorEditorParser 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 hacer esto, tan pronto como el editor vuelve de CheckForStructureChanges(TextChange) , pero debe tener (idealmente) tener lógica para hacerlo sin necesidad del nuevo árbol.
Cuando Rejected es devuelto por CheckForStructureChanges(TextChange) , ya se ha iniciado una tarea de análisis en segundo plano. Cuando la tarea finaliza, se DocumentParseComplete desencadena el evento que contiene el nuevo código generado, el árbol de análisis y una referencia al original TextChange que causó el reanálisis, para permitir que el editor resuelva el nuevo árbol con los cambios realizados desde la llamada a CheckForStructureChanges(TextChange) .
Si una llamada a se CheckForStructureChanges(TextChange) produce 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 DocumentParseComplete de 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 de por cada editor activo. Esta instancia se puede compartir entre reanálisis, pero nunca debe compartirse entre documentos. |
Propiedades
| CurrentParseTree | |
| FileName | |
| Host | |
| LastResultProvisional |
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() |
Desecha este analizador. Se debe llamar a cuando se cierra la ventana del editor y se descarga el documento. |
| Dispose(Boolean) | |
| GetAutoCompleteString() | |
Eventos
| DocumentParseComplete |
Evento generado cuando se completa un reanálisis completo del documento. |