mystic-yard 2.0.3 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,23 +1,20 @@
1
- const rules = require("./rules");
2
-
3
- function parser(tokens) {
4
- let output = "";
5
-
6
- for (let token of tokens) {
7
- const rule = rules.find(
8
- r => r.from.toLowerCase() === token.toLowerCase()
9
- );
10
-
11
- if (rule) {
12
- output += rule.to;
1
+ module.exports = function(tokens) {
2
+ let jsCode = "";
3
+
4
+ // উদাহরণ: টোকেনাইজড কোড প্রসেস করার লুপ
5
+ for (let i = 0; i < tokens.length; i++) {
6
+ if (tokens[i] === 'print') {
7
+ // print এর পরের টোকেনটিকে console.log এ কনভার্ট করবে
8
+ let value = tokens[i + 1] || '""';
9
+ jsCode += `console.log(${value});\n`;
10
+ i++;
13
11
  } else {
14
- output += token;
12
+ // অন্য কোনো সাধারণ জাভাস্ক্রিপ্ট কোড থাকলে সরাসরি বসাবে
13
+ if (tokens[i].trim() !== "") {
14
+ jsCode += tokens[i] + " ";
15
+ }
15
16
  }
16
-
17
- output += " ";
18
17
  }
19
-
20
- return output.trim();
21
- }
22
-
23
- module.exports = parser;
18
+
19
+ return jsCode.trim();
20
+ };
@@ -2,18 +2,17 @@ const fs = require('fs');
2
2
  const path = require('path');
3
3
 
4
4
  function scanDir(dirPath, fileList = []) {
5
- // ডিরেক্টরির সব ফাইল ও ফোল্ডারের লিস্ট নেওয়া
6
5
  const files = fs.readdirSync(dirPath);
7
6
 
8
7
  files.forEach(file => {
9
8
  const filePath = path.join(dirPath, file);
10
9
  const stat = fs.statSync(filePath);
11
10
 
12
- // node_modules এবং dist ফোল্ডার বাদ দিয়ে বাকি সব ফোল্ডারের ভেতরে খুঁজবে
11
+ // node_modules এবং dist ফোল্ডার বাদ দিয়ে বাকি সব ফোল্ডারে খুঁজবে
13
12
  if (stat.isDirectory() && file !== 'node_modules' && file !== 'dist') {
14
13
  scanDir(filePath, fileList);
15
14
  }
16
- // যদি ফাইলটির এক্সটেনশন .my হয়, তবে সেটি লিস্টে যোগ করবে
15
+ // যদি ফাইলটির এক্সテンশন .my হয়, তবে সেটি রিড করবে
17
16
  else if (stat.isFile() && path.extname(file) === '.my') {
18
17
  fileList.push({
19
18
  name: file,
@@ -25,8 +24,6 @@ function scanDir(dirPath, fileList = []) {
25
24
  return fileList;
26
25
  }
27
26
 
28
- // ফ্রেমওয়ার্কের মূল ফাংশন যা ফাইলগুলো রিটার্ন করবে
29
27
  module.exports = function() {
30
- // এটি হার্ডকোডেড পাথ বাদ দিয়ে সরাসরি বর্তমান প্রজেক্টের রুট ডিরেক্টরি স্ক্যান করবে
31
28
  return scanDir(process.cwd());
32
29
  };
@@ -1,8 +1,17 @@
1
- const fs = require("fs");
1
+ const fs = require('fs');
2
+ const path = require('path');
2
3
 
3
- function writer(code, fileName) {
4
- fs.writeFileSync(fileName, code);
5
- console.log("File created:", fileName);
6
- }
7
-
8
- module.exports = writer;
4
+ module.exports = function(jsCode, outputPath) {
5
+ try {
6
+ // ফাইলটি যে ডিরেক্টরিতে তৈরি হবে, তা নিশ্চিত করা
7
+ const dir = path.dirname(outputPath);
8
+ if (!fs.existsSync(dir)){
9
+ fs.mkdirSync(dir, { recursive: true });
10
+ }
11
+
12
+ // জাভাস্ক্রিপ্ট কোডটি ফাইলে লিখে দেওয়া
13
+ fs.writeFileSync(outputPath, jsCode, 'utf8');
14
+ } catch (error) {
15
+ console.error(`❌ ফাইল রাইট করতে সমস্যা হয়েছে (${outputPath}):`, error.message);
16
+ }
17
+ };
package/compiler.js CHANGED
@@ -1,33 +1,64 @@
1
1
  const fs = require('fs');
2
2
  const path = require('path');
3
+ const { exec } = require('child_process'); // JS ফাইল রান করার জন্য
3
4
 
4
- const scanner = require("./compiler/scanner");
5
- const parser = require("./compiler/parser");
6
- const writer = require("./compiler/writer");
5
+ const directoryPath = './src'; // আপনার সোর্স ফোল্ডার
7
6
 
8
- // 🌟 নতুন যুক্ত করা স্বয়ংক্রিয় রানার ফাংশন (আগের কোনো কোড পরিবর্তন না করে)
9
- function initFramework() {
10
- const files = scanner();
7
+ // JS ফাইল টার্মিনালে রান করার ফাংশন
8
+ function runJsFile(jsFile) {
9
+ const jsFilePath = path.join(directoryPath, jsFile);
11
10
 
12
- console.log("Files:", files);
11
+ // টার্মিনালে স্বয়ংক্রিয়ভাবে 'node src/filename.js' কমান্ডটি রান করবে
12
+ exec(`node "${jsFilePath}"`, (error, stdout, stderr) => {
13
+ console.log(`\n--- Output of ${jsFile} ---`);
14
+
15
+ if (error) {
16
+ console.error(`❌ রান করতে এরর হয়েছে: ${error.message}`);
17
+ return;
18
+ }
19
+ if (stderr) {
20
+ console.error(`⚠️ স্ট্যানডার্ড এরর: ${stderr}`);
21
+ return;
22
+ }
23
+
24
+ // ফাইলের আসল আউটপুট টার্মিনালে প্রিন্ট হবে
25
+ console.log(stdout || '(কোনো আউটপুট নেই)');
26
+ console.log("-".repeat(25));
27
+ });
28
+ }
13
29
 
14
- for (const file of files) {
15
- console.log("Reading:", file.name);
16
- console.log("Code:", file.code);
30
+ // নাম মিলিয়ে অটো-কানেক্ট এবং রান করার মেইন ফাংশন
31
+ function startCompiler() {
32
+ try {
33
+ if (!fs.existsSync(directoryPath)) {
34
+ console.error(`❌ ডিরেক্টরি পাওয়া যায়নি: ${directoryPath}`);
35
+ return;
36
+ }
17
37
 
18
- const tokens = file.code.split(/\s+/);
19
- console.log("Tokens:", tokens);
38
+ const files = fs.readdirSync(directoryPath);
39
+ const myFiles = files.filter(file => file.endsWith('.my'));
40
+ const jsFiles = files.filter(file => file.endsWith('.js'));
20
41
 
21
- const jsCode = parser(tokens);
22
- console.log("Generated JS:", jsCode);
42
+ console.log("🔍 ফাইল স্ক্যান করা হচ্ছে...");
23
43
 
24
- writer(jsCode, "./dist/output.js");
25
- }
44
+ myFiles.forEach(myFile => {
45
+ const baseName = path.basename(myFile, '.my');
46
+ const matchingJsFile = `${baseName}.js`;
26
47
 
27
- console.log("Compilation complete!");
48
+ if (jsFiles.includes(matchingJsFile)) {
49
+ console.log(`🔗 কানেক্টেড: ${myFile} -> ${matchingJsFile}`);
50
+
51
+ // ম্যাচ হওয়া JS ফাইলটিকে রান করা হচ্ছে
52
+ runJsFile(matchingJsFile);
53
+ } else {
54
+ console.warn(`⚠️ সতর্কতা: '${myFile}' এর জন্য কোনো '${baseName}.js' পাওয়া যায়নি।`);
55
+ }
56
+ });
57
+
58
+ } catch (error) {
59
+ console.error("কম্পাইলার রান করতে সমস্যা হয়েছে:", error);
60
+ }
28
61
  }
29
62
 
30
- // আপনার আগের কোডের সব ফাংশনালিটি অক্ষুণ্ণ রেখে এক্সপোর্ট করা হলো
31
- module.exports = {
32
- init: initFramework
33
- };
63
+ // কম্পাইলার স্টার্ট করুন
64
+ startCompiler();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mystic-yard",
3
- "version": "2.0.3",
3
+ "version": "2.0.5",
4
4
  "description": "It is total best a framework, become it have a very shortcut",
5
5
  "main": "compiler.js",
6
6
  "scripts": {