قارن بين نصين سطرا بسطر وحدد التغييرات
يمكنكم مقارنة نسختين من نص من دون فحص كل سطر يدويا. تحاذي هذه الأداة الحتمية الأسطر المتطابقة وفق ترتيبها الأصلي، ثم تصنف كل نتيجة على أنها إضافة أو حذف أو سطر بلا تغيير.
شغّل الأداة مجانًا
وهي مناسبة لملفات الإعداد والسجلات والقوائم والمسودات والمخرجات المولدة التي تكون فيها حدود الأسطر مهمة. تتضمن الاستجابة المنظمة أرقام الأسطر المتاحة وملخصا موجزا، مما يسهل استخدامها في المراجعة البشرية والمعالجة الآلية على حد سواء.
جهزوا النسختين للحصول على مقارنة مفيدة
ضعوا النسخة المرجعية في الحقل original والنسخة المراد فحصها في الحقل revised. تعد المقارنة كل فاصل سطر حدا ذا معنى، لذلك ينبغي الحفاظ على التنسيق المهم. إذا انتقلت جملة إلى سطر آخر، فستظهر كحذف وإضافة حتى إن لم تتغير كلماتها. يجري توحيد نهايات الأسطر الخاصة بنظام Windows وأنظمة Mac القديمة قبل المقارنة، فلا يبدو المحتوى المتطابق مختلفا لمجرد أنه أتى من نظام تشغيل آخر. أما المسافات وحالة الأحرف وعلامات الترقيم والأسطر الفارغة فتبقى ذات دلالة. تفيد هذه الدقة في ملفات الإعداد والتقارير المولدة وقوائم الجرد. يجوز أن تكون إحدى النسختين فارغة لإظهار أن كل الأسطر أضيفت أو حذفت، لكن الطلب يعيد خطأ إدخال إذا كانتا فارغتين معا. أرسلوا سلاسل نصية مباشرة بدلا من المصفوفات أو الكائنات. لا تعيد الخدمة صياغة المحتوى ولا تقتطعه ولا تفسره قبل حساب المحاذاة.
اقرؤوا النتيجة المرتبة سطرا بسطر
تحتوي الاستجابة على مصفوفة lines مرتبة وملخص. يحمل كل عنصر حالة ونص السطر كما هو. يتضمن العنصر الثابت original_line وrevised_line لأنه موجود في النسختين. أما المحذوف فيتضمن original_line وحده، والمضاف يتضمن revised_line وحده. تبدأ هذه المواضع من واحد وترتبط بالنص المصدر، ولذلك يمكن عرضها مباشرة في واجهة مراجعة. عند استبدال سطر بآخر، تظهر النتيجة عادة عنصرا محذوفا وعنصرا مضافا؛ فلا توجد حالة مستقلة للاستبدال. يحصي الملخص الأسطر المضافة والمحذوفة والثابتة. تعتمد المحاذاة على أطول تسلسل فرعي مشترك، فتحافظ على ترتيب الأسطر المشتركة وتمنع إضافة صغيرة من إظهار المستند كله كأنه تغير. قد تسمح الأسطر المتطابقة المتكررة بأكثر من محاذاة صحيحة؛ وتحسم قاعدة ثابتة تفضل الحذف حالات التعادل، وبذلك تنتج المدخلات نفسها دائما مخرجات JSON نفسها.
استخدموا الفروق المنظمة في المراجعة والأتمتة
تزداد فائدة المقارنة حسب الأسطر عندما يحتاج نظام آخر إلى اتخاذ إجراء بناء على النتيجة. يمكن لمسار نشر أن يقارن الإعداد المتوقع بالإعداد الفعلي، وأن يوقف الإصدار إذا حذفت إعدادات محمية، وأن يحتفظ بالنتيجة دليلا. ويمكن لنظام تحرير أن يبرز الإضافات والحذف فقط مع إبقاء الأسطر الثابتة لتوفير السياق. كما يمكن لأداة مراقبة أن تقارن لقطات متتابعة، وأن تفحص الملخص أولا، وأن تتجاوز الإشعارات عندما يبقى كل شيء كما هو. تعمل القدرة بصورة حتمية، ولا تستخدم الشبكة أو نماذج اللغة، ولا تعيد صياغة المحتوى. تبلغ تكلفة كل طلب API مقدار $0.002؛ ويمكن للصفحة أيضا تشغيل منطق المقارنة النقي نفسه داخل المتصفح. هذه مقارنة مقصودة حسب الأسطر وليست مراجعة دلالية؛ فهي لا تشرح سبب التغيير، ولا تتجاهل المسافات، ولا تكتشف الكتل المنقولة، ولا تقارن الكلمات داخل السطر المعدل. اختاروا حدود أسطر ذات معنى، واستخدموا المواضع والحالات الناتجة في التمييز والتدقيق والاختبار والتنبيه.
حالات الاستخدام
مراجعة تغييرات الإعداد
قارنوا إعدادا مقترحا بالنسخة المنشورة، واعرضوا بدقة الأسطر التي أضيفت أو حذفت.
فحص المخرجات المولدة
قارنوا تقريرا أو لقطة حديثة بنتيجة معروفة، واستخدموا الملخص لاكتشاف التغييرات غير المتوقعة.
إنشاء مراجعة تحريرية
حولوا مسودتين منظمتين حسب الأسطر إلى عناصر مهيكلة تستطيع الواجهة إبرازها بمواضع موثوقة.
الأسئلة الشائعة
ماذا تعيد المقارنة؟
تعيد مصفوفة مرتبة من الأسطر المضافة والمحذوفة والثابتة، مع عدد العناصر في كل حالة.
كيف تمثل الأسطر المعدلة؟
يمثل التعديل بحذف السطر القديم وإضافة السطر الجديد.
هل تؤثر المسافات في المقارنة؟
نعم. تحفظ المسافات والأسطر الفارغة وتقارن، مع توحيد نهايات الأسطر التي تحتوي على محرف الرجوع.
هل يجوز أن يكون أحد المدخلين فارغا؟
نعم. سيظهر النص غير الفارغ كله مضافا أو محذوفا. ولا يحدث الخطأ إلا إذا كان المدخلان فارغين.
ما تكلفة طلب API؟
تكلفة كل طلب API هي $0.002. وتشغل أداة المتصفح المقارنة الحتمية نفسها محليا.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/text/diff-lines \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"original":"alpha\nbeta\ngamma","revised":"alpha\nbeta updated\ngamma"}'const res = await fetch("https://api.kit.forhosting.com/text/diff-lines", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"original": "alpha\nbeta\ngamma",
"revised": "alpha\nbeta updated\ngamma"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/diff-lines",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"original": "alpha\nbeta\ngamma",
"revised": "alpha\nbeta updated\ngamma"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/diff-lines", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"original":"alpha\\nbeta\\ngamma","revised":"alpha\\nbeta updated\\ngamma"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"original":"alpha\nbeta\ngamma","revised":"alpha\nbeta updated\ngamma"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/diff-lines", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"original": "alpha\nbeta\ngamma",
"revised": "alpha\nbeta updated\ngamma"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.diff_lines",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_tokens | 20000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |