Partilhar via


RazorEditorParser Classe

Definição

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 é:

  1. O usuário edita o documento.
  2. O Editor cria uma TextChange estrutura que descreve a edição e fornece uma referência ao buffer de texto atualizado .
  3. O editor chama CheckForStructureChanges(TextChange) passando essa alteração.
  4. O analisador determina se a alteração pode ser simplesmente aplicada a um nó de árvore de análise existente.
OBSERVAÇÃO: sinalizadores adicionais podem ser aplicados ao PartialParseResult, consulte isso 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 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.

Aplica-se a