1 /* ---------- */
2 /* najilang.c */
3 /* ---------- */
4
5 /* naji language functions */
6
7 /* this .c file is a part */
8 /* of libnaji version 0.6.4 */
9
10 /* libnaji is based on */
11 /* the original najitool */
12
13 /* both najitool and libnaji */
14 /* are public domain and are */
15 /* made by the same author */
16 /* please read license.txt */
17
18 /* made by NECDET COKYAZICI */
19
20 #include "libnaji.h"
21 #include "naji_uni.h"
22
naji_e2a_unicode(int a)23 int naji_e2a_unicode(int a)
24 {
25 if (a == 'A') return UCODE_AR_ALIF;
26 if (a == 'a') return UCODE_AR_FATHA;
27 if (a == 'b') return UCODE_AR_BEH;
28 if (a == 'c') return UCODE_AR_AIN;
29 if (a == 'd') return UCODE_AR_DAL;
30 if (a == 'e') return UCODE_AR_FATHA;
31 if (a == 'f') return UCODE_AR_FEH;
32 if (a == 'g') return UCODE_AR_GHAIN;
33 if (a == 'h') return UCODE_AR_HEH;
34 if (a == 'i') return UCODE_AR_KASRA;
35 if (a == 'j') return UCODE_AR_JEEM;
36 if (a == 'k') return UCODE_AR_KAF;
37 if (a == 'l') return UCODE_AR_LAM;
38 if (a == 'm') return UCODE_AR_MEEM;
39 if (a == 'n') return UCODE_AR_NOON;
40 if (a == 'o') return UCODE_AR_DAMMA;
41 if (a == 'p') return UCODE_AR_BEH;
42 if (a == 'q') return UCODE_AR_QAF;
43 if (a == 'r') return UCODE_AR_REH;
44 if (a == 's') return UCODE_AR_SEEN;
45 if (a == 't') return UCODE_AR_TEH;
46 if (a == 'u') return UCODE_AR_DAMMA;
47 if (a == 'v') return UCODE_AR_THEH;
48 if (a == 'w') return UCODE_AR_WAW;
49 if (a == 'x') return UCODE_AR_HAH;
50 if (a == 'y') return UCODE_AR_YEH;
51 if (a == 'z') return UCODE_AR_THAL;
52 if (a == 'K') return UCODE_AR_KHAH;
53 if (a == 'D') return UCODE_AR_DAD;
54 if (a == 'S') return UCODE_AR_SAD;
55 if (a == '$') return UCODE_AR_SHEEN;
56 if (a == 'T') return UCODE_AR_TAH;
57 if (a == 'U') return UCODE_AR_WAW;
58 if (a == 'V') return UCODE_AR_ZAIN;
59 if (a == '\'') return UCODE_AR_HAMZA;
60 if (a == 'W') return UCODE_AR_WAW_WITH_HAMZA_ABOVE;
61 if (a == 'I') return UCODE_AR_ALIF_WITH_HAMZA_BELOW;
62 if (a == 'Y') return UCODE_AR_ALIF_MAKSURA;
63 if (a == 'Z') return UCODE_AR_ZAH;
64 if (a == 'H') return UCODE_AR_TEH_MARBUTA;
65 if (a == 'E') return UCODE_AR_ALIF_WITH_HAMZA_ABOVE;
66 if (a == '@') return UCODE_AR_ALIF_WITH_MADDA_ABOVE;
67 if (a == '~') return UCODE_AR_SHADDA;
68 if (a == 'N') return UCODE_AR_FATHATAN;
69 if (a == '=') return UCODE_AR_KASRATAN;
70 if (a == '%') return UCODE_AR_DAMMATAN;
71 if (a == '^') return UCODE_AR_SUKUN;
72 if (a == '?') return UCODE_AR_QUESTION_MARK;
73 if (a == ',') return UCODE_AR_COMMA;
74 if (a == ';') return UCODE_AR_SEMICOLON;
75
76 return a; /* returns what it got if it couldn't convert it */
77 }
78
naji_e2a(int a)79 int naji_e2a(int a)
80 {
81 if (a == 'A') return 199;
82 if (a == 'a') return 243;
83 if (a == 'b') return 200;
84 if (a == 'c') return 218;
85 if (a == 'd') return 207;
86 if (a == 'e') return 243;
87 if (a == 'f') return 221;
88 if (a == 'g') return 219;
89 if (a == 'h') return 229;
90 if (a == 'i') return 246;
91 if (a == 'j') return 204;
92 if (a == 'k') return 223;
93 if (a == 'l') return 225;
94 if (a == 'm') return 227;
95 if (a == 'n') return 228;
96 if (a == 'o') return 245;
97 if (a == 'p') return 200;
98 if (a == 'q') return 222;
99 if (a == 'r') return 209;
100 if (a == 's') return 211;
101 if (a == 't') return 202;
102 if (a == 'u') return 245;
103 if (a == 'v') return 203;
104 if (a == 'w') return 230;
105 if (a == 'x') return 205;
106 if (a == 'y') return 237;
107 if (a == 'z') return 210;
108 if (a == 'K') return 206;
109 if (a == 'D') return 214;
110 if (a == 'S') return 213;
111 if (a == '$') return 212;
112 if (a == 'T') return 216;
113 if (a == 'U') return 230;
114 if (a == 'V') return 208;
115 if (a == '\'') return 193;
116 if (a == 'W') return 196;
117 if (a == 'I') return 197;
118 if (a == 'Y') return 236;
119 if (a == 'Z') return 217;
120 if (a == 'H') return 201;
121 if (a == 'E') return 195;
122 if (a == '@') return 194;
123 if (a == '~') return 248;
124 if (a == 'N') return 240;
125 if (a == '=') return 242;
126 if (a == '%') return 241;
127 if (a == '^') return 250;
128 if (a == '?') return 191;
129 if (a == ',') return 161;
130 if (a == ';') return 186;
131 return a; /* returns what it got if it couldn't convert it */
132 }
133
naji_a2e(int a)134 int naji_a2e(int a)
135 {
136 if (a == 243) return 'a';
137 if (a == 246) return 'i';
138 if (a == 245) return 'u';
139 if (a == 248) return '~';
140 if (a == 240) return 'N';
141 if (a == 242) return '=';
142 if (a == 241) return '%';
143 if (a == 250) return '^';
144 if (a == 199) return 'A';
145 if (a == 200) return 'b';
146 if (a == 202) return 't';
147 if (a == 203) return 'v';
148 if (a == 204) return 'j';
149 if (a == 205) return 'x';
150 if (a == 206) return 'K';
151 if (a == 207) return 'd';
152 if (a == 208) return 'V';
153 if (a == 209) return 'r';
154 if (a == 210) return 'z';
155 if (a == 211) return 's';
156 if (a == 212) return '$';
157 if (a == 213) return 'S';
158 if (a == 214) return 'D';
159 if (a == 216) return 'T';
160 if (a == 218) return 'c';
161 if (a == 219) return 'g';
162 if (a == 221) return 'f';
163 if (a == 222) return 'q';
164 if (a == 223) return 'k';
165 if (a == 225) return 'l';
166 if (a == 227) return 'm';
167 if (a == 228) return 'n';
168 if (a == 229) return 'h';
169 if (a == 230) return 'w';
170 if (a == 237) return 'y';
171 if (a == 193) return '\'';
172 if (a == 196) return 'W';
173 if (a == 197) return 'I';
174 if (a == 236) return 'Y';
175 if (a == 217) return 'Z';
176 if (a == 201) return 'H';
177 if (a == 195) return 'E';
178 if (a == 194) return '@';
179 if (a == 191) return '?';
180 if (a == 161) return ',';
181 if (a == 186) return ';';
182
183 return a; /* returns what it got if it couldn't convert it */
184 }
185
eng2arab(char * namein,char * nameout)186 void eng2arab(char *namein, char *nameout)
187 {
188 int letter;
189
190 najin(namein);
191 najout(nameout);
192
193 loop
194 {
195 letter = fgetc(naji_input);
196
197 if (letter == EOF)
198 endloop;
199
200 letter = naji_e2a(letter);
201 fputc(letter, naji_output);
202 }
203
204 najinclose();
205 najoutclose();
206 }
207
arab2eng(char * namein,char * nameout)208 void arab2eng(char *namein, char *nameout)
209 {
210 int letter;
211
212 najin(namein);
213 najout(nameout);
214
215 loop
216 {
217 letter = fgetc(naji_input);
218
219 if (letter == EOF)
220 endloop;
221
222 letter = naji_a2e(letter);
223 fputc(letter, naji_output);
224 }
225
226 najinclose();
227 najoutclose();
228 }
229
230
231
232
e2ahtml(char * namein,char * nameout)233 void e2ahtml(char *namein, char *nameout)
234 {
235 int letter;
236
237 najin(namein);
238 najout(nameout);
239
240 loop
241 {
242 letter = fgetc(naji_input);
243
244 if (letter == EOF)
245 endloop;
246
247 letter = naji_e2a_unicode(letter);
248
249 if (letter == '\n')
250 fprintf(naji_output, "\n<br>");
251 else
252 fprintf(naji_output, "&#%i;", letter);
253 }
254
255 najinclose();
256 najoutclose();
257 }
258
259
260
261
elite_char_fprint(char a,FILE * out)262 void elite_char_fprint(char a, FILE *out)
263 {
264 char b = a;
265
266 naji_tolower(b);
267
268
269 if (b == 'a') { fprintf(out, "4"); return; }
270 if (b == 'b') { fprintf(out, "8"); return; }
271 if (b == 'e') { fprintf(out, "3"); return; }
272 if (b == 'i') { fprintf(out, "1"); return; }
273 if (b == 'o') { fprintf(out, "0"); return; }
274 if (b == 's') { fprintf(out, "5"); return; }
275 if (b == 't') { fprintf(out, "7"); return; }
276 if (b == 'd') { fprintf(out, "|>"); return; }
277 if (b == 'c') { fprintf(out, "<"); return; }
278 if (b == 'k') { fprintf(out, "|<"); return; }
279 if (b == 'm') { fprintf(out, "/\\/\\"); return; }
280 if (b == 'v') { fprintf(out, "\\/"); return; }
281 if (b == 'w') { fprintf(out, "\\/\\/"); return; }
282 if (b == 'h') { fprintf(out, "|-|"); return; }
283 if (b == 'n') { fprintf(out, "|\\|"); return; }
284 if (b == 'x') { fprintf(out, "><"); return; }
285 if (b == 'u') { fprintf(out, "|_|"); return; }
286 if (b == 'l') { fprintf(out, "|_"); return; }
287 if (b == 'j') { fprintf(out, "_|"); return; }
288
289 fprintf(out, "%c", a);
290 }
291
292
elite_char_print(char a)293 void elite_char_print(char a)
294 {
295 elite_char_fprint(a, stdout);
296 }
297
298
leetstr(char * string)299 void leetstr(char *string)
300 {
301 int i;
302
303 for (i=0; string[i] != 0; i++)
304 elite_char_print(string[i]);
305
306 }
307
308
leetfile(char * namein,char * nameout)309 void leetfile(char *namein, char *nameout)
310 {
311 int a;
312
313 najin(namein);
314 najout(nameout);
315
316 loop
317 {
318 a = fgetc(naji_input);
319
320 if (a == EOF)
321 endloop;
322
323 elite_char_fprint((char)a, naji_output);
324 }
325
326 najinclose();
327 najoutclose();
328 }
329