Note: This feature has no tests.master
@@ -20,6 +20,7 @@ | |||
#include "config.h" | |||
#include <ctype.h> | |||
#include <errno.h> | |||
#include <stdint.h> | |||
#include <stdio.h> | |||
@@ -119,6 +120,29 @@ void LoadLanguageOptions(Translator *translator, int key, char *keyValue ) { | |||
} | |||
break; | |||
} | |||
case V_NUMBERS: { | |||
// if (CheckTranslator(translator, langopts_tab, key) != 0) | |||
break; | |||
// expect a list of numbers | |||
while (*keyValue != 0) { | |||
while (isspace(*keyValue)) keyValue++; | |||
if ((n = atoi(keyValue)) > 0) { | |||
keyValue++; | |||
if (n < 32) { | |||
translator->langopts.numbers |= (1 << n); | |||
} else { | |||
if (n < 64) | |||
translator->langopts.numbers2 |= (1 << (n-32)); | |||
else | |||
fprintf(stderr, "numbers: Bad option number %d\n", n); } | |||
} | |||
while (isalnum(*keyValue)) keyValue++; | |||
} | |||
ProcessLanguageOptions(&(translator->langopts)); | |||
break; | |||
} | |||
case V_LOWERCASE_SENTENCE: { | |||
if (CheckTranslator(translator, langopts_tab, key) != 0) | |||
break; |
@@ -808,7 +808,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.param[LOPT_IT_DOUBLING] = 1; | |||
tr->langopts.long_stop = 130; | |||
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2 | NUM_ORDINAL_DOT; | |||
// tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2 | NUM_ORDINAL_DOT; | |||
SetLetterVowel(tr, 'y'); | |||
tr->langopts.spelling_stress = 1; | |||
tr->langopts.intonation_group = 3; // less intonation, don't raise pitch at comma |
@@ -124,6 +124,7 @@ const MNEM_TAB langopts_tab[] = { | |||
{ "dictrules", V_DICTRULES }, | |||
{ "intonation", V_INTONATION }, | |||
{ "lowercaseSentence", V_LOWERCASE_SENTENCE }, | |||
{ "numbers", V_NUMBERS }, | |||
{ "stressAdd", V_STRESSADD }, | |||
{ "stressAmp", V_STRESSAMP }, | |||
{ "stressLength", V_STRESSLENGTH }, | |||
@@ -157,7 +158,6 @@ static const MNEM_TAB keyword_tab[] = { | |||
{ "voicing", V_VOICING }, | |||
{ "breath", V_BREATH }, | |||
{ "breathw", V_BREATHW }, | |||
{ "numbers", V_NUMBERS }, | |||
{ "mbrola", V_MBROLA }, | |||
{ "consonants", V_CONSONANTS }, | |||
{ "klatt", V_KLATT }, | |||
@@ -706,28 +706,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
case V_NUMBERS: | |||
if (CheckTranslator(translator, keyword_tab, key) != 0) | |||
break; | |||
// expect a list of numbers | |||
while (*p != 0) { | |||
while (isspace(*p)) p++; | |||
if ((n = atoi(p)) > 0) { | |||
p++; | |||
if (n < 32) { | |||
translator->langopts.numbers |= (1 << n); | |||
} else { | |||
if (n < 64) | |||
translator->langopts.numbers2 |= (1 << (n-32)); | |||
else | |||
fprintf(stderr, "numbers: Bad option number %d\n", n); } | |||
} | |||
while (isalnum(*p)) p++; | |||
} | |||
ProcessLanguageOptions(&(translator->langopts)); | |||
break; | |||
case V_REPLACE: | |||
if (phonemes_set == false) { | |||
// must set up a phoneme table before we can lookup phoneme mnemonics |