واجهة الملفات النصية
لبات 0.7.0 · الإصدار الحالي
عمليات 0.7.0 الحالية ودعم المضيف والأمثلة وقواعد الإخفاق.
محتويات الصفحة
واجهة النص الكامل للملف
يدعم المتصفح وتنفيذ لبات 0.7.0 الأصلي الدالتين المضمنتين. لا تحتاجان استيرادا أو علامة غير_آمن/unsafe. استخدام unsafe مع أي منهما خطأ مصدر unsafe-on-safe-call.
| العملية | التوقيع | النجاح |
|---|---|---|
اقرأ_ملف_نصي/read_text_file |
(string) -> result<string> |
الملف كله كنص UTF-8 صحيح |
اكتب_ملف_نصي/write_text_file |
(string, string) -> result<unit> |
اكتمل الاستبدال الدقيق، بلا حمولة |
تحفظ القراءة كل بايت محتوى، بما فيه BOM وCRLF وNUL والتطبيع. تعيد الملفات الفارغة success(""). يعيد UTF-8 غير الصالح invalid-utf8. تستخدم الكتابة بايتات UTF-8 الدقيقة للنص، ولا تضيف سطرا جديدا، وتستبدل المحتوى بدلا من إلحاقه. افحص ok قبل قراءة value أو error؛ لا تحتوي الكتابة الناجحة على value قابلة للقراءة.
يسمي عرض خرج المتصفح محارف التحكم غير المرئية مثل BOM وNUL، ويعرض CRLF كفاصل سطر. لا يغير هذا العرض الآمن محتوى الملف. استخدم تنزيل الملفات لمقارنة البايتات الدقيقة.
دعم المضيف لكل عملية
| العملية | المتصفح | المضيف الأصلي |
|---|---|---|
| القراءة | بايتات افتراضية مسماة في المسودة الحالية، بلا وصول إلى الشبكة أو القرص المحلي | ملف عادي في نظام الملفات، بمسار نسبي إلى مجلد عمل العملية أو مسار مطلق |
| الكتابة | إنشاء اسم افتراضي مسطح أو استبداله؛ يحفظ التنزيل الصريح البايتات إلى القرص | تجهيز الملف في مجلد الوجهة ثم استبدال مدخل الوجهة الأخير ذريّا |
| المسارات | اسم UTF-8 دقيق حساس لحالة الأحرف، من 1 حتى 255 بايتا | نص غير فارغ بلا NUL، وفق حل مسارات Linux المعتاد |
| سقف الملف | 1048576 بايتا، 1 MiB | 16777216 بايتا، 16 MiB |
لا تتبع المسارات الأصلية مجلد ملف المصدر. لا يوجد توسيع صدفة لـ~ أو المتغيرات أو أحرف البدل، ولا إنشاء ضمني للمجلدات الأم. تتبع القراءة حل نظام الملفات المعتاد بما فيه الروابط الرمزية، لكنها ترفض المجلدات والأجهزة والأنابيب بسبب not-regular-file. تستبدل الكتابة الناجحة المدخل الأخير، بما فيه الرابط الرمزي الأخير، بدلا من اتباعه. تحفظ الكتابة الفاشلة الوجهة السابقة؛ ولا يلغي توقف لاحق كتابة مكتملة.
ترفض أسماء المتصفح / والشرطة المائلة العكسية وNUL ومحارف التحكم U+0000 حتى U+001F وU+007F حتى U+009F والاسمين . و... لا توجد مجلدات. يقبل المخزن 64 ملفا و8388608 بايتا إجمالا. لكل تشغيل أيضا ميزانية نقل تحديثات كتابة قدرها 8388608 بايتا، تحسب بايتات الاسم والمحتوى و64 بايتا إضافيا لكل كتابة؛ تستهلك الاستبدالات المتكررة هذه الميزانية أيضا. تتبع القراءة والكتابة هذه القيود مستقلة عن لغة الشرح أو المصدر.
أخطاء الملف القابلة للاسترداد
| الرمز | المعنى والنطاق |
|---|---|
invalid-path |
مسار فارغ أو يحوي NUL في المضيفين، أو اسم مسطح غير صالح في المتصفح |
not-found |
ملف افتراضي مفقود، أو هدف قراءة أصلي أو مجلد كتابة أم مفقود |
permission-denied |
إخفاق صلاحيات نظام الملفات الأصلي |
not-regular-file |
قراءة أصلية لملف غير عادي أو الكتابة إلى مجلد |
invalid-utf8 |
محتوى القراءة ليس UTF-8 صحيحا |
file-too-large |
تجاوز القراءة أو الكتابة سقف الملف في المضيف |
virtual-file-limit |
تجاوز عدد ملفات المتصفح أو مجموع البايتات أو ميزانية نقل تحديثات الكتابة |
io-error |
إخفاق إدخال/إخراج آخر في المضيف |
unsupported-host |
لا يوفر المضيف المضمن محولا لهذه العملية؛ يوفره كلا المضيفين المنشورين |
هذه نتائج قابلة للاسترداد، لا تشخيصات مصدر أو توقفات. تبقى حدود الموارد والإلغاء وفشل التخصيص نتائج تنفيذ منفصلة. قد توقف قراءة الفرع الخاطئ التنفيذ. تبقى الكتابات الناجحة قبل إخفاق لاحق متاحة.
ملفات التشغيل المؤقتة والمصدر المحفوظ
تتبع ملفات المتصفح الافتراضية بيانات التشغيل المحلية للمستند في مسودة واحدة. تبقى عند تبديل المسودات والتنقل للقراءة والرجوع في التبويب نفسه وتغيير اللغة والتوسيع وإعادة الضبط. تعيد إعادة الضبط مصدر البداية وتمسح الخرج وسجل الإدخال، وتحتفظ بالملفات. يفقد التحديث وإعادة التحميل والتبويب الجديد الملفات حتى إن عاد مصدر المسودة المحفوظ. لا يشمل حفظ المصدر أو تصديره ملفات التشغيل.
استورد الملفات بعد فتح المسودة المقصودة. تفحص دفعة الاستيراد كلها قبل تغيير أي ملف؛ ويتطلب استبدال الأسماء نفسها تأكيدا. يحفظ الاستيراد المرفوض أو الملغى الملفات الموجودة. يقفل الاستيراد والإزالة والمسح أثناء التشغيل، الذي يستخدم لقطة ملفات ثابتة. لمسح الملفات وحذف المسودة تأكيدهما الخاص.
استخدم زر التنزيل الصريح لكل ملف مستورد أو مكتوب بنجاح. يحفظ التنزيل اسمه وبايتاته الدقيقة، بما فيها بايتات مستوردة ليست UTF-8. لا يجعل استيراد helper.aspl كبيانات تشغيل منه وحدة مصدر أصلية، ولا يتيح استيراد المصدر في المتصفح.
الأمثلة الكاملة والنطاق
يحتاج مثال القراءة الافتراضي سطر إدخال واحدا missing.txt ولا يحتاج ملفا مستوردا. يطبع فرع not-found خطأ ويعيد 0. لا يحتاج مثال الكتابة إدخالا أو أصلا؛ ينشئ generated.txt أو يستبدله بالبايتات الدقيقة generated\n، ثم يطبع Output: saved\n.
التنفيذ: المتصفح والمضيف الأصلي · لبات 0.7.0
- للنتيجة المعلنة يجب أن يكون missing.txt غائبا. لا يلزم ملف أصل.
- لقراءة ناجحة افتح هذه المسودة الجديدة أولا ثم استورد ملف بيانات UTF-8 في أداة ملفاتها قبل التشغيل وأرسل اسمه المسطح.
أسطر الإدخال: ["missing.txt"]
دالة ابدأ_الرئيسية() -> ص64 {
اطبع("File: ").
دع الاسم = اقرأ_سطر().
دع المحتوى: نتيجة<نص> = اقرأ_ملف_نصي(الاسم).
إذا (المحتوى::نجاح) {
اطبع(المحتوى::قيمة).
} وإلا {
اطبع("error: ").
اطبع(المحتوى::الخطأ::الرمز).
اطبع("\س").
}
أرجع 0.
}
النتائج المتوقعة
{
"browser": {
"check": "success",
"class": "success",
"output": "File: error: not-found\n",
"processStatus": 0
},
"native": {
"check": 0,
"status": 0,
"output": "File: error: not-found\n"
}
}التنفيذ: المتصفح والمضيف الأصلي · لبات 0.7.0
- لا يلزم إدخال أو أصل. ينشئ التشغيل generated.txt أو يستبدله بنص generated تتبعه LF.
- كتابات المتصفح مؤقتة حتى تنزيلها صراحة. تستبدل الكتابة الأصلية الوجهة في مجلد عمل العملية.
الإدخال: لا يحتاج إلى أسطر إدخال.
دالة ابدأ_الرئيسية() -> ص64 {
اطبع("Output: ").
دع المحفوظ: نتيجة<وحدة> = اكتب_ملف_نصي("generated.txt", "generated\س").
إذا (المحفوظ::نجاح) {
اطبع("saved\س").
} وإلا {
اطبع("error: ").
اطبع(المحفوظ::الخطأ::الرمز).
اطبع("\س").
}
أرجع 0.
}
النتائج المتوقعة
{
"browser": {
"check": "success",
"class": "success",
"output": "Output: saved\n",
"fileUpdates": [
{
"name": "generated.txt",
"content": "generated\n"
}
],
"processStatus": 0
},
"native": {
"check": 0,
"status": 0,
"output": "Output: saved\n"
}
}اقرأ الدليل العملي قبل تجربة قراءة ناجحة أو حفظ البايتات المولدة. تحفظ صفحتا القراءة والكتابة الكاملتان الصيغتين العربية والإنجليزية المورّدتين. توسع هذه الواجهات MVP التاريخي؛ لا تعرف المواصفة المؤرشفة سلوكها الحالي في المضيفين.