Example #1
0
StringArray *StringArrayStripOutColumn(char *in, char *stop_before,
                                       int startpos, int stoppos, int tabsize)
{
  int		pos, i;
  char		value[PHRASELEN];
  StringArray	*sa;
  sa = StringArrayCreate();
  pos = 0;
  while (stop_before == NULL || in < stop_before) {
    if (*in == TERM) break;
    if (*in == TAB) {
      pos = StringTab(pos, tabsize);
      in++;
    } else if (*in == NEWLINE) {
      pos = 0;
      in++;
    } else if (pos == startpos) {
      for (i = 0; pos <= stoppos; i++, in++) {
        if (*in == NEWLINE) break;
        if (*in == TAB) {
          value[i] = SPACE;
          pos = StringTab(pos, tabsize);
        } else {
          value[i] = *in;
          pos++;
        }
      }
      value[i] = TERM;
      StringElimTrailingBlanks(value);
      StringElimLeadingBlanks(value);
      StringArrayAddCopy(sa, value, 0);
      pos++;
    } else {
      pos++;
      in++;
    }
  }
  return(sa);
}
Example #2
0
void TranslationEnd(Channel *ch, int eoschar, int tgtlang, Discourse *dc)
{
  int			save_lang;
  StringArray	*sa;
  PNode			*p, *pn;
  save_lang = DC(dc).lang;
  DC(dc).lang = tgtlang;
  ch->translations = PNodeFlattenAltern(ch->translations);
  sa = StringArrayCreate();
  for (p = ch->translations; p; p = p->next_altern) {
    pn = TransformGen(p, dc);
    PNodePrintStringArrayAdd(sa, pn, eoschar, dc);
  }
  fputc(NEWLINE, TranslateStream);
  StreamSep(TranslateStream);
  StringArrayPrint(Log, sa, 0, 0);
  StringArrayPrint(TranslateStream, sa, 0, 0);
  fflush(TranslateStream);
  StringArrayFreeCopy(sa);
  ch->translations = NULL;	/* todo: Freeing. */
  DC(dc).lang = save_lang;
}