ما الذي تفعله هذه الأداة
يعيد منسّق Ruby كتابة شيفرة Ruby بمسافات بادئة وتباعد متسقين. الصق سكربتًا أو نموذج Rails أو Rakefile وستعود إليك الشيفرة بمسافة بادئة من مسافتين، وعبارة واحدة في كل سطر، ومسافات حول العوامل وداخل الأقواس، وسلاسل استدعاء الدوال الطويلة ملفوفة لتناسب عرض السطر.
يستخدم Syntax Tree الذي يعمل على مفسّر Ruby الحقيقي المُصرَّف إلى WebAssembly. ولأن المحلّل هو محلّل Ruby نفسها، تُفهم الصياغات الحديثة مثل الدوال بلا end ومطابقة الأنماط والوسائط المسمّاة تمامًا كما تفهمها Ruby.
طريقة الاستخدام
- الصق شيفرة Ruby، أو افتح ملف
.rb. - انتظر النتيجة الأولى. يُنزَّل المفسّر مرة واحدة في الخلفية.
- اختر عرض السطر. تُكسر الأسطر الأطول من هذا العرض عند استدعاءات الدوال أو الوسائط أو عناصر hash.
- انسخ الشيفرة المنسّقة أو نزّلها.
إذا تعذّر تحليل الشيفرة، تعرض الأداة خطأ Ruby الصياغي، مثل syntax error, unexpected 'end'، كي تعثر على الجزء الناقص.
مثال
المثال وحدة صغيرة لعربة تسوّق كُتبت دون اهتمام بالتخطيط: جسم صنف دون مسافة بادئة، وinitialize مكتوبة في سطر واحد بفواصل منقوطة، وhashes دون مسافات، وعامل ثلاثي دون مسافات حول >. بعد التنسيق تُزاح الوحدة والصنف بمسافة بادئة، وتحصل كل عبارة في initialize على سطر مستقل، وتصبح قيم hash الحرفية { name: name, price: price, qty: qty }، ويُقرأ العامل الثلاثي هكذا: cart.total > 10 ? "big order" : "small order".
ما الذي لا تغيّره
لا يغيّر المنسّق إلا التخطيط. فهو لا يعيد تسمية المتغيرات، ولا يحوّل صياغة hash rocket إلى الصياغة الجديدة، ولا يبدّل بين علامات الاقتباس المفردة والمزدوجة. وتُحفظ التعليقات. إذا احتجت إلى هذه التصحيحات الأسلوبية، فشغّل التصحيح التلقائي في RuboCop داخل مشروعك بعد التنسيق.
نصائح
- استخدم عرض السطر نفسه المضبوط في
.rubocop.ymlالخاص بمشروعك (Layout/LineLength) كي تجتاز الشيفرة المنسّقة أداة الفحص. - التنسيق طريقة سريعة لاكتشاف
endمفقودة: تبلّغ Ruby عن الموضع الذي توقفت عنده، وعادةً يكون بعد الكتلة التي لم تُغلق مباشرةً.
الأسئلة الشائعة
› ما المنسّق الذي تستخدمه الأداة؟
Syntax Tree، منسّق Ruby الذي تقوم عليه إضافة Prettier الرسمية لـ Ruby. يعمل على CRuby، مفسّر Ruby القياسي، مُصرَّفًا إلى WebAssembly، لذا يحلّل شيفرتك تمامًا كما تفعل Ruby.
› لماذا يكون التشغيل الأول بطيئًا؟
تنزّل الصفحة مفسّر Ruby والمنسّق، بحجم نحو 13 MB، في أول مرة تنسّق فيها شيئًا، وتشغّلهما في worker في الخلفية كي تبقى الصفحة متجاوبة. بعد ذلك يستغرق التنسيق جزءًا من الثانية.
› هل تتبع أسلوب RuboCop؟
في الغالب نعم. ينتج Syntax Tree مسافة بادئة من مسافتين، ومسافات داخل أقواس hash وحول العوامل، وسطرًا فارغًا واحدًا بين الدوال، وهذا يطابق قواعد التخطيط الافتراضية في RuboCop. لكنه لا يغيّر نمط علامات الاقتباس ولا يعيد كتابة الشيفرة كما يفعل `rubocop -a`.
› هل تُرفع شيفرتي؟
لا. يعمل كل شيء في متصفحك ولا يُرسل أي شيء إلى خادم.