diff --git a/main.c b/main.c index 1463e8c..4a69c9f 100644 --- a/main.c +++ b/main.c @@ -7,6 +7,7 @@ #define FLAG_REVERSE 1 << 0 #define FLAG_VELTHUIS 1 << 1 #define FLAG_CZECH 1 << 2 +#define FLAG_ASCII 1 << 3 static const char *usage_str = PROGNAME ", a helper for Sanskrit transliteration.\n" @@ -34,13 +35,14 @@ static const char *usage_str = "\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[] = { {"file", required_argument, 0, 'f'}, {"reverse", no_argument, 0, 'r'}, {"encode", no_argument, 0, 'e'}, {"velthuis", no_argument, 0, 'e'}, + {"ascii", no_argument, 0, 'a'}, {"czech", no_argument, 0, 'c'}, {"help", no_argument, 0, 'h'}, {"version", no_argument, 0, 'v'}, @@ -70,16 +72,29 @@ static void error(const char *msg, ...) static int process_input(const char *input, char **out, unsigned int flags) { + char *tmp = NULL; + int ret; + if (flags & FLAG_REVERSE) return transliterate_latin_to_devanagari(input, out); if (flags & FLAG_VELTHUIS) - return encode_velthuis_to_iast_punctation(input, out); + return encode_velthuis_to_iast(input, out); if (flags & FLAG_CZECH) return transcript_devanagari_to_czech(input, out); - return transliterate_devanagari_to_latin(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); + } } static int process_string(const char *input, unsigned int flags) @@ -181,6 +196,9 @@ int main(int argc, const char **argv) case 'e': flags |= FLAG_VELTHUIS; break; + case 'a': + flags |= FLAG_ASCII; + break; case 'c': flags |= FLAG_CZECH; break; diff --git a/tests/integration.c b/tests/integration.c index 3e43707..1f30161 100644 --- a/tests/integration.c +++ b/tests/integration.c @@ -103,6 +103,12 @@ START_TEST(test_velthuis) } END_TEST +START_TEST(test_ascii) +{ + test_output("./iast \"अग्निमीळे पुरोहितं\" -a", "agnimii.le purohita.m\n"); +} +END_TEST + START_TEST(test_version) { 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_transcript); 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_usage); tcase_add_test(test_case, test_errors); diff --git a/tests/texts/rg-01001.txt b/tests/texts/rg-01001.txt index 331a9ec..ebd523e 100644 --- a/tests/texts/rg-01001.txt +++ b/tests/texts/rg-01001.txt @@ -1,4 +1,4 @@ -ॐ अग्निमी॑ळे पुरोहि॑तं यज्ञस्य॓ देवमृत्विज॑म् । +ॐ अग्निमीळे पुरोहितं यज्ञस्य॓ देवमृत्विजम् । होता॑रं रत्नधात॑मम् ॥१॥ अग्निः पूर्वेभिरृषिभिरीड्यो नूतनैरुत ।