প্রকল্প সম্পর্কে

jsdiff একটি জাভাস্ক্রিপ্ট টেক্সট ডিফারেন্সিং লাইব্রেরি, যা Myers O(ND) ডিফারেন্স অ্যালগরিদমের উপর ভিত্তি করে তৈরি। এটি একাধিক গ্রানুলারিটিতে টেক্সট তুলনা করার জন্য একটি বিস্তৃত API প্রদান করে: - **অক্ষর-স্তরের ডিফিং** (`diffChars`): প্রতিটি ইউনিকোড কোড পয়েন্টকে একটি টোকেন হিসেবে গণ্য করে, সাথে ঐচ্ছিক কেস-ইনসেনসিটিভ তুলনা। - **শব্দ-স্তরের ডিফিং** (`diffWords`, `diffWordsWithSpace`): শব্দ এবং বিরামচিহ্নকে টোকেন হিসেবে গণ্য করে, সাথে ভালো অ-ইংরেজি শব্দ বিভাজনের জন্য ঐচ্ছিক `Intl.Segmenter` সমর্থন। - **লাইন-স্তরের ডিফিং** (`diffLines`): প্রতিটি লাইনকে একটি টোকেন হিসেবে গণ্য করে, সাথে স্পেস উপেক্ষা, ট্রেইলিং CR অক্ষর পরিচালনা এবং নিউলাইনকে আলাদা টোকেন হিসেবে গণ্য করার বিকল্প রয়েছে। - **বাক্য-স্তরের ডিফিং** (`diffSentences`): বাক্য এবং বাক্যের মধ্যে স্পেসকে টোকেন হিসেবে গণ্য করে। - **CSS ডিফিং** (`diffCss`): CSS টোকেন তুলনা করে। - **JSON ডিফিং** (`diffJson`): অবজেক্টকে ফরম্যাটেড JSON-এ সিরিয়ালাইজ করে এবং লাইন-বাই-লাইন ডিফ করে, সাথে বর্ণানুক্রমিক প্রপার্টি অর্ডারিং। - **অ্যারে ডিফিং** (`diffArrays`): কঠোর সমতা বা কাস্টম তুলনাকারী দিয়ে টোকেনের অ্যারে তুলনা করে। লাইব্রেরিটি প্যাচ ম্যানেজমেন্ট ক্ষমতাও প্রদান করে: - **প্যাচ তৈরি**: `createPatch` এবং `createTwoFilesPatch` কনফিগারযোগ্য কনটেক্সট লাইন এবং হেডার অপশন সহ ইউনিফাইড ডিফ ফরম্যাট প্যাচ তৈরি করে। - **স্ট্রাকচার্ড প্যাচ**: `structuredPatch` প্রোগ্রাম্যাটিক প্রসেসিংয়ের জন্য হাঙ্ক অবজেক্ট সহ একটি ডেটা স্ট্রাকচার রিটার্ন করে। - **প্যাচ প্রয়োগ**: `applyPatch` এবং `applyPatches` ফাজ ফ্যাক্টর সমর্থন, স্বয়ংক্রিয় লাইন এন্ডিং রূপান্তর এবং কাস্টম লাইন তুলনা কলব্যাক সহ ইউনিফাইড ডিফ প্যাচ প্রয়োগ করে। - **প্যাচ পার্সিং**: `parsePatch` ইউনিফাইড ডিফ ফরম্যাট (রিনেম, কপি, তৈরি, মুছে ফেলা এবং বাইনারি ফাইলের জন্য Git-নির্দিষ্ট এক্সটেন্ডেড হেডার সহ) স্ট্রাকচার্ড অবজেক্টে পার্স করে। - **প্যাচ বিপরীতকরণ**: `reversePatch` একটি বিপরীত প্যাচ তৈরি করে। - **ফরম্যাট রূপান্তর**: `convertChangesToXML` এবং `convertChangesToDMP` পরিবর্তন অবজেক্টকে XML বা Google-এর diff-match-patch ফরম্যাটে রূপান্তর করে। সার্বজনীন অপশনগুলির মধ্যে রয়েছে অ্যাসিঙ্ক কলব্যাক মোড, সর্বোচ্চ সম্পাদনা দৈর্ঘ্যের সীমা, টাইমআউট সমর্থন এবং প্রতি-টোকেন পরিবর্তন অবজেক্ট গ্রানুলারিটি। লাইব্রেরিটি `Diff` ক্লাসের মাধ্যমে কাস্টম ডিফারেন্সিং আচরণও সমর্থন করে, যা ব্যবহারকারীদের ইনপুট কাস্টিং, টোকেনাইজেশন, খালি টোকেন অপসারণ, সমতা পরীক্ষা এবং যোগদান ফাংশন ওভাররাইড করতে দেয়। লাইব্রেরিটি npm (`npm install diff`) এর মাধ্যমে উপলব্ধ এবং ESM এবং CommonJS উভয় ইমপোর্ট সমর্থন করে, পাশাপাশি `dist/diff.js` এর মাধ্যমে সরাসরি ব্রাউজার ব্যবহারও সমর্থন করে।