main.c: use the harvard-kyoto scheme
This commit is contained in:
parent
5252ae73e1
commit
232a0f85b3
2 changed files with 43 additions and 7 deletions
27
main.c
27
main.c
|
@ -3,6 +3,7 @@
|
||||||
#include "czech.h"
|
#include "czech.h"
|
||||||
#include "hindi.h"
|
#include "hindi.h"
|
||||||
#include "velthuis.h"
|
#include "velthuis.h"
|
||||||
|
#include "harvard-kyoto.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#define FLAG_REVERSE 1 << 0
|
#define FLAG_REVERSE 1 << 0
|
||||||
|
@ -11,6 +12,7 @@
|
||||||
#define FLAG_HINDI 1 << 3
|
#define FLAG_HINDI 1 << 3
|
||||||
#define FLAG_ASCII 1 << 4
|
#define FLAG_ASCII 1 << 4
|
||||||
#define FLAG_DEVANAGARI 1 << 5
|
#define FLAG_DEVANAGARI 1 << 5
|
||||||
|
#define FLAG_HARVARD 1 << 6
|
||||||
|
|
||||||
static const char *usage_str =
|
static const char *usage_str =
|
||||||
PROGNAME ", a helper for Sanskrit transliteration.\n"
|
PROGNAME ", a helper for Sanskrit transliteration.\n"
|
||||||
|
@ -23,6 +25,7 @@ static const char *usage_str =
|
||||||
" -o, --output the output file (instead of standard input)\n"
|
" -o, --output the output file (instead of standard input)\n"
|
||||||
" -r, --reverse reverse transliteration (from Latin to Devanagari)\n"
|
" -r, --reverse reverse transliteration (from Latin to Devanagari)\n"
|
||||||
" -e, --encode convert an ASCII text to IAST using the Velthuis scheme\n"
|
" -e, --encode convert an ASCII text to IAST using the Velthuis scheme\n"
|
||||||
|
" -k, --harvard convert an ASCII text to IAST using the Harvard-Kyoto scheme\n"
|
||||||
" -a, --ascii convert a Devanagari text to Velthuis text rather than to IAST\n"
|
" -a, --ascii convert a Devanagari text to Velthuis text rather than to IAST\n"
|
||||||
" -d, --devanagari when encoding, output a Devanagari text rather than IAST\n"
|
" -d, --devanagari when encoding, output a Devanagari text rather than IAST\n"
|
||||||
" -c, --czech transcript Devanagari to Czech language (experimental)\n"
|
" -c, --czech transcript Devanagari to Czech language (experimental)\n"
|
||||||
|
@ -42,7 +45,7 @@ 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:o:readcHhv";
|
static const char *short_opts = "f:o:rekadcHhv";
|
||||||
|
|
||||||
static const struct option long_opts[] = {
|
static const struct option long_opts[] = {
|
||||||
{"file", required_argument, 0, 'f'},
|
{"file", required_argument, 0, 'f'},
|
||||||
|
@ -50,6 +53,7 @@ static const struct option long_opts[] = {
|
||||||
{"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'},
|
||||||
|
{"harvard", no_argument, 0, 'k'},
|
||||||
{"ascii", no_argument, 0, 'a'},
|
{"ascii", no_argument, 0, 'a'},
|
||||||
{"devanagari", no_argument, 0, 'd'},
|
{"devanagari", no_argument, 0, 'd'},
|
||||||
{"czech", no_argument, 0, 'c'},
|
{"czech", no_argument, 0, 'c'},
|
||||||
|
@ -98,6 +102,21 @@ static int velthuis_encode(const char *in, char **out, unsigned int flags)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int harvard_encode(const char *in, char **out, unsigned int flags)
|
||||||
|
{
|
||||||
|
char *tmp = NULL;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = encode_harvard_kyoto_to_iast(in, out);
|
||||||
|
if (flags & FLAG_DEVANAGARI) {
|
||||||
|
ret = transliterate_latin_to_devanagari(*out, &tmp);
|
||||||
|
free(*out);
|
||||||
|
*out = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int iast_transliterate(const char *in, char **out, unsigned int flags)
|
static int iast_transliterate(const char *in, char **out, unsigned int flags)
|
||||||
{
|
{
|
||||||
char *tmp = NULL;
|
char *tmp = NULL;
|
||||||
|
@ -127,6 +146,9 @@ static int process_input(const char *input, char **out, unsigned int flags)
|
||||||
if (flags & FLAG_VELTHUIS)
|
if (flags & FLAG_VELTHUIS)
|
||||||
return velthuis_encode(input, out, flags);
|
return velthuis_encode(input, out, flags);
|
||||||
|
|
||||||
|
if (flags & FLAG_HARVARD)
|
||||||
|
return harvard_encode(input, out, flags);
|
||||||
|
|
||||||
return iast_transliterate(input, out, flags);
|
return iast_transliterate(input, out, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,6 +266,9 @@ int main(int argc, const char **argv)
|
||||||
case 'e':
|
case 'e':
|
||||||
flags |= FLAG_VELTHUIS;
|
flags |= FLAG_VELTHUIS;
|
||||||
break;
|
break;
|
||||||
|
case 'k':
|
||||||
|
flags |= FLAG_HARVARD;
|
||||||
|
break;
|
||||||
case 'a':
|
case 'a':
|
||||||
flags |= FLAG_ASCII;
|
flags |= FLAG_ASCII;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -116,6 +116,16 @@ START_TEST(test_velthuis)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(test_harvard)
|
||||||
|
{
|
||||||
|
test_output("./iast \"RtaM\" -k", "ṛtaṃ\n");
|
||||||
|
test_output("./iast \"RtaM\" --harvard", "ṛtaṃ\n");
|
||||||
|
|
||||||
|
/* force Devanagari output */
|
||||||
|
test_output("./iast \"agnIH zatruH shatruH\" -kd", "अग्नीः शत्रुः शत्रुः\n");
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
START_TEST(test_ascii)
|
START_TEST(test_ascii)
|
||||||
{
|
{
|
||||||
test_output("./iast \"अग्निमीळे पुरोहितं\" -a", "agnimii.le purohita.m\n");
|
test_output("./iast \"अग्निमीळे पुरोहितं\" -a", "agnimii.le purohita.m\n");
|
||||||
|
@ -177,6 +187,7 @@ void register_integration_tests(TCase *test_case)
|
||||||
tcase_add_test(test_case, test_transcript_czech);
|
tcase_add_test(test_case, test_transcript_czech);
|
||||||
tcase_add_test(test_case, test_transcript_hindi);
|
tcase_add_test(test_case, test_transcript_hindi);
|
||||||
tcase_add_test(test_case, test_velthuis);
|
tcase_add_test(test_case, test_velthuis);
|
||||||
|
tcase_add_test(test_case, test_harvard);
|
||||||
tcase_add_test(test_case, test_ascii);
|
tcase_add_test(test_case, test_ascii);
|
||||||
tcase_add_test(test_case, test_file_output);
|
tcase_add_test(test_case, test_file_output);
|
||||||
tcase_add_test(test_case, test_version);
|
tcase_add_test(test_case, test_version);
|
||||||
|
|
Loading…
Add table
Reference in a new issue