أحتاج إلى تنسيق وثيقة قابلية للقراءة البشرية.
-
25-09-2019 - |
سؤال
أنا أعمل على أحد تلك المشاريع التي يوجد فيها مليون طريقة أفضل لإنجاز ما أحتاجه ولكن ليس لدي خيار وعلي أن أفعل ذلك بهذه الطريقة. ها هو:
يوجد نموذج ويب ، عندما يقوم المستخدم بملءه ويضرب إرسال ملف نصي قابل للقراءة بشري باستخدام بيانات النموذج. تبدو هكذا:
field_1: value for field one
field_2: value for field two
more data for field two (field two has a newline in it!)
field3: some more data
مشكلتي هي: أحتاج إلى تحليل هذا الملف النصي مرة أخرى في نموذج الويب حتى يتمكن المستخدم من تحريره.
كيف يمكنني ، بطريقة مضمونة ، أن أنجز هذا؟ قاعدة البيانات ليست خيارًا ، يجب أن أستخدم هذه الملفات النصية.
أسئلتي:
- هل هناك طريقة مضمونة للقيام بذلك باستخدام التنسيق في المثال أعلاه؟
- ما الذي سيعمل عليه التنسيق البشري القابل للقراءة بشكل أفضل (وبعبارة أخرى يمكنني تغيير التنسيق)
- قابلة للقراءة البشرية تعني أن المبرمج يمكنه قراءته ومعرفة ما هو.
يستخدم هذا المشروع PHP.
تحديث
من خلال القراءة البشرية ، أعني أن أي شخص يمكن أن يقرأ النص ولا يغمره ، بما في ذلك جدتك.
المحلول
أحتاج إلى تنسيق وثيقة قابلية للقراءة البشرية.
هذا هو ما يامل تم تصميمه ليكون. يمكنك قراءة المزيد عنها على موقعهم أو على ويكيبيديا.
لاقتباس ويكيبيديا:
تم تصميم بناء جملة YAML ليتم تعيينه بسهولة لأنواع البيانات الشائعة في معظم اللغات عالية المستوى: قائمة ، تجزئة ، وعدد الكلام. إن الخطوط العريضة المألوفة ومظهرها الهزيل يجعلها مناسبة بشكل خاص للمهام التي من المحتمل أن يشاهدها البشر أو تحرير هياكل البيانات ، مثل ملفات التكوين ، والإلقاء أثناء تصحيح الأخطاء ، ورؤوس المستندات
الميزة على XML هي أنها لا تستخدم العلامات التي قد تربك المستخدمين. وأعتقد أنه أكثر نظافة من INI (الذي تم ذكره أيضًا) لأنه يستخدم ببساطة الكولون بدلاً من العلامات المتساوية ، الفاصلة الفاصلة والاقتباسات.
عينة YAML تبدو مثل:
invoice: 34843
date : 2001-01-23
bill-to: &id001
given : Chris
family : Dumars
address:
lines: |
458 Walkman Dr.
Suite #292
city : Royal Oak
state : MI
postal : 48046
ship-to: *id001
product:
- sku : BL394D
quantity : 4
description : Basketball
price : 450.00
- sku : BL4438H
quantity : 1
description : Super Hoop
price : 2392.00
tax : 251.42
total: 4443.52
comments: >
Late afternoon is best.
Backup contact is Nancy
Billsmer @ 338-4338.
نصائح أخرى
أود أن أقول إما الاستخدام
- ملفات INI أو
- يامل أو
- تخفيض السعر أو
- الغزل والنسيج
أو فقط عن أي لغة ترميز خفيفة الوزن تعتبر مناسبا.
قد ترغب في النظر في Yaml
وأنا أتفق مع استجابة بابلو فرنانديز. أعتقد أن JSON قد يكون خيارًا جيدًا أيضًا.
XML هو خيار.
سأقول فقط أن سلسلة ini قابلة للقراءة إلى حد ما:
Pet_Name = "Fred"
ولكن ، يمكنك دائمًا لف التنسيق الخاص بك. شيء مثل:
Key: ValueValueValueValueValueValue
Key: ValueValue
في الأساس ، ستنفجر السلسلة بواسطة الخطوط الجديدة ، والبحث عن سلاسل نصية أمام الكولونز واستخدامها كمفتاح ، والبيانات بعد القولون وقبل الخط الجديد هي القيمة.