RazorEditorParser Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Analisador usado por editores para evitar que o documento inteiro seja analisado novamente a cada alteração do texto.
public ref class RazorEditorParser : IDisposable
public class RazorEditorParser : IDisposable
type RazorEditorParser = class
interface IDisposable
Public Class RazorEditorParser
Implements IDisposable
- Herança
-
RazorEditorParser
- Implementações
Comentários
Esse analisador foi projetado para permitir que os editores evitem se preocupar com a análise incremental. O CheckForStructureChanges(TextChange) método pode ser chamado a cada alteração feita por um usuário em um editor e o analisador fornecerá um resultado que indica se ele foi capaz de aplicar a alteração incrementalmente.
O fluxo de trabalho geral para editores com este analisador é:
- O usuário edita o documento.
- O Editor cria uma TextChange estrutura que descreve a edição e fornece uma referência ao buffer de texto atualizado .
- O editor chama CheckForStructureChanges(TextChange) passando essa alteração.
- O analisador determina se a alteração pode ser simplesmente aplicada a um nó de árvore de análise existente.
enum
para obter mais detalhes. No entanto, os Accepted sinalizadores ou Rejected sempre estarão presentes.Uma alteração só poderá ser analisada incrementalmente se uma única, exclusiva, Span (consulte Microsoft.AspNetCore.Razor.Parser.SyntaxTree) na árvore de sintaxe puder ser identificada como proprietária de toda a alteração. Por exemplo, se uma alteração se sobrepor a vários Spans, a alteração não poderá ser analisada incrementalmente e uma nova análise completa será necessária. Um Span "possui" uma alteração se a alteração ocorrer a) inteiramente dentro de seus limites ou b) é uma inserção pura (consulte TextChange) no final de um Span cujo EditHandler pode aceitar a alteração (consulte CanAcceptChange(Span, TextChange)).
Quando o RazorEditorParser retorna Accepted, ele é atualizado CurrentParseTree imediatamente. No entanto, espera-se que o editor atualize suas próprias estruturas de dados de forma independente. Ele pode usar CurrentParseTree para fazer isso, assim que o editor retornar de CheckForStructureChanges(TextChange), mas ele deve (idealmente) ter lógica para fazer isso sem precisar da nova árvore.
Quando Rejected é retornado por CheckForStructureChanges(TextChange), uma tarefa de análise em segundo plano já foi iniciada. Quando essa tarefa for concluída, o DocumentParseComplete evento será acionado contendo o novo código gerado, a árvore de análise e uma referência ao original TextChange que causou a nova análise, para permitir que o editor resolve a nova árvore em relação às alterações feitas desde a chamada CheckForStructureChanges(TextChange).
Se uma chamada para CheckForStructureChanges(TextChange) ocorrer enquanto uma nova análise já estiver em andamento, a nova análise será cancelada IMEDIATAMENTE e Rejected será retornada sem tentar novamente. Isso significa que, se um consumidor chamar CheckForStructureChanges(TextChange), que retorna Rejected, o chamará novamente antes DocumentParseComplete de ser acionado, ele receberá apenas um DocumentParseComplete evento para a segunda alteração.
Construtores
RazorEditorParser(RazorEngineHost, String) |
Constrói o analisador do editor. Uma instância deve ser usada por editor ativo. Essa instância pode ser compartilhada entre novas análises, mas nunca deve ser compartilhada entre documentos. |
Propriedades
CurrentParseTree |
Analisador usado por editores para evitar que o documento inteiro seja analisado novamente a cada alteração do texto. |
FileName |
Analisador usado por editores para evitar que o documento inteiro seja analisado novamente a cada alteração do texto. |
Host |
Analisador usado por editores para evitar que o documento inteiro seja analisado novamente a cada alteração do texto. |
LastResultProvisional |
Analisador usado por editores para evitar que o documento inteiro seja analisado novamente a cada alteração do texto. |
Métodos
CheckForStructureChanges(TextChange) |
Determina se uma alteração provocará uma mudança estrutural no documento; caso contrário, aplica-a à árvore existente. Se ocorrer uma mudança estrutural, inicia automaticamente uma nova análise. |
Dispose() |
Descarta esse analisador. Deve ser chamado quando a janela do editor é fechada e o documento é descarregado. |
Dispose(Boolean) |
Analisador usado por editores para evitar que o documento inteiro seja analisado novamente a cada alteração do texto. |
GetAutoCompleteString() |
Analisador usado por editores para evitar que o documento inteiro seja analisado novamente a cada alteração do texto. |
Eventos
DocumentParseComplete |
Evento disparado quando uma nova análise completa do documento é concluída. |