#help_index "DolDoc/Conversion" U0 TXTPutS(CDoc *doc, U8 *st, I64 *_col) { U8 *ch, *ptr; while (ch = *st++) { switch (ch) { case '\t': do { DocPutKey(doc, CH_SPACE, 0); *_col = *_col + 1; } while (*_col & 7); break; start: case 'pi': ptr = "pi"; break; case 'theta': ptr = "theta"; break; case 'phi': ptr = "phi"; break; case 'omega': ptr = "omega"; break; case 'inf': ptr = "inf"; break; case 'u': ptr = "u"; break; end: DocPrint(doc, ptr); *_col = *_col + StrLen(ptr); break; default: if (CH_SPACE <= ch < 0x7F || ch == '\n') DocPutKey(doc, ch, 0); else DocPrint(doc, "."); *_col = *_col + 1; } } } public CDoc *Doc2TXT(CDoc *doc_in) {//Convert DolDoc doc to plain text. CDocEntry *doc_e, *doc_e2; I64 y, col; CDoc *doc_out = DocNew; Bool unlock_doc_in = DocLock(doc_in), no_bwd, line_has_html_code = FALSE; DocRecalc(doc_in); doc_out->flags |= DOCF_PLAIN_TEXT | DOCF_NO_CURSOR; doc_e = doc_in->head.next; col = doc_e->x; y = doc_e->y; while (doc_e != doc_in) { if (!(doc_e->de_flags & DOCEF_SKIP)) { while (y < doc_e->y) { TXTPutS(doc_out, "\n", &col); y++; col = 0; line_has_html_code = FALSE; } if (doc_e->type_u8 == DOCT_HTML_CODE) line_has_html_code = TRUE; no_bwd = TRUE; doc_e2 = doc_e->next; while (doc_e2 != doc_in && doc_e2->y == doc_e->y) { if (doc_e2->x < doc_e->x) { no_bwd = FALSE; break; } doc_e2 = doc_e2->next; } if (no_bwd && !(doc_e->type_u8 == DOCT_NEW_LINE && line_has_html_code)) while (col < doc_e->x) TXTPutS(doc_out, " ", &col); switch (doc_e->type_u8) { case DOCT_TEXT: TXTPutS(doc_out, doc_e->tag,&col); break; case DOCT_TAB: TXTPutS(doc_out, "\t", &col); break; case DOCT_HTML_CODE: break; case DOCT_SPRITE: break; default: if (doc_e->de_flags & DOCEF_TAG) TXTPutS(doc_out, doc_e->tag, &col); } } doc_e = doc_e->next; } while (y < doc_e->y) { TXTPutS(doc_out, "\n", &col); y++; col = 0; } doc_out->cur_entry = &doc_out->head; DocRecalc(doc_out); if (unlock_doc_in) DocUnlock(doc_in); return doc_out; } #help_index "Cmd Line (Typically);DolDoc/Conversion;DolDoc/Cmd Line (Typically)" public U0 ToTXT(U8 *_in_name, U8 *_out_name=NULL, I64 width=70) {//Convert DolDocfile to plain text. U8 *in_name, *out_name; CDoc *doc_in, *doc_out; SettingsPush; //See SettingsPush WinHorz(0, width - 1); //Sets doc width for word wrap. in_name = ExtDefault(_in_name, ".DD"); if (_out_name) out_name = ExtDefault(_out_name, "TXT"); else out_name = ExtChange(_in_name, "TXT"); doc_in = DocRead(in_name); doc_out = Doc2TXT(doc_in); StrCopy(&doc_out->filename.name, out_name); SettingsPop; DocWrite(doc_out); DocDel(doc_in); DocDel(doc_out); Free(in_name); Free(out_name); }