أدوات المطور · مقارنة النص
لماذا يختلف Windows وUnix على نهايات الأسطر: قصة CR وLF وCRLF
· خلفية
فرق النص نهايات الأسطر تاريخ البرمجيات
يتتبع نهايات الأسطر من الآلات الكاتبة والمكاتبات إلى أنظمة التشغيل الحديثة ويشرح سبب تواجد تقليدين في كل مشروع عبر الأنظمة الأساسية.
شخصية واحدة غير مرئية، عقود من الاحتكاك - تبدأ بإزعاج مستمر عبر الأنظمة الأساسية
نهايات الأسطر غير مرئية في برامج التحرير العادية ولكنها قد تكون ذات أهمية للملفات والبروتوكولات. ومع ذلك، في ToolAcre، تتم تسوية CR وLF وCRLF قبل مقارنة الأسطر. زوج يختلف فقط في تلك الفواصل ينتج عنه نفس صفيف الخط ونتيجة مماثلة.
يحل هذا السلوك السؤال العملي لهذا المسار مع الحد من ما يمكن تشخيصه. لا يمكن للمقارنة إثبات السطر الجديد الذي يحتوي على بايتات الملفات الأصلية بعد وصول النص إلى محرريه. مطلوب أداة تدرك البايت للحفظ أو عمليات التحقق من البروتوكول.
عودة السطر وتغذية الأسطر على الآلة الكاتبة - تشرح الإجراءين الفعليين اللذين وصفتهما الأحرف في الأصل
المصطلحان إرجاع السطر وتغذية السطر لهما معاني مادية وتاريخية، لكن المستودع لا يحتوي على مصدر الآلة الكاتبة. إن تكرار قصة أصل ميكانيكي من الذاكرة من شأنه أن ينتهك عقد الأدلة حتى لو بدت القصة مألوفة.
لذلك تتعامل هذه المقالة مع CR على أنها ` ` code unit and LF as ` `فقط عندما يستخدمها التنفيذ. يجب إضافة التفسير التاريخي لاحقًا من المعايير الأساسية أو الأرشيف بدلاً من استعارته من مخطط تفصيلي ليس مصدرًا بشكل واضح.
معاني الآلة الكاتبة هي ادعاءات تاريخية تتطلب مصادر خارجية
وبالمثل، فإن الملفات المصدر لا توثق اصطلاحات المبرقة الكاتبة أو القرارات المبكرة لنظام التشغيل. إنها تكشف فقط عن خيار التوافق في JavaScript الحالي: استبدل كل CRLF أو CR وحيد بـ LF قبل التقسيم.
يقبل هذا التحويل النص الملصق الذي تم إنتاجه بموجب عدة اتفاقيات دون ملء الإخراج بتغييرات النهاية فقط. إنه قرار تنفيذي يظهر في تعبير عادي واحد ويتم تثبيته بواسطة اختبارات لجميع النماذج الثلاثة.
Teletype ونسب نظام التشغيل خارج دليل المستودع
من الشائع ربط Unix بـ LF، وWindows بـ CRLF والأنظمة الأقدم بـ CR الوحيد، لكن المستودع الحالي لا يمكن أن يكون بمثابة دليل تاريخي على عمليات التبني هذه. المطالبة الآمنة قيد التشغيل: جميع المدخلات الثلاثة تصبح LF داخل `splitLines`.
لا تقوم محطة LF بإنشاء صف فارغ نهائي، بينما تظل الأسطر الفارغة في المنتصف. ويعني هذا التمييز الاحتفاظ بالمحتوى المنطقي على الرغم من مسح الاختلافات الفاصلة الفعلية. المقارنة موجهة نحو الخط، وليس الحفاظ على البايت.
يثبت الكود تطبيع ثلاث اتفاقيات؛ ولا يثبت سبب اعتماد الأنظمة لها
تحدد بعض بروتوكولات الشبكة والرسائل أطراف إنهاء الخط بشكل دقيق، ولكن يجب أن تأتي متطلباتها من مواصفاتها. إن تسوية ToolAcre تجعلها غير مناسبة لإثبات التوافق مع تنسيق السلك هذا لأنه تمت إزالة دليل الفاصل الأصلي عمدًا.
استخدم عارضًا سداسيًا عشريًا أو مدققًا للبروتوكول قبل التحليل عندما يكون تسلسل CRLF مهمًا. يمكن أن تؤكد نتيجة فرق النص النظيف مطابقة الخطوط المنطقية وتخفي في نفس الوقت عيبًا في مستوى النقل. يمكن أن تكون كلتا الملاحظتين صحيحتين لأن الأدوات تجيب على أسئلة مختلفة.
تحتاج متطلبات البروتوكول إلى مواصفات خاصة بها ويتم حذفها هنا
قارن `alpha beta` و`alpha beta` و`alpha beta` في أزواج. وينتج كل منها سطرين، ألفا وبيتا، ولا توجد إضافة أو إزالة. تجاهل المسافة البيضاء لا يسبب هذه المساواة؛ لقد حدث التطبيع بالفعل أثناء الانقسام.
أضف مسافات زائدة إلى صف تجريبي واحد وسيقوم الوضع العادي الآن بالإبلاغ عن الفرق. قم بتمكين تجاهل المسافة البيضاء وقد تختفي. يفصل التسلسل معالجة السطر الجديد عن معالجة المسافات البيضاء لمفتاح السطر ويمنع إضافة الخيار الخاطئ.
مثال عملي: يتم مقارنة نماذج النهاية الثلاثة على قدم المساواة قبل خيارات المسافة البيضاء
لا يقوم هذا المسار بتكوين المحررين أو إعادة كتابة الملفات أو تعيين سمات Git أو نهايات التحويل المجمعة. كما أنه لا يعرض الفاصل الأصلي في صفوف النتائج. تدخل السلاسل الملصقة في مسار المقارنة، وليس أداة مساعدة لترحيل السطر الجديد.
تم حذف معايير السببية والبروتوكول التاريخية من المصادر المعلقة. يترك هذا القيد مقالًا أصغر ولكنه دقيق: ما الذي تفعله الاتفاقيات الثلاث في هذا التنفيذ، وما هي الخطوط الفارغة المتبقية ولماذا لا تحدد المساواة هنا هوية البايت.
الوجبات الجاهزة: تعرف على الاصطلاح الذي يحمله النص الخاص بك - يلخص التاريخ وكيف تساعد مقارنة نص ToolAcre في تأكيد ما إذا كان الاختلاف مجرد نهايات الأسطر
تعرف على الأدلة التي نجت من الأداة. بعد التسوية، يمكن لـ ToolAcre مقارنة محتوى السطر المنطقي عبر الفواصل المشتركة. لا يمكن أن يخبرك بالاصطلاح الذي يستخدمه أي من المصدر أو ما إذا كان المستهلك النهائي يتطلب تسلسل بايت واحد محدد.
استخدم اختلاف المتصفح للمراجعة البشرية والتحقق من مستوى البايت لإنفاذ المستودع أو البروتوكول. تكون الأداة موثوقة عندما تكون تحويلاتها واضحة؛ يظل المراجعون مسؤولين عن اختيار المراجع الذي يحافظ على الممتلكات التي يحتاجون إلى التحقق منها.