Aracılığıyla paylaş


RazorEditorParser Sınıf

Tanım

Her metin değişikliğinde belgenin tamamının yeniden ayrıştırılmasını önlemek için düzenleyiciler tarafından kullanılan ayrıştırıcı.

public ref class RazorEditorParser : IDisposable
public class RazorEditorParser : IDisposable
type RazorEditorParser = class
    interface IDisposable
Public Class RazorEditorParser
Implements IDisposable
Devralma
RazorEditorParser
Uygulamalar

Açıklamalar

Bu ayrıştırıcı, düzenleyicilerin artımlı ayrıştırma konusunda endişelenmelerini önlemek için tasarlanmıştır. Yöntemi CheckForStructureChanges(TextChange) bir düzenleyicide kullanıcı tarafından yapılan her değişiklikle çağrılabilir ve ayrıştırıcı değişikliği artımlı olarak uygulayıp uygulayamadığını belirten bir sonuç sağlar.

Bu ayrıştırıcıya sahip düzenleyiciler için genel iş akışı:

  1. Kullanıcı belgeyi düzenler.
  2. Düzenleyici, düzenlemeyi açıklayan ve güncelleştirilmiş metin arabelleğine başvuru sağlayan bir yapı oluştururTextChange.
  3. Düzenleyici, bu değişikliğin geçirilmesini çağırır CheckForStructureChanges(TextChange) .
  4. Ayrıştırıcı, değişikliğin var olan bir ayrıştırma ağacı düğümüne uygulanabileceğini belirler.
NOT: öğesine ek bayraklar uygulanabilir PartialParseResult. Daha fazla ayrıntı için bkz enum . Ancak, Accepted veya Rejected bayrakları HER ZAMAN olacaktır.

Bir değişiklik yalnızca söz dizimi ağacındaki tek, benzersiz Span (bkz Microsoft.AspNetCore.Razor.Parser.SyntaxTree. ) değişikliğin tamamına sahip olarak tanımlanabilirse artımlı olarak ayrıştırılabilir. Örneğin, bir değişiklik birden çok Spansn ile çakışıyorsa, değişiklik artımlı olarak ayrıştırılamaz ve tam bir yeniden ayrıştırma gereklidir. Değişiklik Span a) tamamen kendi sınırları içinde gerçekleşirse veya b) değişikliği kabul edebilen bir öğesinin SpanEditHandler sonundaki salt eklemedir (bkzTextChange. ) değişiklik "sahibidir".CanAcceptChange(Span, TextChange)

döndürdüğünde RazorEditorParserAcceptedhemen güncelleştirilir CurrentParseTree . Ancak düzenleyicinin kendi veri yapılarını bağımsız olarak güncelleştirmesi beklenir. Düzenleyici 'den CheckForStructureChanges(TextChange)döner dönmez bunu yapmak için kullanabilirCurrentParseTree, ancak (ideal olarak) yeni ağaca gerek kalmadan bunu yapmak için mantığı olmalıdır.

tarafından döndürülürseRejected, arka plan ayrıştırma görevi zaten başlatılmıştır.CheckForStructureChanges(TextChange) Bu görev tamamlandığında, yeni oluşturulan kodu, DocumentParseComplete ayrıştırma ağacını ve yeniden ayrıştırmaya neden olan özgün TextChange başvuruyu içeren olay tetiklenir ve düzenleyicinin yeni ağacı çağrısından CheckForStructureChanges(TextChange)sonra yapılan değişikliklere karşı çözümlemesine olanak tanır.

Yeniden ayrıştırma CheckForStructureChanges(TextChange) devam ederken çağrısı gerçekleşirse, yeniden ayrıştırma HEMEN iptal edilir ve Rejected yeniden ayrıştırılmaya çalışılmadan döndürülür. Başka bir deyişle, bir tüketici döndüren öğesini çağırıp CheckForStructureChanges(TextChange)tetiklenmeden önce DocumentParseComplete yeniden çağırırsa, ikinci değişiklik için yalnızca bir DocumentParseComplete olay alır.Rejected

Oluşturucular

RazorEditorParser(RazorEngineHost, String)

Düzenleyici ayrıştırıcısını oluşturur. Etkin düzenleyici başına bir örnek kullanılmalıdır. Bu örnek yeniden ayrıştırmalar arasında paylaşılabilir ancak hiçbir zaman belgeler arasında paylaşılmamalıdır.

Özellikler

CurrentParseTree

Her metin değişikliğinde belgenin tamamının yeniden ayrıştırılmasını önlemek için düzenleyiciler tarafından kullanılan ayrıştırıcı.

FileName

Her metin değişikliğinde belgenin tamamının yeniden ayrıştırılmasını önlemek için düzenleyiciler tarafından kullanılan ayrıştırıcı.

Host

Her metin değişikliğinde belgenin tamamının yeniden ayrıştırılmasını önlemek için düzenleyiciler tarafından kullanılan ayrıştırıcı.

LastResultProvisional

Her metin değişikliğinde belgenin tamamının yeniden ayrıştırılmasını önlemek için düzenleyiciler tarafından kullanılan ayrıştırıcı.

Yöntemler

CheckForStructureChanges(TextChange)

Bir değişikliğin belgede yapısal bir değişikliğe neden olup olmadığını belirler ve neden olmazsa, bunu var olan ağaç için uygular. Yapısal bir değişiklik olursa, otomatik olarak yeniden ayrıştırma başlatır.

Dispose()

Bu ayrıştırıcıyı atılır. Düzenleyici penceresi kapatıldığında ve belge kaldırıldığında çağrılmalıdır.

Dispose(Boolean)

Her metin değişikliğinde belgenin tamamının yeniden ayrıştırılmasını önlemek için düzenleyiciler tarafından kullanılan ayrıştırıcı.

GetAutoCompleteString()

Her metin değişikliğinde belgenin tamamının yeniden ayrıştırılmasını önlemek için düzenleyiciler tarafından kullanılan ayrıştırıcı.

Ekinlikler

DocumentParseComplete

Belgenin tam bir yeniden ayrıştırma işlemi tamamlandığında olay tetiklenir.

Şunlara uygulanır