The last few days, I’ve described how I understand Seventh Sanctum data files work.
Of course, that’s what I think. Next step is proving it, and the easiest way I can imagine is to use the data in the files.
General Strategy
For this exercise I’ll be using Perl as it’s my easiest language for things like this.
For each file type, I will
- Read and parse the file.
- Write the dictionary to a JSON file.
- Visually review; no code, just read.
- Apply contents.
Steps
I’ll tackle things in this order.
- Parse configuration files. They’re the simplest, they’re the easiest to prove, and they govern access to vocabulary files.
- Output parsed configuration file content to JSON.
- Parse vocabulary files. Next easiest, and they get loaded by configuration files.
- Output parsed vocabulary file content to JSON.
- Apply configuration files (load vocabulary files as indicated by configuration file, generate random strings).
- … do I create a vocabulary dictionary under each symbol? I think I might need to. If I have only a single vocabulary, all symbols will share the same one.
- Parse seed files. I believe these are self-contained, and the syntax is simpler than original thought.
- Output parsed seed file content to JSON.
- Apply vocabulary files (i.e. generate random strings using rules loaded from vocabulary files).
- Apply seed files (i.e. run the instructions and generate random strings).
- This is probably the most complicated, or at least, the easiest to get wrong. I’ll probably have intermediate steps where I prove the instructions work. For instance, that replacing or appending to table definitions works, by writing current state to JSON.
- Probably need a reset ability. Each time the seed table is resolved, dynamic tables can be updated in different ways. I’m pretty sure I don’t want multiple runs to increasingly change the dynamic tables.
Let’s see if I can prove I know what I’m talking about.
Postscript 2025-01-23
I had some time last night.
- Done
- Done
- Done
- Done
- Done. I did create a vocabulary dictionary under each symbol.
- Done. Added some basic summary information (list of all symbols and all dynamic symbols). This lets me more easily see what I’ve got in each file.
- Done.
- Not started (I have old code — days old), so it’ll be a quick lift.
- Not started, but now that it’s parsed it should be straightforward.