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