কোড প্রজন্ম

কোড জেনারেশন হল একটি কর্মক্ষেত্রে ব্লকগুলিকে কোডের একটি স্ট্রিংয়ে পরিণত করার প্রক্রিয়া যা কার্যকর করা যেতে পারে।

কোড তৈরি করা অত্যন্ত গুরুত্বপূর্ণ, কারণ এটিই আপনার ব্লকগুলিকে প্রকৃতপক্ষে কাজগুলি করতে দেয়, যেমন গাণিতিক অভিব্যক্তি মূল্যায়ন করা, একটি গোলকধাঁধার মাধ্যমে একটি চরিত্র সরানো, বা একটি অনলাইন দোকান কনফিগার করা!

আপনি সরাসরি ব্লক "চালান" করতে পারবেন না। পরিবর্তে আপনি কোড স্ট্রিং তৈরি করুন এবং তারপর সেগুলি চালান।

কোড জেনারেটর

কোড জেনারেট করতে, আপনি কোন টেক্সট-ভিত্তিক ভাষা তৈরি করতে চান তা বেছে নিতে হবে।

একটি কোড জেনারেটর হল এমন একটি শ্রেণী যা কোড তৈরি করার নিয়মগুলি পরিচালনা করে যা একটি প্রদত্ত ভাষার জন্য নির্দিষ্ট, কিন্তু একটি পৃথক ব্লকের জন্য নির্দিষ্ট নয়। উদাহরণস্বরূপ, এটি মন্তব্য বিন্যাস, বিবৃতি ইনডেন্ট করা এবং স্ট্রিং উদ্ধৃত করার মতো জিনিসগুলি পরিচালনা করে।

// javascriptGenerator is a code generator that makes javascript strings.
import {javascriptGenerator} from 'blockly/javascript';

const code = javascriptGenerator.workspaceToCode(myWorkspace);

ব্লকলি 5টি অন্তর্নির্মিত কোড জেনারেটর সরবরাহ করে:

  • জাভাস্ক্রিপ্ট ES5
  • পাইথন 3
  • লুয়া 5.1
  • ডার্ট 2
  • পিএইচপি 7

আপনি নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে জেনারেটর আমদানি এবং ব্যবহার করতে পারেন।

মডিউল

import {javascriptGenerator} from 'blockly/javascript';
import {pythonGenerator} from 'blockly/python';
import {phpGenerator} from 'blockly/php';
import {luaGenerator} from 'blockly/lua';
import {dartGenerator} from 'blockly/dart';

const jsCode = javascriptGenerator.workspaceToCode(workspace);
const pythonCode = pythonGenerator.workspaceToCode(workspace);
const phpCode = phpGenerator.workspaceToCode(workspace);
const luaCode = luaGenerator.workspaceToCode(workspace);
const dartCode = dartGenerator.workspaceToCode(workspace);

আনপিকেজি

ব্লকলি অন্তর্ভুক্ত করার পরে আপনাকে অবশ্যই জেনারেটর অন্তর্ভুক্ত করতে হবে।

<script src="https://unpkg.com/blockly"></script>
<script src="https://unpkg.com/blockly/javascript_compressed"></script>
<script src="https://unpkg.com/blockly/python_compressed"></script>
<script src="https://unpkg.com/blockly/php_compressed"></script>
<script src="https://unpkg.com/blockly/lua_compressed"></script>
<script src="https://unpkg.com/blockly/dart_compressed"></script>
const jsCode = javascript.javascriptGenerator.workspaceToCode(workspace);
const pythonCode = python.pythonGenerator.workspaceToCode(workspace);
const phpCode = php.phpGenerator.workspaceToCode(workspace);
const luaCode = lua.luaGenerator.workspaceToCode(workspace);
const dartCode = dart.dartGenerator.workspaceToCode(workspace);

স্থানীয় স্ক্রিপ্ট

ব্লকলি অন্তর্ভুক্ত করার পরে আপনাকে অবশ্যই জেনারেটর অন্তর্ভুক্ত করতে হবে।

<script src="blockly_compressed.js"></script>
<script src="javascript_compressed.js"></script>
<script src="python_compressed.js"></script>
<script src="php_compressed.js"></script>
<script src="lua_compressed.js"></script>
<script src="dart_compressed.js"></script>
const jsCode = javascript.javascriptGenerator.workspaceToCode(workspace);
const pythonCode = python.pythonGenerator.workspaceToCode(workspace);
const phpCode = php.phpGenerator.workspaceToCode(workspace);
const luaCode = lua.luaGenerator.workspaceToCode(workspace);
const dartCode = dart.dartGenerator.workspaceToCode(workspace);

