الحقول

تُعدّ الحقول جزءًا مهمًا من عملية إنشاء الرموز، لأنّها تحدد قيمًا قابلة للتعديل من قِبل المستخدم مثل السلاسل والأرقام والألوان (من بين سمات أخرى).

يتضمن تضمين قيم الحقول في الرمز الذي تم إنشاؤه الحصول على قيمة الحقل، وتحويلها إلى سلسلة قابلة للاستخدام، ثم ربط السلسلة مع بقية الرمز.

import {javascriptGenerator} from 'blockly/javascript';

javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) {
  // Get the field value.
  const fieldValue = block.getFieldValue('MY_FIELD');

  // Concatenate the code.
  const code = `some code ${fieldValue} some more code`;

  // Return the code.
  return code;
}

الحصول على قيم

يمكن الوصول إلى قيم الحقول باستخدام getFieldValue. يختلف ما يتم إرجاعه من حقل إلى آخر، لذا عليك مراجعة مستندات الحقل المضمَّنة للحصول على معلومات حول مجال عملك المحدد. على سبيل المثال، تعرض حقول إدخال النص النص الدقيق الذي أدخله المستخدم، لكن حقول القائمة المنسدلة تعرض سلسلة محايدة لغوية مرتبطة بالعنصر الذي حدده المستخدم.

تحويل القيم

تكون معظم قيم الحقول جاهزة للتسلسل مع سلسلة الرمز على الفور. ومع ذلك، تتطلب بعض قيم الحقول جهدًا إضافيًا قبل أن تكون قابلة للاستخدام.

السلاسل

يجب اقتباس السلاسل من قبل منشئ الرمز قبل أن يمكن إجراء تسلسل لها.

// For a single line text field.
const str = generator.quote_(block.getFieldValue('STR'));

// For a multiline text field.
const str = generator.multiline_quote_(block.getFieldValue('STR'));

المتغيرات

يجب تنظيف أسماء المتغيرات بواسطة منشئ التعليمات البرمجية قبل أن يتم تسلسلها. وهذا أمر ضروري لسببين:

  1. يُدخِل المستخدم المتغيرات باللغة التي يختارها. وهذا يعني أنها قد تحتاج إلى تحويلها إلى أحرف ASCII. على سبيل المثال، سيتم تحويل "متغير" إلى "_D9_85_D8_AA_D8_BA_D9_8A_D8_B1".
  2. قد تتعارض المتغيرات مع الكلمات المحجوزة. هذا يعني أنه قد تحتاج إلى تعديل حتى لا تتعارض. على سبيل المثال، سيتم تحويل "for" إلى "for2".
const identifier = generator.getVariableName(block.getFieldValue('VAR'));

رمز التسلسل

بمجرد الحصول على قيمة الحقل وتحويلها إلى سلسلة، يمكنك تسلسلها في المكان الصحيح مع سلسلة التعليمة البرمجية.

const code = `some code ${value} some more code`;

رمز الإرجاع

تتطلب أنواع الكتل المختلفة عرض سلسلة الرمز بطرق مختلفة، لذا تحقق من صفحاتها الفردية لمزيد من المعلومات: