§

الصق النص

§

جميع الحالات

text
  • camelCase
  • PascalCase
  • snake_case
  • CONSTANT_CASE
  • kebab-case
  • dot.case
  • path/case
  • Title Case
  • Sentence case
  • lower case
  • UPPER CASE

اصطلاحات الحالة تعكس صوت كل قاعدة برمجية في المنطقة العربية: قسم تقنية المعلومات في أرامكو السعودية يفرض camelCase على متغيرات JavaScript وCONSTANT_CASE على ثوابت بيئة CI، وبرامج علوم الحاسب في جامعة الملك عبدالله للعلوم والتقنية KAUST وجامعة الملك فهد للبترول والمعادن KFUPM وجامعة الملك سعود KSU تدرّس PEP 8 الذي يثبّت snake_case على دوال Python. مطورو فوري وفودافون كاش في مصر يتبعون أدلة Tameer ومعايير ITIDA المصرية لتدريب المطورين، فيستخدمون kebab-case لمسارات REST وdot.case لمفاتيح إعدادات YAML. كذلك تعتمد كلية البحرين البوليتكنيكية وبرامج الحاسب في الجامعة العربية المفتوحة الاصطلاحات نفسها في مقرراتها.

ما هو تحويل حالة النص؟

يأخذ تحويل حالة النص سلسلة دخل ويُصدر الكلمات ذاتها بصيغة اصطلاح حالة مختلف. أكثر الأهداف شيوعاً هي camelCase وPascalCase (تُستخدم للمعرفات في معظم اللغات ذات الأقواس المعقوفة)، وsnake_case وCONSTANT_CASE (Python وRuby وRust وماكروات C)، وkebab-case (عناوين URL وأسماء فئات CSS وسمات HTML وأسماء حزم npm)، وdot.case (مفاتيح الإعدادات ومسارات كائنات JavaScript)، وpath/case (المعرّفات على نمط نظام الملفات)، وTitle Case وSentence case (العناوين والنثر)، إضافةً إلى lower case الكامل وUPPER CASE. تكتشف هذه الأداة حدود الكلمات الطبيعية في مدخلك — المسافات البيضاء والشرطات والشرطات السفلية والنقاط والشرطات المائلة، والانتقالات من حرف صغير إلى كبير التي تميّز معرّفات على شكل helloWorld — وتُعيد تجميعها بالفاصل ونمط الكبر والصغر الذي يتطلبه كل اصطلاح هدف.

كيف يعمل تحويل الحالة؟

تتم معالجة مدخلك بالكامل داخل متصفحك باستخدام مُجزِّئ JavaScript صغير وأحد عشر مُنسِّق حالة. الخطوات الرئيسية هي:

  1. يُقرأ مدخلك حرفياً من حقل النص — كل بايت ألصقته يبقى في الذاكرة محلياً.
  2. يقوم مُجزِّئ بتقسيم المدخل على المسافات البيضاء والشرطات السفلية والشرطات والنقاط والشرطات المائلة، ثم يقسّم كل قطعة عند حدود الانتقال من حرف صغير إلى كبير (فيتحوّل helloWorld إلى ["hello", "World"]) وعند حدود حرف ↔ رقم (فيتحوّل v2API إلى ["v", "2", "API"]).
  3. تُصفّى الرموز الفارغة وتُحوَّل الرموز الباقية إلى أحرف صغيرة باستخدام String.prototype.toLocaleLowerCase لكي تُحفظ أحرف يونيكود بشكل صحيح في اللغات التركية والألمانية وغيرها.
  4. ثم تجمّع أحد عشر مُنسِّقاً الرموز إلى كل حالة هدف بدورها — camelCase وPascalCase وsnake_case وCONSTANT_CASE وkebab-case وdot.case وpath/case وTitle Case (مع قائمة كلمات صغيرة مثل and وthe وof تظل صغيرة عدا عند البداية أو النهاية)، وSentence case، وlower case الكامل، وUPPER CASE الكامل.
  5. يُكتب الناتج في صف واحد لكل حالة في شبكة النتائج؛ ولكل صف زر نسخ خاص به يستخدم Clipboard API غير المتزامن مع احتياطي متزامن document.execCommand('copy') للمتصفحات الأقدم.

لماذا تستخدم محوّل حالة الأحرف؟

  • إعادة تسمية المعرّفات: غيّر متغير JavaScript من user_id إلى userId، أو دالة Python من helloWorld إلى hello_world، أو ثابت Rust من maxBuffer إلى MAX_BUFFER دون تحرير حرف واحد في كل مرة يدوياً.
  • تحويل مفاتيح الإعدادات: اقلب JSON إعدادات مليئاً بمفاتيح camelCase إلى snake_case YAML لخدمة Python، أو إلى kebab-case لرسم Helm، بلصقة واحدة.
  • كتابة العناوين: الصق عنواناً تجريبياً واقرأ صيغة Title Case (مع استثناءات الكلمات الصغيرة في Chicago Manual of Style) بجانب صيغة Sentence case (AP Stylebook) — اختر الاصطلاح الذي يستخدمه إصدارك.
  • توليد لُقَط URL: الصق عنوان منشور مدوّنة وانسخ صيغة kebab-case مباشرة إلى حقل اللُّقطة في نظام إدارة المحتوى — يتعامل المُجزِّئ مع الترقيم والعبارات متعددة الكلمات دون أن يترك فواصل شاردة.

ما التطبيقات الشائعة لتحويل الحالة؟

