جدول تکه‌ای: ساختار داده‌ای برای ویرایش متن

Piece table
📅 12 تیر 1405 📄 205 کلمه 🔗 منبع اصلی

چکیده

جدول تکه‌ای (Piece Table) یک ساختار داده در رایانش است که برای نمایش و ویرایش اسناد متنی استفاده می‌شود. این ساختار با حفظ نسخه اصلی متن و ذخیره تغییرات در بلوک‌های جداگانه، امکان بازگردانی نامحدود (Undo) را به‌راحتی فراهم می‌کند. این روش توسط جی استروتر مور ابداع شد و در ویرایشگرهای متنی مانند Atom و Visual Studio Code مورد استفاده قرار می‌گیرد.

جدول تکه‌ای چیست؟

جدول تکه‌ای یک ساختار داده در رایانش است که برای نمایش و ویرایش اسناد متنی استفاده می‌شود. در این روش، ابتدا به کل فایل اصلی اشاره می‌شود و تغییرات بعدی (حذف یا اضافه کردن) با ترکیب اشاره‌گرها به بخش‌های مختلف فایل اصلی یا بافرهای موقت ذخیره می‌شوند.

متن اصلی در یک بلوک غیرقابل تغییر ذخیره می‌شود و هر تغییر جدید در بلوک‌های جداگانه‌ای نگهداری می‌شود. این روش حتی متن حذف‌شده را نیز حفظ می‌کند، که امکان بازگردانی نامحدود را آسان‌تر می‌سازد.

ساختار جدول تکه‌ای

جدول تکه‌ای از سه ستون تشکیل شده است:

  1. بافر مربوطه
  2. شاخص شروع در بافر
  3. طول در بافر

دو بافر نیز برای مدیریت تغییرات استفاده می‌شود:

  • بافر اصلی: حاوی متن اصلی و فقط خواندنی است.
  • بافر اضافه: برای ذخیره تغییرات موقت و فقط الحاقی است.

عملیات اصلی

دسترسی به کاراکتر: برای دسترسی به کاراکتر iام، ورودی مربوطه در جدول تکه‌ای خوانده می‌شود. به عنوان مثال، برای Index(15)، ورودی سوم جدول بررسی می‌شود که به بافر اضافه اشاره دارد.

اضافه کردن: کاراکترهای جدید به بافر اضافه الحاق شده و ورودی جدول به‌روز می‌شود.

حذف: حذف کاراکتر می‌تواند در ابتدای، انتهای یا وسط یک ورودی باشد که در هر حال، ورودی جدول تعدیل می‌شود.

کاربرد

ویرایشگرهای متنی مانند Atom و Visual Studio Code از جدول تکه‌ای در حافظه استفاده می‌کنند. همچنین، قابلیت «ذخیره سریع» در برخی نسخه‌های Microsoft Word از این ساختار بهره می‌برد.

جمع‌بندی

جدول تکه‌ای با حفظ نسخه اصلی متن و ذخیره تغییرات در بلوک‌های جداگانه، امکان بازگردانی نامحدود را به‌راحتی فراهم می‌کند. این ساختار داده در ویرایشگرهای متنی مدرن مانند Atom و Visual Studio Code مورد استفاده قرار می‌گیرد و همچنین در قابلیت «ذخیره سریع» برخی نسخه‌های Microsoft Word به کار رفته است. این روش نسبت به ساختارهایی مانند Gap Buffer، مزیت‌هایی در مدیریت تغییرات و بازگردانی دارد.