New base macro: d, for dictionary literal shorthand #66
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adding support for CoffeeScript/ES6-style dictionaries in python.
Example & Explanation
But in CoffeeScript, you can just do
The feature is known as the Object Literal Property Value Shorthand, and is coming to Javascript as of ES6
Now you can use it in python, too, with MacroPy.
Implementation
This was a bit of a pain to implement without MacroPy, since the Python call stack doesn't include the expressions passed, and
inspect
is slow.Even with MacroPy, without forking the project I'd need to use a lookup and a slice, a la
I showed
d[ct
to an unbiased python programmer and they said versions 1/2 looked way cleaner and they'd probably not use it. Fair enough. So I needed to make d(...) work directly.I ended up needing to fork and slightly modify MacroPy to support changing the syntax tree to support function calls. Hopefully this is an acceptable addition.