mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-20 11:48:30 -06:00
configure.in | 2 lib/Makefile.am | 4 lib/stf/Makefile.am | 13 lib/stf/README | 2 lib/stf/stf-parse.c | 1414 +++++++++++++++++++++ lib/stf/stf-parse.h | 112 + src/bin/gnucash-bin.c | 1 src/import-export/Makefile.am | 4 src/import-export/csv/Makefile.am | 59 src/import-export/csv/example-file.csv | 4 src/import-export/csv/gnc-csv-gnumeric-popup.c | 194 ++ src/import-export/csv/gnc-csv-gnumeric-popup.h | 78 + src/import-export/csv/gnc-csv-import.c | 1173 +++++++++++++++++ src/import-export/csv/gnc-csv-import.h | 33 src/import-export/csv/gnc-csv-model.c | 1199 +++++++++++++++++ src/import-export/csv/gnc-csv-model.h | 122 + src/import-export/csv/gnc-csv-preview-dialog.glade | 496 +++++++ src/import-export/csv/gnc-csv2glist.c | 187 -- src/import-export/csv/gnc-csv2glist.h | 39 src/import-export/csv/gnc-plugin-csv-ui.xml | 11 src/import-export/csv/gnc-plugin-csv.c | 160 ++ src/import-export/csv/gnc-plugin-csv.h | 60 src/import-export/csv/gncmod-csv-import.c | 91 + 23 files changed, 5228 insertions(+), 230 deletions(-) git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@16561 57a11ea4-9604-0410-9ed3-97b8803252fd
113 lines
4.6 KiB
C
113 lines
4.6 KiB
C
#ifndef STF_PARSE_H
|
|
#define STF_PARSE_H
|
|
|
|
#include <glib.h>
|
|
|
|
#define SHEET_MAX_ROWS (16*16*16*16) /* 0, 1, ... */
|
|
#define SHEET_MAX_COLS (4*4*4*4) /* 0, 1, ... */
|
|
|
|
typedef enum {
|
|
PARSE_TYPE_NOTSET = 1 << 0,
|
|
PARSE_TYPE_CSV = 1 << 1,
|
|
PARSE_TYPE_FIXED = 1 << 2
|
|
} StfParseType_t;
|
|
|
|
/* Additive. */
|
|
typedef enum {
|
|
TRIM_TYPE_NEVER = 0,
|
|
TRIM_TYPE_LEFT = 1 << 0,
|
|
TRIM_TYPE_RIGHT = 2 << 1
|
|
} StfTrimType_t;
|
|
|
|
typedef struct {
|
|
StfParseType_t parsetype; /* The type of import to do */
|
|
StfTrimType_t trim_spaces; /* Trim spaces in fields? */
|
|
|
|
GSList * terminator; /* Line terminators */
|
|
char * locale;
|
|
|
|
struct {
|
|
guchar min, max;
|
|
} compiled_terminator;
|
|
|
|
/* CSV related */
|
|
struct {
|
|
GSList *str;
|
|
char *chr;
|
|
} sep;
|
|
gunichar stringindicator; /* String indicator */
|
|
gboolean indicator_2x_is_single;/* 2 quote chars form a single non-terminating quote */
|
|
gboolean duplicates; /* See two text separators as one? */
|
|
gboolean trim_seps; /* Ignore initial seps. */
|
|
|
|
/* Fixed width related */
|
|
GArray *splitpositions; /* Positions where text will be split vertically */
|
|
|
|
int rowcount; /* Number of rows parsed */
|
|
int colcount; /* Number of columns parsed */
|
|
gboolean *col_import_array; /* 0/1 array indicating */
|
|
/* which cols to import */
|
|
unsigned int col_import_array_len;
|
|
GPtrArray *formats ; /* Contains GnmFormat *s */
|
|
gboolean cols_exceeded; /* This is set to TRUE if */
|
|
/* we tried to import more than */
|
|
/* SHEET_MAX_COLS columns */
|
|
} StfParseOptions_t;
|
|
|
|
/* CREATION/DESTRUCTION of stf options struct */
|
|
|
|
StfParseOptions_t *stf_parse_options_new (void);
|
|
void stf_parse_options_free (StfParseOptions_t *parseoptions);
|
|
|
|
StfParseOptions_t *stf_parse_options_guess (char const *data);
|
|
|
|
/* MANIPULATION of stf options struct */
|
|
|
|
void stf_parse_options_set_type (StfParseOptions_t *parseoptions,
|
|
StfParseType_t const parsetype);
|
|
void stf_parse_options_clear_line_terminator (StfParseOptions_t *parseoptions);
|
|
void stf_parse_options_add_line_terminator (StfParseOptions_t *parseoptions,
|
|
char const *terminator);
|
|
void stf_parse_options_set_trim_spaces (StfParseOptions_t *parseoptions,
|
|
StfTrimType_t const trim_spaces);
|
|
void stf_parse_options_csv_set_separators (StfParseOptions_t *parseoptions,
|
|
char const *character, GSList const *string);
|
|
void stf_parse_options_csv_set_stringindicator (StfParseOptions_t *parseoptions,
|
|
gunichar const stringindicator);
|
|
void stf_parse_options_csv_set_indicator_2x_is_single (StfParseOptions_t *parseoptions,
|
|
gboolean const indic_2x);
|
|
void stf_parse_options_csv_set_duplicates (StfParseOptions_t *parseoptions,
|
|
gboolean const duplicates);
|
|
void stf_parse_options_csv_set_trim_seps (StfParseOptions_t *parseoptions,
|
|
gboolean const trim_seps);
|
|
void stf_parse_options_fixed_splitpositions_clear (StfParseOptions_t *parseoptions);
|
|
void stf_parse_options_fixed_splitpositions_add (StfParseOptions_t *parseoptions,
|
|
int position);
|
|
void stf_parse_options_fixed_splitpositions_remove (StfParseOptions_t *parseoptions,
|
|
int position);
|
|
int stf_parse_options_fixed_splitpositions_count (StfParseOptions_t *parseoptions);
|
|
int stf_parse_options_fixed_splitpositions_nth (StfParseOptions_t *parseoptions, int n);
|
|
|
|
/* USING the stf structs to actually do some parsing, these are the lower-level functions and utility functions */
|
|
|
|
GPtrArray *stf_parse_general (StfParseOptions_t *parseoptions,
|
|
GStringChunk *lines_chunk,
|
|
char const *data,
|
|
char const *data_end);
|
|
void stf_parse_general_free (GPtrArray *lines);
|
|
GPtrArray *stf_parse_lines (StfParseOptions_t *parseoptions,
|
|
GStringChunk *lines_chunk,
|
|
char const *data,
|
|
int maxlines,
|
|
gboolean with_lineno);
|
|
|
|
void stf_parse_options_fixed_autodiscover (StfParseOptions_t *parseoptions,
|
|
char const *data,
|
|
char const *data_end);
|
|
|
|
char const *stf_parse_find_line (StfParseOptions_t *parseoptions,
|
|
char const *data,
|
|
int line);
|
|
|
|
#endif
|