mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-26 09:23:55 +00:00
autodetect iterate: lrec writers
This commit is contained in:
parent
565a9126fc
commit
eaca4e0466
2 changed files with 17 additions and 5 deletions
|
|
@ -26,7 +26,9 @@ typedef struct _lrec_writer_csv_state_t {
|
|||
} lrec_writer_csv_state_t;
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
static void lrec_writer_csv_process(void* pvstate, FILE* output_stream, lrec_t* prec, context_t* pctx);
|
||||
static void lrec_writer_csv_process(void* pvstate, FILE* output_stream, lrec_t* prec, char* ors);
|
||||
static void lrec_writer_csv_process_auto_ors(void* pvstate, FILE* output_stream, lrec_t* prec, context_t* pctx);
|
||||
static void lrec_writer_csv_process_nonauto_ors(void* pvstate, FILE* output_stream, lrec_t* prec, context_t* pctx);
|
||||
static void lrec_writer_csv_free(lrec_writer_t* pwriter, context_t* pctx);
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
|
@ -55,7 +57,9 @@ lrec_writer_t* lrec_writer_csv_alloc(char* ors, char* ofs, quoting_t oquoting, i
|
|||
pstate->plast_header_output = NULL;
|
||||
|
||||
plrec_writer->pvstate = (void*)pstate;
|
||||
plrec_writer->pprocess_func = lrec_writer_csv_process;
|
||||
plrec_writer->pprocess_func = streq(ors, "auto")
|
||||
? lrec_writer_csv_process_auto_ors
|
||||
: lrec_writer_csv_process_nonauto_ors;
|
||||
plrec_writer->pfree_func = lrec_writer_csv_free;
|
||||
|
||||
return plrec_writer;
|
||||
|
|
@ -69,11 +73,19 @@ static void lrec_writer_csv_free(lrec_writer_t* pwriter, context_t* pctx) {
|
|||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
static void lrec_writer_csv_process(void* pvstate, FILE* output_stream, lrec_t* prec, context_t* pctx) {
|
||||
static void lrec_writer_csv_process_auto_ors(void* pvstate, FILE* output_stream, lrec_t* prec, context_t* pctx) {
|
||||
lrec_writer_csv_process(pvstate, output_stream, prec, pctx->auto_irs);
|
||||
}
|
||||
|
||||
static void lrec_writer_csv_process_nonauto_ors(void* pvstate, FILE* output_stream, lrec_t* prec, context_t* pctx) {
|
||||
lrec_writer_csv_state_t* pstate = pvstate;
|
||||
lrec_writer_csv_process(pvstate, output_stream, prec, pstate->ors);
|
||||
}
|
||||
|
||||
static void lrec_writer_csv_process(void* pvstate, FILE* output_stream, lrec_t* prec, char* ors) {
|
||||
if (prec == NULL)
|
||||
return;
|
||||
lrec_writer_csv_state_t* pstate = pvstate;
|
||||
char *ors = pstate->ors;
|
||||
char *ofs = pstate->ofs;
|
||||
|
||||
if (pstate->plast_header_output != NULL) {
|
||||
|
|
|
|||
|
|
@ -61,8 +61,8 @@ AUTOTERM
|
|||
- writer API needs pctx
|
||||
- use pctx->autoirs on first record emitted
|
||||
|
||||
? output/lrec_writer_csv.c
|
||||
? output/lrec_writer_json.c
|
||||
k output/lrec_writer_csv.c
|
||||
k output/lrec_writer_csvlite.c
|
||||
k output/lrec_writer_dkvp.c
|
||||
k output/lrec_writer_markdown.c
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue