avoid undefined / type errors for complex / deep / nested object trees the brute force way #24
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.
I'm not sure it's the best way, but I added a new "safe" interpolation option that will eval to '' if anything "bad" happens. (e.g. one of the objects is null or undefined, or simply you got an exception)
This is common in template languages (e.g. in Freemarker and VTL the ${! prefix )
I used {{~ }} for this notation, (e.g. if {{~a.b.c}} is called and b is undefined, it will return '' gracefully)
Since it's a new interpolation type, I think that if not used, it's only a very small performance issue (of course that the try catch is a very slow and bad practice, but doing {{= typeof a.b == 'undefined' ? '' : a.b}} is worse in my opinion (in terms of programmer productivity
I will not be offended and will still love DoT.js if you reject this pull request, it's one of my first ones
any comments are welcome, be gentle please... ;)