main: add '-c' option

This commit is contained in:
Vlasta Vesely 2018-04-28 14:03:30 +02:00
parent 7170066e69
commit 9571ee9871
2 changed files with 38 additions and 3 deletions

30
main.c
View file

@ -6,15 +6,37 @@
#include "transliteration.h" #include "transliteration.h"
#include "iast.h" #include "iast.h"
#include "iast-czech.h"
#define FLAG_CZECH 1 << 0
int main(int argc, const char **argv) int main(int argc, const char **argv)
{ {
struct transliteration_context *context; struct transliteration_context *context;
unsigned int n, length = 0; unsigned int n, length = 0;
int retval = 0; int i, retval = 0;
char buffer[6]; char buffer[6];
char *text = malloc(0); char *text = malloc(0);
char *out; char *out;
const char *arg;
unsigned int flags = 0;
for (i = 0; i < argc; i++) {
arg = argv[i];
if (*arg == '-') {
switch (arg[1]) {
case 'c':
flags |= FLAG_CZECH;
continue;
}
fprintf(stderr, "error: unknown option '%s'\n", arg);
exit(1);
}
}
while ((n = read(STDIN_FILENO, buffer, sizeof(buffer))) > 0) { while ((n = read(STDIN_FILENO, buffer, sizeof(buffer))) > 0) {
text = realloc(text, length + n + 1); text = realloc(text, length + n + 1);
@ -28,7 +50,11 @@ int main(int argc, const char **argv)
text[length] = '\0'; text[length] = '\0';
context = transliteration_context_iast_alloc(); if (flags & FLAG_CZECH) {
context = transliteration_context_iast_czech_alloc();
} else {
context = transliteration_context_iast_alloc();
}
out = transliterate_devanagari_to_latin(text, context); out = transliterate_devanagari_to_latin(text, context);
printf("%s\n", out); printf("%s\n", out);

11
test.sh
View file

@ -3,7 +3,7 @@ set -e
test_word() test_word()
{ {
transliterated=$(echo -n "$1" | ./main) transliterated=$(echo -n "$1" | ./main $3)
expected="$2" expected="$2"
if test "x$transliterated" = "x$expected" if test "x$transliterated" = "x$expected"
@ -14,6 +14,7 @@ test_word()
fi fi
} }
echo "Transliteration to IAST"
test_word "संस्कृतम्" "saṃskṛtam" test_word "संस्कृतम्" "saṃskṛtam"
test_word "आर्यावर्त" "āryāvarta" test_word "आर्यावर्त" "āryāvarta"
test_word "तन्त्रशास्त्रम्" "tantraśāstram" test_word "तन्त्रशास्त्रम्" "tantraśāstram"
@ -25,3 +26,11 @@ test_word "देवनागरी" "devanāgarī"
test_word "योगः" "yogaḥ" test_word "योगः" "yogaḥ"
test_word "भगवद्गीता" "bhagavadgītā" test_word "भगवद्गीता" "bhagavadgītā"
test_word "सम्भोग" "sambhoga" test_word "सम्भोग" "sambhoga"
echo
echo "Transliteration to czech"
test_word "तन्त्रशास्त्रम्" "tantrašástra" -c
test_word "सांख्य" "sánkhja" -c
test_word "महाभारतम्" "mahábhárata" -c
test_word "योगः" "jóga" -c
test_word "भगवद्गीता" "bhagavadgíta" -c