Add config file location to each design #5

This commit is contained in:
Thomas Jensen 2021-03-13 15:16:17 +01:00
parent 9315e62528
commit 46aab3faa6
No known key found for this signature in database
GPG Key ID: A4ACEE270D0FB7DB
6 changed files with 13 additions and 5 deletions

View File

@ -629,6 +629,7 @@ static int build_design(design_t **adesigns, const char *cld)
dp->sample = "n/a";
dp->indentmode = DEF_INDENTMODE;
dp->padding[BLEF] = 1;
dp->defined_in = "(command line)";
dp->tags = (char *) calloc(10, sizeof(char));
strcpy(dp->tags, "transient");
@ -760,6 +761,8 @@ static int list_styles()
d->revision && d->revdate ? " as of " : "",
d->revdate ? d->revdate : (d->revision ? "" : "(unknown)"));
fprintf(opt.outfile, "Configuration File: %s\n", d->defined_in);
fprintf(opt.outfile, "Indentation Mode: ");
switch (d->indentmode) {
case 'b':

View File

@ -105,6 +105,7 @@ typedef struct {
size_t minheight;
int padding[ANZ_SIDES];
char *tags;
char *defined_in; /* path to config file where this was defined */
reprule_t *current_rule;
reprule_t *reprules; /* applied when drawing a box */

View File

@ -38,6 +38,9 @@ typedef struct {
/** index into `*designs` */
int design_idx;
/** the path to the config file we are parsing */
char *config_file;
/** the flex scanner, which is explicitly passed to reentrant bison */
void *lexer_state;
} pass_to_bison;
@ -315,6 +318,7 @@ static void recover(pass_to_bison *bison_args)
BFREE (curdes.tags);
memset (bison_args->designs + bison_args->design_idx, 0, sizeof(design_t));
curdes.indentmode = DEF_INDENTMODE;
curdes.defined_in = bison_args->config_file;
}
@ -407,6 +411,7 @@ first_rule:
}
bison_args->num_designs = 1;
bison_args->designs->indentmode = DEF_INDENTMODE;
bison_args->designs->defined_in = bison_args->config_file;
}
config_file
@ -484,9 +489,6 @@ parent_def: YPARENT STRING
parent_configs[num_parent_configs] = filepath;
++num_parent_configs;
}
// TODO HERE
// TODO each design should know where it was defined
}
config_file: config_file design_or_error | design_or_error | config_file parent_def | parent_def ;
@ -579,6 +581,7 @@ layout YEND WORD
bison_args->designs = tmp;
memset (&curdes, 0, sizeof(design_t));
curdes.indentmode = DEF_INDENTMODE;
curdes.defined_in = bison_args->config_file;
}
;

View File

@ -123,12 +123,11 @@ static design_t *parse_config_file(const char *config_file, size_t *r_num_design
fprintf (stderr, "Parsing Config File %s ...\n", config_file);
#endif
// TODO the parser reallocs the global designs array, do this with module-local vars
pass_to_bison bison_args;
bison_args.designs = NULL;
bison_args.num_designs = 0;
bison_args.design_idx = 0;
bison_args.config_file = (char *) config_file;
bison_args.lexer_state = NULL;
current_bison_args = &bison_args;

View File

@ -9,6 +9,7 @@ Author: Thomas Jensen
Original Designer: (public domain)
Creation Date: March 18, 1999 (Thursday, 15:25h)
Current Revision: 1.0 as of March 18, 1999 (Thursday, 15:25h)
Configuration File: ../boxes-config
Indentation Mode: box (indent box)
Replacement Rules: 1. (glob) "\*/" WITH "*\\/"
Reversion Rules: 1. (glob) "\*\\/" TO "*/"

View File

@ -9,6 +9,7 @@ Author: (unknown author)
Original Designer: (unknown artist)
Creation Date: now
Current Revision: 1.0
Configuration File: (command line)
Indentation Mode: box (indent box)
Replacement Rules: none
Reversion Rules: none