Revision: 1102 Author: john.boyer@xxxxxxxxxxxxxxxxx Date: Thu Jan 16 15:18:36 2014 UTC Log: adding emphasis types and code http://code.google.com/p/liblouis/source/detail?r=1102 Added: /branches/emphasis-dev/liblouis/compileemphasis.x /branches/emphasis-dev/liblouis/doUniversalEmphasis.x /branches/emphasis-dev/liblouis/gettoken.p Modified: /branches/emphasis-dev/liblouis/compileTranslationTable.c /branches/emphasis-dev/liblouis/liblouis.h.in ======================================= --- /dev/null+++ /branches/emphasis-dev/liblouis/compileemphasis.x Thu Jan 16 15:18:36 2014 UTC
@@ -0,0 +1,23 @@ +static int +compileEmphasisOpcode (FileInfo * nested, TranslationTableOpcode opcode) +{ + /*Compile the operands of an emphasis opcode */ + /* Note that much of the code for multipass opcodes is repurposed here*/ + TranslationTableOffset ruleOffset = 0; + TranslationTableRule *rule = NULL; + int k; + int kk = 0; + passRuleChars.length = 0; + passNested = nested; + passOpcode = opcode; +/* passHoldString and passLine are static variables declared + * previously.*/ + passLinepos = 0; + passHoldString.length = 0; + for (k = nested->linepos; k < nested->linelen; k++) + passHoldString.chars[passHoldString.length++] = nested->line[k]; + parseChars (passNested, &passLine, &passHoldString); + if (!addRule (passNested, opcode, &passRuleChars, &passRuleDots, 0, 0)) + return 0; + return 1; +} ======================================= --- /dev/null+++ /branches/emphasis-dev/liblouis/doUniversalEmphasis.x Thu Jan 16 15:18:36 2014 UTC
@@ -0,0 +1,3 @@ +{ +} + ======================================= --- /dev/null +++ /branches/emphasis-dev/liblouis/gettoken.p Thu Jan 16 15:18:36 2014 UTC @@ -0,0 +1,108 @@ +static pass_Codes +emphGetToken () +{ + while (passLinepos < passLine.length) + { + passPrevLinepos = passLinepos; + switch (passLine.chars[passLinepos]) + { + case 'a': + if (passHaveKeyword ("ttr")) + return pass_attributes; + passGetName (); + return pass_nameFound; + case 'b': + if (passHaveKeyword ("ack")) + return pass_lookback; + if (passHaveKeyword ("ool")) + return pass_boolean; + passGetName (); + return pass_nameFound; + case 'c': + if (passHaveKeyword ("lass")) + return pass_class; + passGetName (); + return pass_nameFound; + case 'd': + if (passHaveKeyword ("ef")) + return pass_define; + passGetName (); + return pass_nameFound; + case 'e': + if (passHaveKeyword ("mph")) + return pass_emphasis; + passGetName (); + return pass_nameFound; + case 'f': + if (passHaveKeyword ("ind")) + return pass_search; + if (passHaveKeyword ("irst")) + return pass_first; + passGetName (); + return pass_nameFound; + case 'g': + if (passHaveKeyword ("roup")) + return pass_group; + passGetName (); + return pass_nameFound; + case 'i': + if (passHaveKeyword ("f")) + return pass_if; + passGetName (); + return pass_nameFound; + case 'l': + if (passHaveKeyword ("ast")) + return pass_last; + passGetName (); + return pass_nameFound; + case 'm': + if (passHaveKeyword ("ark")) + return pass_mark; + passGetName (); + return pass_nameFound; + case 'r': + if (passHaveKeyword ("epgroup")) + return pass_repGroup; + if (passHaveKeyword ("epcopy")) + return pass_copy; + if (passHaveKeyword ("epomit")) + return pass_omit; + if (passHaveKeyword ("ep")) + return pass_replace; + passGetName (); + return pass_nameFound; + case 's': + if (passHaveKeyword ("cript")) + return pass_script; + if (passHaveKeyword ("wap")) + return pass_swap; + passGetName (); + return pass_nameFound; + case 't': + if (passHaveKeyword ("hen")) + return pass_then; + passGetName (); + return pass_nameFound; + default: + if (passLine.chars[passLinepos] <= 32) + { + passLinepos++; + break; + } + if (passLine.chars[passLinepos] >= '0' + && passLine.chars[passLinepos] <= '9') + { + passGetNumber (); + return pass_numberFound; + } + else + { + if (!passGetName ()) + return pass_invalidToken; + else + return pass_nameFound; + } + } + } + return pass_noMoreTokens; +} =======================================--- /branches/emphasis-dev/liblouis/compileTranslationTable.c Mon Aug 5 12:09:31 2013 UTC +++ /branches/emphasis-dev/liblouis/compileTranslationTable.c Thu Jan 16 15:18:36 2014 UTC
@@ -2206,7 +2206,7 @@ } static int -passIsKeyword (const char *token) +passHaveKeyword (const char *token) { int k; int length = strlen (token); @@ -2362,79 +2362,79 @@ } return pass_invalidToken; case 'a': - if (passIsKeyword ("ttr")) + if (passHaveKeyword ("ttr")) return pass_attributes; passGetName (); return pass_nameFound; case 'b': - if (passIsKeyword ("ack")) + if (passHaveKeyword ("ack")) return pass_lookback; - if (passIsKeyword ("ool")) + if (passHaveKeyword ("ool")) return pass_boolean; passGetName (); return pass_nameFound; case 'c': - if (passIsKeyword ("lass")) + if (passHaveKeyword ("lass")) return pass_class; passGetName (); return pass_nameFound; case 'd': - if (passIsKeyword ("ef")) + if (passHaveKeyword ("ef")) return pass_define; passGetName (); return pass_nameFound; case 'e': - if (passIsKeyword ("mph")) + if (passHaveKeyword ("mph")) return pass_emphasis; passGetName (); return pass_nameFound; case 'f': - if (passIsKeyword ("ind")) + if (passHaveKeyword ("ind")) return pass_search; - if (passIsKeyword ("irst")) + if (passHaveKeyword ("irst")) return pass_first; passGetName (); return pass_nameFound; case 'g': - if (passIsKeyword ("roup")) + if (passHaveKeyword ("roup")) return pass_group; passGetName (); return pass_nameFound; case 'i': - if (passIsKeyword ("f")) + if (passHaveKeyword ("f")) return pass_if; passGetName (); return pass_nameFound; case 'l': - if (passIsKeyword ("ast")) + if (passHaveKeyword ("ast")) return pass_last; passGetName (); return pass_nameFound; case 'm': - if (passIsKeyword ("ark")) + if (passHaveKeyword ("ark")) return pass_mark; passGetName (); return pass_nameFound; case 'r': - if (passIsKeyword ("epgroup")) + if (passHaveKeyword ("epgroup")) return pass_repGroup; - if (passIsKeyword ("epcopy")) + if (passHaveKeyword ("epcopy")) return pass_copy; - if (passIsKeyword ("epomit")) + if (passHaveKeyword ("epomit")) return pass_omit; - if (passIsKeyword ("ep")) + if (passHaveKeyword ("ep")) return pass_replace; passGetName (); return pass_nameFound; case 's': - if (passIsKeyword ("cript")) + if (passHaveKeyword ("cript")) return pass_script; - if (passIsKeyword ("wap")) + if (passHaveKeyword ("wap")) return pass_swap; passGetName (); return pass_nameFound; case 't': - if (passIsKeyword ("hen")) + if (passHaveKeyword ("hen")) return pass_then; passGetName (); return pass_nameFound; =======================================--- /branches/emphasis-dev/liblouis/liblouis.h.in Wed Oct 23 15:12:24 2013 UTC +++ /branches/emphasis-dev/liblouis/liblouis.h.in Thu Jan 16 15:18:36 2014 UTC
@@ -46,7 +46,19 @@ italic = 1, underline = 2, bold = 4, - computer_braille = 8 + computer_braille = 8, + script = 16, + // trd is short for transcriber-defined + trd1 = 1<<5, + trd2 = 1<<6, + trd3 = 1<<7, + trd4 = 1<<8, + trd5 = 1<<9, + trd6 = 1<<10, + trd7 = 1<<11, + trd8 = 1<<12, + trd9 = 1<<13, + trd10 = 1<<14 } typeforms; #define comp_emph_1 italic #define comp_emph_2 underline For a description of the software, to download it and links to project pages go to http://www.abilitiessoft.com