(svn r16122) -Change: add more misc information about the behaviour of commands to strgen's -export-commands.

This commit is contained in:
rubidium 2009-04-23 13:32:13 +00:00
parent 3dbcc66cb1
commit 85ca163be2
1 changed files with 26 additions and 2 deletions

View File

@ -1198,9 +1198,33 @@ int CDECL main(int argc, char *argv[])
}
if (strcmp(argv[1], "-export-commands") == 0) {
printf("args\tcommand\treplacement\n");
printf("args\tflags\tcommand\treplacement\n");
for (const CmdStruct *cs = _cmd_structs; cs < endof(_cmd_structs); cs++) {
printf("%i\t\"%s\"\t\"%s\"\n", cs->consumes, cs->cmd, strstr(cs->cmd, "STRING") ? "STRING" : cs->cmd);
char flags;
switch (cs->value) {
case 0x200E: case 0x200F: // Implicit BIDI controls
case 0x202A: case 0x202B: case 0x202C: case 0x202D: case 0x202E: // Explicit BIDI controls
case 0xA0: // Non breaking space
case '\n': // Newlines may be added too
case '{': // This special
/* This command may be in the translation when it is not in base */
flags = 'i';
break;
default:
if (cs->proc == EmitSetX) {
flags = '1'; // Command needs one parameter
} else if (cs->proc == EmitSetXY) {
flags = '2'; // Command needs two parameters
} else if (cs->proc == EmitGender) {
flags = 'g'; // Command needs number of parameters defined by plural value
} else if (cs->proc == EmitPlural) {
flags = 'p'; // Command needs number of parameters defined by number of cases
} else {
flags = '0'; // Command needs no parameters
}
}
printf("%i\t%c\t\"%s\"\t\"%s\"\n", cs->consumes, flags, cs->cmd, strstr(cs->cmd, "STRING") ? "STRING" : cs->cmd);
}
return 0;
}