يظهر التبديل بين اصطلاحات الحالة في هندسة البرمجيات وتأليف المحتوى وهندسة البيانات:

  • إعادة هيكلة الشيفرة: أعد تسمية المعرّفات عبر قاعدة شيفرة كاملة حين يتغيّر دليل الأسلوب (مثلاً JavaScript camelCase → Python snake_case أثناء إعادة كتابة الخلفية) دون إدخال أخطاء طباعة.
  • إعادة تشكيل حمولات API: حوّل مفاتيح JSON بصيغة camelCase إلى snake_case قبل تغذيتها لخلفية Ruby on Rails أو Django، أو إلى kebab-case لاسم فئة CSS-in-JS.
  • تأليف العناوين واللُّقَط: أنتج عناوين صفحة بـ Title Case ووصف ميتا بـ Sentence case ولُقطة URL بـ kebab-case من العنوان المصدر ذاته في خطوة واحدة.

كيف يبدو مثال على تحويل الحالة؟

الصق Hello World API في الإدخال. تُصيِّر شبكة النتائج أحد عشر صفاً في آن واحد: helloWorldApi (camelCase)، HelloWorldApi (PascalCase)، hello_world_api (snake_case)، HELLO_WORLD_API (CONSTANT_CASE)، hello-world-api (kebab-case)، hello.world.api (dot.case)، hello/world/api (path/case)، Hello World Api (Title Case)، Hello world api (Sentence case)، hello world api (lower case)، وHELLO WORLD API (UPPER CASE). يلصق المدخل نفسه بصيغة helloWorldAPI ويتجزّأ إلى الكلمات الثلاث ذاتها — يتعامل كاشف حدود الانتقال من الحرف الصغير إلى الكبير مع هذا الشكل أيضاً.

هل يعمل هذا داخل متصفحي؟

نعم. المُجزِّئ ومُنسِّقات الحالة الأحد عشر حوالى 120 سطر JavaScript خالص تعمل داخل تبويب المتصفح. لا شيء يُرفع، ولا يتوسط أي عامل خدمة مدخلك، ولا تُرسل الصفحة أي طلبات شبكية لخطوة التحويل ذاتها. الحركة الخارجة الوحيدة هي أصول تحميل الصفحة المعتادة (CSS وخطوط وتحليلات) — لا يصل نصك إلى Ultim8Soft.

أي صيغة حالة أستخدم لأسماء المتغيرات؟

تعتمد على اللغة ودليل الأسلوب لفريقك. تستخدم قواعد شيفرة JavaScript وTypeScript بشكل ساحق camelCase للمتغيرات والدوال، وPascalCase للفئات ومكوّنات React، وCONSTANT_CASE لأسماء متغيرات البيئة وثوابت المستوى — يثبّت دليل Google JavaScript ودليل Airbnb كلاهما هذه الخيارات. تفضّل Python (PEP 8) وRuby وRust snake_case للمتغيرات والدوال، وPascalCase للفئات، وCONSTANT_CASE للثوابت على مستوى الوحدة. تميل قواعد شيفرة C وC++ (Linux kernel وLLVM) إلى snake_case للدوال وCONSTANT_CASE لماكروات المعالج السابق. عند الشك، شغّل أداة Lint أو Formatter لفريقك — ستخبرك أي اصطلاح مفروض.

كيف تتم التجزئة؟

يقسم المُجزِّئ أولاً المدخل على أي تشغيل من المسافات البيضاء أو الشرطة السفلية (_) أو الشرطة (-) أو النقطة (.) أو الشرطة المائلة (/). ثم تُقسم كل قطعة ناتجة مجدداً عند حدود الانتقال من حرف صغير إلى كبير (فيتحوّل helloWorld إلى ["hello", "World"]) وعند حدود حرف ↔ رقم (فيتحوّل v2API إلى ["v", "2", "API"]). تُصفّى الرموز الفارغة، وتُحوَّل الرموز الباقية إلى أحرف صغيرة عبر String.prototype.toLocaleLowerCase. ثم تُعيد المُنسِّقات تكبير الرموز وضمّها بالفاصل الذي تتطلبه كل حالة. تتعامل الاستراتيجية مع جميع الأشكال الستة الشائعة للمعرّفات — camelCase وPascalCase وsnake_case وkebab-case وCONSTANT_CASE والنثر العادي الذي تفصله المسافات — جاهزة.

ماذا عن أحرف يونيكود / غير ASCII؟

تنجو أحرف يونيكود من رحلة الذهاب والإياب. يستخدم المُجزِّئ String.prototype.toLocaleLowerCase وtoLocaleUpperCase، اللذين يحترمان قواعد الكبر والصغر الخاصة بالموقع — التركية بين i منقوطة وغير منقوطة، والألمانية ß تُكبَّر إلى SS، والحروف اللاتينية المعجمة في الفرنسية والإسبانية، وهكذا. وتظل الأحرف غير الحروف التي ليست في مجموعة الفواصل (المسافات البيضاء و_ و- و. و/) — على سبيل المثال الأرقام والحروف المعجمة وأحرف CJK — داخل الرمز الذي تظهر فيه، وتُعيد المُنسِّقات إصدارها كما هي. هذا يعني أن مدخلاً مثل nœud_principal يتجزّأ إلى ["nœud", "principal"] ويتحوّل بنظافة إلى nœudPrincipal (camelCase) أو NœudPrincipal (PascalCase).

هذا المحوّل صفحة ثابتة واحدة تشغّل المُجزِّئ والمُنسِّقات الأحد عشر بالكامل داخل متصفحك — بلا مكتبة بائع، وبلا طلب شبكي لكل تحويل، وبلا حساب. الصق أي نص أعلاه، وامسح المخرجات الأحد عشر جنباً إلى جنب، وانسخ ما تحتاج.