Bagikan melalui


RazorEditorParser Kelas

Definisi

Pengurai yang digunakan oleh editor untuk menghindari pemisahan ulang seluruh dokumen pada setiap perubahan teks.

public ref class RazorEditorParser : IDisposable
public class RazorEditorParser : IDisposable
type RazorEditorParser = class
    interface IDisposable
Public Class RazorEditorParser
Implements IDisposable
Warisan
RazorEditorParser
Penerapan

Keterangan

Parser ini dirancang untuk memungkinkan editor menghindari kekhawatiran penguraian inkremental. Metode CheckForStructureChanges(TextChange) ini dapat dipanggil dengan setiap perubahan yang dilakukan oleh pengguna di editor dan pengurai akan memberikan hasil yang menunjukkan apakah ia dapat menerapkan perubahan secara bertahap.

Alur kerja umum untuk editor dengan pengurai ini adalah:

  1. Pengguna mengedit dokumen.
  2. Editor membangun struktur yang TextChange menjelaskan pengeditan dan memberikan referensi ke buffer teks yang diperbarui .
  3. Editor memanggil CheckForStructureChanges(TextChange) melewati perubahan itu.
  4. Parser menentukan apakah perubahan hanya dapat diterapkan pada simpul pohon uraian yang ada.
CATATAN: Bendera tambahan dapat diterapkan ke PartialParseResult, lihat untuk enum detail selengkapnya. Namun, Accepted bendera atau Rejected akan SELALU ada.

Perubahan hanya dapat diurai secara bertahap jika satu, unik, Span (lihat Microsoft.AspNetCore.Razor.Parser.SyntaxTree) di pohon sintaksis dapat diidentifikasi sebagai pemilik seluruh perubahan. Misalnya, jika perubahan tumpang tindih dengan beberapa Spans, perubahan tidak dapat diurai secara bertahap dan pemisahan ulang penuh diperlukan. Perubahan Span "memiliki" jika perubahan terjadi baik a) sepenuhnya di dalam batas-batasnya atau b) itu adalah penyisipan murni (lihat TextChange) di akhir Span yang EditHandler dapat menerima perubahan (lihat CanAcceptChange(Span, TextChange)).

RazorEditorParser Ketika kembali Accepted, segera diperbaruiCurrentParseTree. Namun, editor diharapkan untuk memperbarui struktur datanya sendiri secara independen. Ini dapat digunakan CurrentParseTree untuk melakukan ini, segera setelah editor kembali dari CheckForStructureChanges(TextChange), tetapi seharusnya (idealnya) memiliki logika untuk melakukannya tanpa memerlukan pohon baru.

Ketika Rejected dikembalikan oleh CheckForStructureChanges(TextChange), tugas penguraian latar belakang telah dimulai . Ketika tugas itu selesai, DocumentParseComplete peristiwa akan diaktifkan yang berisi kode baru yang dihasilkan, pohon uraikan dan referensi ke asli TextChange yang menyebabkan pemilahan ulang, untuk memungkinkan editor menyelesaikan pohon baru terhadap perubahan apa pun yang dilakukan sejak memanggil CheckForStructureChanges(TextChange).

Jika panggilan ke CheckForStructureChanges(TextChange) terjadi saat pemisahan ulang sudah berlangsung, pemisahan ulang dibatalkan SEGERA dan Rejected dikembalikan tanpa mencoba memilah ulang. Ini berarti bahwa jika konsumen memanggil CheckForStructureChanges(TextChange), yang mengembalikan Rejected, maka memanggilnya lagi sebelum DocumentParseComplete diaktifkan, itu hanya akan menerima satu DocumentParseComplete peristiwa, untuk perubahan kedua.

Konstruktor

RazorEditorParser(RazorEngineHost, String)

Membuat pengurai editor. Satu instans harus digunakan per editor aktif. Instans ini dapat dibagikan di antara reparses, tetapi tidak boleh dibagikan antar dokumen.

Properti

CurrentParseTree

Pengurai yang digunakan oleh editor untuk menghindari pemisahan ulang seluruh dokumen pada setiap perubahan teks.

FileName

Pengurai yang digunakan oleh editor untuk menghindari pemisahan ulang seluruh dokumen pada setiap perubahan teks.

Host

Pengurai yang digunakan oleh editor untuk menghindari pemisahan ulang seluruh dokumen pada setiap perubahan teks.

LastResultProvisional

Pengurai yang digunakan oleh editor untuk menghindari pemisahan ulang seluruh dokumen pada setiap perubahan teks.

Metode

CheckForStructureChanges(TextChange)

Menentukan apakah perubahan akan menyebabkan perubahan struktural pada dokumen dan jika tidak, menerapkannya ke pohon yang ada. Jika perubahan struktural akan terjadi, secara otomatis memulai pemisahan ulang.

Dispose()

Buang pengurai ini. Harus dipanggil ketika jendela editor ditutup dan dokumen dibongkar.

Dispose(Boolean)

Pengurai yang digunakan oleh editor untuk menghindari pemisahan ulang seluruh dokumen pada setiap perubahan teks.

GetAutoCompleteString()

Pengurai yang digunakan oleh editor untuk menghindari pemisahan ulang seluruh dokumen pada setiap perubahan teks.

Acara

DocumentParseComplete

Peristiwa diaktifkan saat pemisahan ulang penuh dokumen selesai.

Berlaku untuk