Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handling for #base and #include #9

Open
rossengeorgiev opened this issue Apr 7, 2016 · 3 comments
Open

Handling for #base and #include #9

rossengeorgiev opened this issue Apr 7, 2016 · 3 comments

Comments

@rossengeorgiev
Copy link
Contributor

rossengeorgiev commented Apr 7, 2016

Apparently the VDF format supports definitions for merging files.

  • #base will merge KVs from the specified file with the ones from the current
  • #include will append

I don't see how that could be implemented in the module reliably. It should be fairly simple to implement at application level for the specific use case. That leaves allowing # symbol to be used as unquoted key or value, which is currently not supported.

@jaredballou
Copy link

I hadn't seen that you had already created this issue, but I implemented something similar in my fork. I am dealing with theater files for Insurgency, which are KeyValues files that leverage #base extensively. I am also a very new Python programmer, so I am nearly certain that my merge function is inefficient, but it does produce correct output as far as the theater is concerned. Take a peek at my fork, and the theater.py file specifically. I don't know if merging all the theater specific things I will need (ordered list overrides, "include" directive within key types, distance-based lists and vector data types) will be useful to the wider project, but I'd be glad to help port over the useful stuff to the mainline code.

@rossengeorgiev
Copy link
Contributor Author

Hi @jaredballou, the problem is that this module is supposed to (de)serialize to/from vdf/kv1. When we add #include and #base, how do you specify the location of the included files? Then it has to deal with encoding. What if the files are loaded from strings? It seem much more simpler to keep it as it is and let the application add that functionality for its' case, like you did.

One thing I think I could do is provide a method to merge VDFDicts.

@jaredballou
Copy link

Yes, that'd be good. The way I do it is with wrapping the vdf functions in the theater class, and then I send the filename to the class, rather than a file handle. But seeing that these directives (and "[conditional]" statements) are part of the KeyValues standard, it does seem like it should be included. I still don't like how it works in my fork, probably because I am a very new Python coder, but if you wanted to work together to draw up a plan, I'd be happy to help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants