add the -a option

This commit is contained in:
Vlasta Vesely 2021-04-16 10:23:45 +02:00
parent b2a405cd93
commit 5f642e1cbd
3 changed files with 29 additions and 4 deletions

22
main.c
View file

@ -7,6 +7,7 @@
#define FLAG_REVERSE 1 << 0 #define FLAG_REVERSE 1 << 0
#define FLAG_VELTHUIS 1 << 1 #define FLAG_VELTHUIS 1 << 1
#define FLAG_CZECH 1 << 2 #define FLAG_CZECH 1 << 2
#define FLAG_ASCII 1 << 3
static const char *usage_str = static const char *usage_str =
PROGNAME ", a helper for Sanskrit transliteration.\n" PROGNAME ", a helper for Sanskrit transliteration.\n"
@ -34,13 +35,14 @@ static const char *usage_str =
"\n" "\n"
" For more information see the iast(1) manual page.\n"; " For more information see the iast(1) manual page.\n";
static const char *short_opts = "f:rechv"; static const char *short_opts = "f:reachv";
static const struct option long_opts[] = { static const struct option long_opts[] = {
{"file", required_argument, 0, 'f'}, {"file", required_argument, 0, 'f'},
{"reverse", no_argument, 0, 'r'}, {"reverse", no_argument, 0, 'r'},
{"encode", no_argument, 0, 'e'}, {"encode", no_argument, 0, 'e'},
{"velthuis", no_argument, 0, 'e'}, {"velthuis", no_argument, 0, 'e'},
{"ascii", no_argument, 0, 'a'},
{"czech", no_argument, 0, 'c'}, {"czech", no_argument, 0, 'c'},
{"help", no_argument, 0, 'h'}, {"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'v'}, {"version", no_argument, 0, 'v'},
@ -70,17 +72,30 @@ static void error(const char *msg, ...)
static int process_input(const char *input, char **out, unsigned int flags) static int process_input(const char *input, char **out, unsigned int flags)
{ {
char *tmp = NULL;
int ret;
if (flags & FLAG_REVERSE) if (flags & FLAG_REVERSE)
return transliterate_latin_to_devanagari(input, out); return transliterate_latin_to_devanagari(input, out);
if (flags & FLAG_VELTHUIS) if (flags & FLAG_VELTHUIS)
return encode_velthuis_to_iast_punctation(input, out); return encode_velthuis_to_iast(input, out);
if (flags & FLAG_CZECH) if (flags & FLAG_CZECH)
return transcript_devanagari_to_czech(input, out); return transcript_devanagari_to_czech(input, out);
if (flags & FLAG_ASCII) {
ret = transliterate_devanagari_to_latin(input, &tmp);
if (ret != 0)
return ret;
ret = encode_iast_to_velthuis(tmp, out);
free(tmp);
return ret;
} else {
return transliterate_devanagari_to_latin(input, out); return transliterate_devanagari_to_latin(input, out);
} }
}
static int process_string(const char *input, unsigned int flags) static int process_string(const char *input, unsigned int flags)
{ {
@ -181,6 +196,9 @@ int main(int argc, const char **argv)
case 'e': case 'e':
flags |= FLAG_VELTHUIS; flags |= FLAG_VELTHUIS;
break; break;
case 'a':
flags |= FLAG_ASCII;
break;
case 'c': case 'c':
flags |= FLAG_CZECH; flags |= FLAG_CZECH;
break; break;

View file

@ -103,6 +103,12 @@ START_TEST(test_velthuis)
} }
END_TEST END_TEST
START_TEST(test_ascii)
{
test_output("./iast \"अग्निमीळे पुरोहितं\" -a", "agnimii.le purohita.m\n");
}
END_TEST
START_TEST(test_version) START_TEST(test_version)
{ {
test_output("./iast -v", "iast v2.0.0\n"); test_output("./iast -v", "iast v2.0.0\n");
@ -139,6 +145,7 @@ void register_integration_tests(TCase *test_case)
tcase_add_test(test_case, test_transliterate_arguments); tcase_add_test(test_case, test_transliterate_arguments);
tcase_add_test(test_case, test_transcript); tcase_add_test(test_case, test_transcript);
tcase_add_test(test_case, test_velthuis); tcase_add_test(test_case, test_velthuis);
tcase_add_test(test_case, test_ascii);
tcase_add_test(test_case, test_version); tcase_add_test(test_case, test_version);
tcase_add_test(test_case, test_usage); tcase_add_test(test_case, test_usage);
tcase_add_test(test_case, test_errors); tcase_add_test(test_case, test_errors);

View file

@ -1,4 +1,4 @@
ॐ अग्निमीळे पुरोहितं यज्ञस्य॓ देवमृत्विजम् । ॐ अग्निमीळे पुरोहितं यज्ञस्य॓ देवमृत्विजम् ।
होता॑रं रत्नधात॑मम् ॥१॥ होता॑रं रत्नधात॑मम् ॥१॥
अग्निः पूर्वेभिरृषिभिरीड्यो नूतनैरुत । अग्निः पूर्वेभिरृषिभिरीड्यो नूतनैरुत ।