/* trans.c - by Daniel Rice, 11/91.
   Permission is granted for any use of this code. */

#include <stdio.h>

/* Extremely simpleminded filter to display Hebrew on text displays.

	trans < file will display all the Hebrew characters in file,
separated by spaces.

	trans -p < file will put underscores (_) between the Hebrew
characters, and pass through all non_Hebrew characters.  Also,
the character '#' is added at each newline to allow the translation
to be easily reversed. */

char *letter[27] = { /* Feel free to change the spellings! */
"Aleph",
"Bet",
"Gimel",
"Dalet",
"Heh",
"Vav",
"Zayin",
"Chet",
"Tet",
"Yod",
"Chaf-Sofit",
"Caf",
"Lamed",
"Mem-Sofit",
"Mem",
"Nun-Sofit",
"Nun",
"Samekh",
"`Ayin",
"Feh-Sofit",
"Peh",
"Tzade-Sofit",
"Tzade",
"Quf",
"Resh",
"Shin",
"Taf"
};


#define WIDTH 78

main (argc, argv)
char **argv;

{
	int c;
	int prev_was_letter = 0;
	int letter_count = 0;
	int print_non_letters = 0;
	char sep = ' ';
	int column = 0;

	if (argc > 1) {
		if (argv[1][0] == '-' && argv[1][1] == 'p') {
			print_non_letters = 1;
			sep = '_';
		}
	}

	while ((c = getchar()) != EOF) {
		if (c >= 0200 && c <= 0232) {
			if (prev_was_letter) {
				if (++column > WIDTH) {
					column = 0;
					putc('\n', stdout);
				}
				putc (sep, stdout);
			}
			column += strlen(letter[c - 0200]);
			if (column > WIDTH) {
				column = strlen(letter[c - 0200]);
				putc('\n', stdout);
			}
			printf ("%s", letter[c - 0200]);
			++letter_count;
			prev_was_letter = 1;
		} else if (print_non_letters) {
			if (c == '\n') {
				putchar('#');
				column = 0;
			} else {
				if (++column > WIDTH) {
					putc('\n', stdout);
					column = 0;
				}
			}
			putc (c, stdout);
			prev_was_letter = 0;
		}
	}
}