যদি এই তালিকায় আপনি যে ভাষাটির জন্য কোড তৈরি করতে চান তা অন্তর্ভুক্ত না করে, আপনি একটি কাস্টম কোড জেনারেটরও তৈরি করতে পারেন৷

ব্লক কোড জেনারেটর

কোড তৈরির দ্বিতীয় অংশটি পৃথক ব্লকগুলি কী কোড তৈরি করে তা নির্ধারণ করছে। এটি প্রতিটি ব্লকের জন্য করা উচিত, প্রতিটি পৃথক ভাষার জন্য যা আপনি তৈরি করতে চান।

javascriptGenerator.forBlock['my_custom_block'] = function(block, generator) { /* ... */ }

কোড জেনারেটর কিভাবে কাজ করে বিভিন্ন ধরনের ব্লকের জন্য আলাদা:

কিন্তু তাদের সকলের জন্য ক্ষেত্রগুলি থেকে মান সংগ্রহ করা , অভ্যন্তরীণ ব্লকের কোড সংগ্রহ করা এবং তারপর সেই স্ট্রিংগুলিকে সংযুক্ত করা প্রয়োজন।

প্রজন্ম

জেনারেশন করা যেতে পারে যখন শেষ-ব্যবহারকারী এটির অনুরোধ করে (উদাহরণস্বরূপ, যখন তারা একটি বোতামে ক্লিক করে), বা এটি ক্রমাগত করা যেতে পারে।

ক্রমাগত আপডেট আপনাকে কোডটি দেখানো বা চালানোর অনুমতি দেয় যখনই ব্যবহারকারী পরিবর্তন করে। কোড জেনারেট করা একটি দ্রুত অপারেশন, তাই এটি করার জন্য কর্মক্ষমতার প্রভাব কম। এটি একটি ইভেন্ট লিসেনার ব্যবহার করে করা হয়।

const supportedEvents = new Set([
  Blockly.Events.BLOCK_CHANGE,
  Blockly.Events.BLOCK_CREATE,
  Blockly.Events.BLOCK_DELETE,
  Blockly.Events.BLOCK_MOVE,
]);

function updateCode(event) {
  if (workspace.isDragging()) return; // Don't update while changes are happening.
  if (!supportedEvents.has(event.type)) return;

  const code = javascriptGenerator.workspaceToCode(workspace);
  document.getElementById('textarea').value = code;
}

workspace.addChangeListener(updateCode);

প্রস্তাবনা বা পোস্টস্ক্রিপ্ট কোড

আপনি আপনার কোড তৈরি করার পরে আপনি জেনারেট করা কোডের শুরুতে বা শেষে (ঐচ্ছিক) প্রস্তাবনা বা প্রস্তাবনা কোড অন্তর্ভুক্ত করতে পারেন।

let code = javascriptGenerator.workspaceToCode(workspace);
// Add a preamble and a postscript to the code.
code = `const def = 'some value';\n${code}\nkickOffSomeFunction();\n`;

প্রস্তাবনা কোড সাধারণত কোডের শুরুতে বাহ্যিক সংজ্ঞা অন্তর্ভুক্ত করতে ব্যবহৃত হয়। পোস্টস্ক্রিপ্ট কোড সাধারণত কোডের শেষে আচরণ শুরু করার জন্য ফাংশন কল করতে ব্যবহৃত হয়।

যদি আপনার জেনারেট করা কোডটি যেমন আছে তেমনি চালানো যায়, তাহলে একটি প্রস্তাবনা বা পোস্টস্ক্রিপ্ট অন্তর্ভুক্ত করার দরকার নেই।

মৃত্যুদন্ড

আপনি কোড তৈরি করার পরে, আপনাকে এটি কীভাবে কার্যকর করতে হবে তা খুঁজে বের করতে হবে। এটি কীভাবে কার্যকর করা যায় তা নির্ধারণ করা খুবই অ্যাপ্লিকেশন-নির্দিষ্ট এবং ব্লকলির সুযোগের বাইরে।

জাভাস্ক্রিপ্ট কোডের জন্য ব্লকলি টিম JSInterpreter ব্যবহার করার পরামর্শ দেয়। অন্যান্য ভাষার জন্য অন্যান্য সরঞ্জাম প্রয়োজন।