Skip to content

truncate

رشته را تا بیشترین طول کوتاه می‌کند و جای برش را با سه‌نقطه نشان می‌دهد. با یونی‌کد سرِ سازگاری دارد و می‌داند که کدام سر را نگه دارید معنای کوتاه‌سازی را عوض می‌کند.

کاربرد

ts
import { truncate } from 'ranuts/utils';

truncate('the quick brown fox', 12); // 'the quick b…'

truncate('/Users/me/code/app/src/index.ts', { length: 20, position: 'start' });
// '…de/app/src/index.ts'

truncate('0xabcdef0123456789', { length: 11, position: 'middle' });
// '0xabc…56789'

API

truncate(value, options)

پارامترها

پارامترتوضیحنوعپیش‌فرض
valueرشته‌ای که کوتاه می‌شودstringالزامی
optionsعددِ تنها، شکل کوتاه‌شدهٔ { length } استTruncateOptions | numberالزامی

TruncateOptions

میدانتوضیحنوعپیش‌فرض
lengthبیشترین طول نتیجه، با احتساب سه‌نقطهnumber
positionکدام سر باقی می‌ماند — پایین‌تر را ببینید'end' | 'start' | 'middle''end'
ellipsisنشانه‌ای که سر برش گذاشته می‌شودstring'…'

position تعیین می‌کند کدام سر باقی بماند، و این گزینش خبر واقعی با خود دارد:

  • 'end' (پیش‌فرض) آغاز را نگه می‌دارد؛ درخورِ نثر و عنوان.
  • 'start' دنباله را نگه می‌دارد، و مسیر فایل همین را می‌خواهد: /Users/someone/work/… همان بخشی است که خواننده از پیش می‌داند و …/src/utils/str.ts همان بخشی که به آن نیاز دارد.
  • 'middle' هر دو سر را نگه می‌دارد؛ برای شناسه‌هایی که سر و دنباله‌شان معنا دارد، مانند یک درهم یا شمارهٔ حساب.

بازگشت

string؛ هرگز بلندتر از length نمی‌شود. اگر length از خودِ سه‌نقطه کوتاه‌تر باشد، به‌جای سرریز، سه‌نقطه کوتاه می‌شود.

یادداشت‌ها

  1. برش بر پایهٔ نقطه‌کدهای یونی‌کد است، نه واحدهای UTF-16. value.slice(i)ِ ساده‌دلانه می‌تواند وسط یک جفت جانشین بیفتد: هر نویسهٔ بیرون از صفحهٔ پایهٔ چندزبانی (ایموجی، برخی نویسه‌های گسترش CJK) دو واحد UTF-16 است و کنار سه‌نقطه یک جانشین بی‌قرین به جا می‌گذارد که به شکل نویسه‌های درهم دیده می‌شود. truncate به‌جای آن روی نقطه‌کدها پیش می‌رود، پس نویسه‌های چندواحدی هرگز شکافته نمی‌شوند.
  2. valueِ کوتاه‌تر از length دست‌نخورده برمی‌گردد و سه‌نقطه‌ای افزوده نمی‌شود.
  3. اگر نویسهٔ پیش‌فرض '…' در قلمی که با آن ترسیم می‌کنید نباشد، ellipsis دلخواه خود را بدهید (مثلاً '...' یا '[cut]').

منتشرشده تحت مجوز MIT.