kpdecker
4aad72d223
Move lambda resolution to runtime
...
This has a very positive impact on precompiled output size, particularly for known-helpers cases, and little or no impact on the throughput numbers.
2014-07-06 12:53:01 -05:00
kpdecker
b79e31e5a5
Remove disassemble log statement
...
Fixes #772
2014-06-28 18:44:11 -07:00
kpdecker
55782f08c5
Fix evaluation of paths and subexprs
...
Fixes #743
2014-03-05 17:49:39 -06:00
Kevin Decker
7dd64e5e92
Merge pull request #749 from jenseng/option_subexpressions_fix
...
properly handle multiple subexpressions in the same hash, fixes #748
2014-03-05 14:38:26 -06:00
Jon Jensen
5999baf746
fix bug in IE<=8 (no Array::map), closes #751
...
looks like this broke in 2812fe27
also s/this.i/var i/, since the functions that needed it were removed in
a1edab6ef
2014-03-04 22:18:50 -07:00
Jon Jensen
8493822b62
properly handle multiple subexpressions in the same hash, fixes #748
...
push all hash params before popping any so as to avoid the last stackN var
stomping previous ones
2014-02-20 17:37:25 -06:00
kpdecker
16f135835e
Add support for depthed resolution of data fields
2014-02-09 18:35:22 -06:00
kpdecker
7a7ad74ff1
Optimize buffer generate first and all edge cases
2014-02-09 14:24:18 -06:00
Kevin Decker
bc8f6792e8
Merge pull request #729 from wycats/precompile-literal
...
Convert template spec to object literal
2014-02-08 20:01:52 -06:00
kpdecker
2812fe2775
Convert template spec to object literal
...
This allows for metadata to be associated with the template and a simplification of the template init logic.
2014-02-06 23:05:45 -08:00
kpdecker
b0e7298523
Remove unnecessary conditional
2014-02-06 23:01:43 -08:00
kpdecker
ace2896ec8
Add trackIds compiler flag
...
Allows helpers that care about where a particular field came from derive this data while maintaining backward compatibility with existing helpers.
2014-01-17 23:15:17 -06:00
kpdecker
33921beaa0
Fix missing parameters for pathed mustaches
...
Fixes #658
2014-01-17 23:09:59 -06:00
kpdecker
45ae86a248
Implement partial hash evaluation
2014-01-17 17:51:52 -06:00
Blake Embrey
13633e7896
Improve usefulness of extend util, properly use namespace property, update setup options to use a hash helper.
2014-01-16 21:24:26 +10:00
Kevin Decker
5659db4877
Merge pull request #634 from wycats/name-option
...
It would be great to have the helper name passed to `blockHelperMissing`
2014-01-15 08:42:32 -08:00
kpdecker
f650b0d69e
Expose the initial context via @root
2014-01-15 09:41:53 -06:00
kpdecker
d385e2cab6
Cleanup now unused code in jscompiler
2014-01-06 16:07:56 -06:00
kpdecker
0f328f375e
Include name option for all helper calls
...
All helper calls will have access to `options.name` which is the first id value of the mustache operation.
As part of this the helperMissing call has been simplified to remove the indexed name in order to optimize the call. This is a breaking change.
Fixes #634
2014-01-06 16:07:56 -06:00
kpdecker
daeecf825c
Track stringParams mode in local state vars
2014-01-06 02:55:13 -06:00
Blake Embrey
3d9685c6a2
Remove redundant conditions.
2014-01-05 12:14:24 -05:00
kpdecker
6d996ef270
Simplify ambiguous code
...
Remove if conditional in favor of boolean failover.
2014-01-04 09:19:58 -06:00
kpdecker
e0d0ad5027
Merge branch 'compiler-options' of github.com:blakeembrey/handlebars.js into blakeembrey-compiler-options
...
Conflicts:
lib/handlebars/compiler/javascript-compiler.js
2014-01-01 19:38:31 -06:00
kpdecker
3c85720137
Remove duplication from generated subexpressions
2014-01-01 18:59:21 -06:00
kpdecker
e7e94dc697
Whitespace cleanup
2013-12-31 21:20:59 -06:00
kpdecker
c1a93d33e7
Use literal for data lookup
2013-12-31 21:19:00 -06:00
kpdecker
cd885bf855
Add stack handling sanity checks
2013-12-31 21:18:48 -06:00
kpdecker
ddfe457abf
Fix stack id "leak" on replaceStack
2013-12-31 21:17:50 -06:00
kpdecker
f4d337d252
Fix incorrect stack pop when replacing literals
2013-12-31 21:17:16 -06:00
kpdecker
af3358d195
Fix multiple hash handling in subexpressions
2013-12-31 16:10:51 -06:00
machty
b09333db79
Added support for subexpressions
...
Handlebars now supports subexpressions.
{{foo (bar 3)}}
Subexpressions are always evaluated as helpers; if
`3` were omitted from the above example, `bar`
would be invoked as a param-less helper, even
though a top-levell `{{bar}}` would be considered
ambiguous.
The return value of a subexpression helper is
passed in as a parameter of a parent subexpression
helper, even in string params mode. Their type,
as listed in `options.types` or `options.hashTypes`
in string params mode, is "sexpr".
The main conceptual change in the Handlebars code
is that there is a new AST.SexprNode that manages
the params/hash passed into a mustache, as well
as the logic that governs whether that mustache
is a helper invocation, property lookup, etc.
MustacheNode, which used to manage this stuff,
still exists, but only manages things like
white-space stripping and whether the mustache
is escaped or not. So, a MustacheNode _has_
a SexprNode.
The introduction of subexpressions is fully
backwards compatible, but a few things needed
to change about the compiled output of a template
in order to support subexpressions. The main one
is that the options hash is no longer stashed in
a local `options` var before being passed to
either the helper being invoked or the
`helperMissing` fallback. Rather, the options
object is inlined in these cases. This does
mean compiled template sizes will be a little
bit larger, even those that don't make use of
subexpressions, but shouldn't have any noticeable
impact on performance when actually rendering
templates as only one of these inlined objects
will actually get evaluated.
2013-12-30 19:07:04 -05:00
Blake Embrey
150e55aa00
Pull options out from param setup to allow easier extension.
2013-12-28 22:31:45 -05:00
Kevin Decker
2dae244185
Merge pull request #684 from blakeembrey/javascript-variable
...
Allow any number of trailing characters for valid JavaScript variable
2013-12-25 10:12:11 -08:00
Blake Embrey
f3a90812a6
Allow any number of trailing characters.
2013-12-24 16:14:57 -05:00
kpdecker
bbc7c7d080
Expose compilerInfo and checkRevision as APIs
...
Fixes #656
2013-12-23 21:00:59 -06:00
kpdecker
ded0a1617f
Protect context-lookups from undefined values
...
Fixes #166
Fixes #587
2013-11-03 10:58:37 -06:00
kpdecker
c776f171ab
Implement strip opcode
2013-10-14 22:50:50 -05:00
kpdecker
6b0b3fa2ca
Defer content output
...
Allows for stripping of the content after the fact.
2013-10-14 22:50:50 -05:00
kpdecker
a1edab6ef5
Kill unused functions
2013-10-14 22:50:50 -05:00
kpdecker
4cf49732a2
Push Source helper method
2013-10-14 22:50:49 -05:00
kpdecker
06d94fed56
Fix argument not found error
2013-10-14 22:49:34 -05:00
kpdecker
4fda71364e
Pass options hash to context function exec
...
Fixes #599
2013-10-14 21:30:58 -05:00
kpdecker
e676e43dc5
Use proper default vs. module import semantics
2013-10-01 21:19:49 -05:00
kpdecker
27d9010974
Update logger for es6 modules
2013-09-30 23:52:44 -05:00
kpdecker
192887cedc
Merge commit '87b5d4ee61605b026506e92c9e8873d867c5f150' into es6-modules
...
Conflicts:
dist/handlebars.js
dist/handlebars.runtime.js
lib/handlebars/base.js
lib/handlebars/utils.js
2013-09-02 16:19:28 -05:00
kpdecker
9ca4f9c606
Remove unused var
2013-07-30 11:08:26 -05:00
Yehuda Katz
f5c8484ea0
Further progress towards modularization.
...
At this point, I have only 2 fails in the Node build, but I'm doing a
bunch of manual stuff locally and still have a bunch of hacks.
2013-07-24 05:03:27 +00:00
Yehuda Katz
da130f7745
Building an AMD file
2013-07-16 19:10:37 +00:00
Yehuda Katz
88ee4757e7
Initial work on ES6 modules
2013-07-01 13:59:58 -07:00
kpdecker
c3ff573184
Break JavascriptCompiler into standalone file
2013-06-03 23:27:35 -05:00