Mustache specs - method interpolation compliance #305
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.
According to the Mustache spec if the name parts in a doted name refers to methods, these methods should be called in the context of the object they are contained in. In mustache.js only the last name in a doted name is called (if it is a function) and it is called in the context of the current view object rather than in the context of its object.
I try to use mustache.js on nested objects that contain accessor methods and it would be much easier if mustache.js followed the behavior from the spec. And I have therefore implemented that behavior.
If we e.g. have a interpolation
{{foo.bar}}
wherefoo
is a method in the current view that returns a objecto
with abar
method,foo
will be called in the context of the current view andbar
will be called in the context ofo
.Unfortunately this change break some current function behavior, I have updated one of the tests and the documentation to reflect this. And provided tests for the new behavior.