عن المشروع
rui هي مكتبة واجهة مستخدم إعلانية لـ Rust، تهدف إلى توحيد ركائز تطوير الويب الثلاث — البنية والنمط والسلوك — في تعبير واحد من Rust. على عكس الأطر التي تعتمد على محركات عرض خارجية أو أشجار تبعية ثقيلة، فإن rui ذاتية الاكتفاء تمامًا. وهي تضم في نفسها قارئ TrueType، ومُحسّن تدرج الرموز، ومضاد التعرج، وتخطيط النص، وكاتب PNG، مما يضمن أن الواجهة تُعرض بشكل متطابق على macOS وWindows وLinux (X11/Wayland) وWebAssembly لأن نفس الكود يرسم كل بكسل.
تتبنى المكتبة نهجًا وظيفيًا حيث يكون العرض دالة نقية للحالة، ومُعالجات الأحداث هي دوال تُغير الحالة مباشرة، مما يلغي الحاجة إلى أنماط القابلية للتغيير الداخلية مثل `Rc` أو `RefCell`. يتم دمج التنسيق مباشرة في سلسلة المكونات عبر استدعاءات الطريقة (مثل `.pad()`, `.center()`, `.hover_fill()`)، وتُعرف الألوان بواسطة أدوار دلالية (مثل `Tone::Surface`) التي تُحل مقابل المظهر النشط. يضمن ذلك مظهرًا متسقًا عبر أوضاع الضوء والظلام دون أوراق أنماط منفصلة.
تتبع rui فلسفة "الأساسيات، وليس الكتالوج". لا تُرسل معها أدوات معقدة جاهزة مثل مربعات الاختيار أو شريط التمرير. بدلًا من ذلك، توفر سبع بدائيات قوية (مثل `draw`, `on_drag`, و`ease`) تسمح للمطورين بتركيب هذه عناصر التحكم بأنفسهم. يضمن هذا النهج أن مكونات واجهة المستخدم قابلة للتخصيص وخالية من قيود مكتبة أدوات جامدة. العناصر المدمجة مثل `button`, `text`, و`row` هي في حد ذاتها وصفات مبنية على هذه البدائيات، وتعمل كنموذج مرجعي.
الوصولية هي ركيزة أساسية في البنية. تعمل شجرة العناصر كشجرة وصولية، وتستخرج تلقائيًا الأدوار والأسماء والحالات من هيكل واجهة المستخدم. يضمن ذلك أن قارئات الشاشة والتقنيات المساعدة تتلقى معلومات دقيقة دون الحاجة إلى تعليق يدوي. تفرض المكتبة اتفاقيات الوصولية من خلال اختبار صارم، مما يضمن أن العناصر التفاعلية لها هويات مناسبة وأن إدارة التركيز متسقة.
يتم دعم الاختبار بواسطة `Harness` حتمية تقود خط أنابيب العرض الفعلي في بيئة بدون رأس. يتيح ذلك إجراء تأكيدات دقيقة على التخطيط، وإخراج البكسل، وحالات التفاعل. يُستخدم خط اختبار اصطناعي لضمان اتساق قياسات النص عبر أجهزة مختلفة، مما يتيح اختبارات تكامل ومطابقة موثوقة.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.