-
Notifications
You must be signed in to change notification settings - Fork 2
/
alifstudio.alif
159 lines (132 loc) · 6.47 KB
/
alifstudio.alif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#ألف
نص إسم = "ألف ستوديو 3"
نص نسخة = "1.0.2"
-- المكتبات -----------------------------------
#مكتبة "الواجهة"
#مكتبة "الملفات"
#مكتبة "التشفير"
#مكتبة "الخوارزميات"
#مكتبة "النظام"
-- الكائنات -----------------------------------
كائن نافذة = الواجهة("")
كائن ملفات = الملفات()
كائن تشفير = التشفير()
كائن نظام = النظام()
-- المتغيرات العامة ---------------------------
نص الملف_الحالي_المسار
نص الملف_الحالي_المسار_المجلد
نص الملف_الحالي_المسار_اتطبيق
نص الملف_الحالي_المسار_اسجل
نص الملف_الحالي_النوع
نص الملف_الحالي_الإسم
نص نوع_نظام_التشغيل
منطق هل_ثم_الحفظ = خطأ
منطق فحص_سريع_مشغول = خطأ
-- الدوال - إغلاق ------------------------------
دالة إغلاق
نافذة:إغلاق_شامل()
نهاية دالة
-- الدوال - فتح ملف ---------------------------
دالة فتح_ملف
نص المسار = ملفات:فتح_ملف("فتح ملف ألف")
نص نوع = ملفات:نوع_ملف(المسار)
إذا نوع = ".alif"
نص محتوى = ملفات:محتوى_ملف(المسار)
نص محتوى_64 = تشفير:ترميز_أساس_64(محتوى)
نافذة:جافاسكريبت("ألف.اضف_كود_64('" + محتوى_64 + "');")
الملف_الحالي_المسار = المسار
الملف_الحالي_النوع = نوع
الملف_الحالي_الإسم = ملفات:إسم_ملف(المسار)
الملف_الحالي_المسار_المجلد = ملفات:مسار_المجلد(المسار)
الملف_الحالي_المسار_اتطبيق = الملف_الحالي_المسار_المجلد + الملف_الحالي_الإسم + نظام:نوع_ملف_تطبيق()
الملف_الحالي_المسار_اسجل = الملف_الحالي_المسار_المجلد + الملف_الحالي_الإسم + ".alif.json"
هل_ثم_الحفظ = صحيح
نافذة:جافاسكريبت("alif_set_file_name('" + الملف_الحالي_الإسم + "');")
وإلا
المسار = استبدال(المسار، "\\"، "\\\\" )
نافذة:رسالة("نوع الملف غير مقبول، المرجو إختيار ملف شيفرة ألف (*.alif)" + سطر + "الملف:" + سطر + المسار)
نهاية إذا
نهاية دالة
-- الدوال - تسجيل ملف -------------------------
دالة تسجيل_ملف
نص محتوى = نافذة:جافاسكريبت("return ألف.قراءة_كود();")
محتوى = استبدال(محتوى، "\r"، "" )
منطق حفظ = ملفات:حفظ_ملف(الملف_الحالي_المسار، محتوى)
إذا حفظ = صحيح
هل_ثم_الحفظ = صحيح
وإلا
هل_ثم_الحفظ = خطأ
نافذة:رسالة("عفوا، لم تنجح عملية الحفظ" + سطر + "الملف:" + سطر + الملف_الحالي_المسار)
نهاية إذا
نهاية دالة
-- الدوال - ترجمة ملف -------------------------
دالة ترجمة (منطق ترجمة_كاملة)
نص فحص_سريع
إذا ترجمة_كاملة = خطأ
إذا فحص_سريع_مشغول = صحيح
إرجاع
نهاية إذا
فحص_سريع_مشغول = صحيح
فحص_سريع = " --syntax-only "
نهاية إذا
إذا هل_ثم_الحفظ = خطأ
تسجيل_ملف()
هل_ثم_الحفظ = صحيح
نهاية إذا
إذا ترجمة_كاملة = صحيح
نافذة:جافاسكريبت("alif_debug('جاري الترجمة..');")
نهاية إذا
إذا نوع_نظام_التشغيل = "ويندوز"
نظام:أمر("C:\\Alif3\\alif.exe " + الملف_الحالي_المسار + " --log-json-base64 " + الملف_الحالي_المسار_اسجل + " --o " + الملف_الحالي_المسار_اتطبيق + فحص_سريع)
أو إذا نوع_نظام_التشغيل = "ماك"
-- ...
أو إذا نوع_نظام_التشغيل = "لينكس"
نظام:أمر("alif " + الملف_الحالي_المسار + " --log-json-base64 " + الملف_الحالي_المسار_اسجل + " --o " + الملف_الحالي_المسار_اتطبيق + فحص_سريع)
نهاية إذا
نص محتوى = ملفات:محتوى_ملف(الملف_الحالي_المسار_اسجل)
إذا محتوى = ""
نافذة:جافاسكريبت("alif_debug('');")
إذا ترجمة_كاملة = صحيح
نظام:أمر(الملف_الحالي_المسار_اتطبيق)
نهاية إذا
وإلا
-- محتوى = استبدال(محتوى، "'"، "\\'")
محتوى = تقليم(محتوى)
نافذة:جافاسكريبت("alif_debug_json('" + محتوى + "');")
نهاية إذا
فحص_سريع_مشغول = خطأ
نهاية دالة
دالة ترجمة_ملف
ترجمة (صحيح)
نهاية دالة
دالة فحص_الشيفرة
ترجمة (خطأ)
نهاية دالة
-- الدوال - تغيير المحتوى ---------------------
دالة ثم_تغيير
هل_ثم_الحفظ = خطأ
نهاية دالة
-- الرئيسية -----------------------------------
دالة رئيسية
-- إستعداد
نوع_نظام_التشغيل = نظام:نوع()
-- ربط الأزرار مع الدوال
نافذة:ربط("خروج"، إغلاق)
نافذة:ربط("فتح"، فتح_ملف)
نافذة:ربط("حفظ"، تسجيل_ملف)
نافذة:ربط("ترجمة"، ترجمة_ملف)
نافذة:ربط("ثم_تغيير"، ثم_تغيير)
نافذة:ربط("فحص_الشيفرة"، فحص_الشيفرة)
-- إنشاء خادم جديد
نص المسار = نافذة:المسار_الحالي()
نص عنوان_الخادم = نافذة:إخدم_مجلد(المسار)
نص المسار_الكامل = المسار + "index.html?webui=" + عنوان_الخادم + "/webuicore.js"
-- اطبع(سطر + "Alif Studio 3 (v" + نسخة + ")" + سطر + سطر)
-- اطبع("CWD: \t\t\t" + المسار + سطر)
-- اطبع("Server Address: \t" + عنوان_الخادم + سطر)
-- اطبع("Complete URL: \t\t" + المسار_الكامل + سطر)
-- اطبع(سطر + "Starting.." + سطر)
-- إظهار النافذة
نافذة:إظهار_متصفح_مع_مسار (نافذة:كروم، المسار_الكامل)
نافذة:إنتظار()
نهاية دالة