Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Remove jshint completely | kpdecker | 2015-04-27 | 1 | -2/+0 |
| | |||||
* | Update for let and optional parameters | kpdecker | 2015-04-20 | 1 | -69/+66 |
| | |||||
* | Add full support for es6 | kpdecker | 2015-04-16 | 1 | -42/+46 |
| | | | | | | | | Converts the tool chain to use babel, eslint, and webpack vs. the previous proprietary solutions. Additionally begins enforcing additional linting concerns as well as updates the code to reflect these rules. Fixes #855 Fixes #993 | ||||
* | Add support for dynamic partial names | kpdecker | 2015-01-18 | 1 | -2/+11 |
| | | | | | | | | | Uses the subexpression syntax to allow for dynamic partial lookups. Ex: ``` {{> (helper) }} ``` Fixes #933 | ||||
* | Add missing reserved words so compiler knows to use array syntax: | Matthew Flaschen | 2015-01-17 | 1 | -1/+2 |
| | | | | | | | | | | | | | | | | * await * null * true * false IE 8 was failing to compile Handlebars-generated source code because it had helpers.null. I came up with this list by diffing https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords against the ones Handlebars already had. I added two corresponding tests for nameLookup. | ||||
* | Implement strict and assumeObject modes | kpdecker | 2014-12-27 | 1 | -7/+42 |
| | | | | | | | | Causes templates to throw when lookup fields are not defined within the context. Strict mode will throw when any field is omitted. assumeObjects mode maintains the existing behavior of outputting an empty response when fields are not defined but allows for performance/size optimizations by not doing safety checks for intermediate objects in the lookup chain. Strict mode effectively disables the helperMissing and inverse handling for blockHelperMissing as templates will throw rather than call those features for missing data fields. Fixes #651 Fixes #805 | ||||
* | Strip unnecessary whitespace in template output | kpdecker | 2014-12-27 | 1 | -1/+1 |
| | |||||
* | Fix duplicate return statement on simple templates | kpdecker | 2014-12-27 | 1 | -1/+1 |
| | |||||
* | Implement block parameters | kpdecker | 2014-12-26 | 1 | -25/+57 |
| | | | Fixes #907 | ||||
* | Update fix for #926 for 3.0 codeline | kpdecker | 2014-12-17 | 1 | -1/+1 |
| | |||||
* | Track depths on deduped children | kpdecker | 2014-12-16 | 1 | -0/+2 |
| | | | | | Fixes a very specific error case where deduped children won’t receive the depths object due to it being omitted by the caller when optimizing. Fixes #926 | ||||
* | Remove unused vars and add jshint checking | kpdecker | 2014-12-16 | 1 | -1/+0 |
| | |||||
* | Remove Compiler.depths parameter | kpdecker | 2014-12-16 | 1 | -4/+2 |
| | | | | This is no longer necessary with the depths array tracking and adds compiler overhead. | ||||
* | Add basic docs for JavaScriptCompiler override API | kpdecker | 2014-11-29 | 1 | -9/+9 |
| | |||||
* | Drop unused JavaScriptCompiler.namespace param | kpdecker | 2014-11-29 | 1 | -2/+0 |
| | |||||
* | Treat partial exec in a manner closer to helpers | kpdecker | 2014-11-27 | 1 | -16/+25 |
| | | | This helps unify the code handling and will also be needed to support string/id tracking on partials. | ||||
* | Update subexpression and hash AST constructs | kpdecker | 2014-11-27 | 1 | -2/+2 |
| | |||||
* | Replace DataNode and IdNode with PathNode | kpdecker | 2014-11-26 | 1 | -1/+1 |
| | | | This is a breaking change for string mode users as there is no longer a distinct type for data parameters. Instead data consumers should look for the @ prefix value. | ||||
* | Update AST location info to match SpiderMonkey | kpdecker | 2014-11-26 | 1 | -1/+1 |
| | | | Part of #889 | ||||
* | Optimize variable declaration | kpdecker | 2014-11-25 | 1 | -2/+1 |
| | |||||
* | Propagate options for client compiled partials | kpdecker | 2014-11-08 | 1 | -0/+2 |
| | | | Fixes #901 | ||||
* | Only provide aliases for multiple use calls | kpdecker | 2014-11-08 | 1 | -26/+39 |
| | | | Fixes #903 | ||||
* | Provide default mapping for boilerplate code | kpdecker | 2014-11-08 | 1 | -1/+5 |
| | |||||
* | Generate source maps | kpdecker | 2014-11-08 | 1 | -100/+124 |
| | | | | | | Allow the precompiler to generate source maps when the srcFile parameter is passed. This refactors large chunks of the code generation pipeline, allowing metadata to be associated with code chunks as well as breaking out much of the code generation logic into a separate helper. | ||||
* | Include location information in all opcodes | kpdecker | 2014-11-08 | 1 | -0/+1 |
| | |||||
* | Simplify program generation logic | kpdecker | 2014-11-08 | 1 | -10/+2 |
| | |||||
* | Bump test coverage | kpdecker | 2014-11-08 | 1 | -2/+2 |
| | |||||
* | Ignore unused code paths | kpdecker | 2014-11-08 | 1 | -0/+2 |
| | | | | We don’t want to remove these as the generic code may need it in the future, but these code paths are not triggered through the existing language constructs. | ||||
* | Merge setupParams and setupOptions | kpdecker | 2014-11-06 | 1 | -9/+2 |
| | |||||
* | Simplify flushInline implementation | kpdecker | 2014-11-05 | 1 | -19/+10 |
| | |||||
* | Use terinary operator for inline appends | kpdecker | 2014-11-05 | 1 | -7/+12 |
| | | | | Allows for append operations to avoid breaking inline chain. | ||||
* | Render false literal as “false” | kpdecker | 2014-08-25 | 1 | -1/+1 |
| | | | Fixes #827 | ||||
* | Prune unused code | kpdecker | 2014-08-25 | 1 | -1/+1 |
| | |||||
* | Restore helperMissing for ambiguous statements | kpdecker | 2014-08-23 | 1 | -1/+2 |
| | | | | Fixes #318 (regression) Partial fix for #783 | ||||
* | Cleanup from code coverage report | kpdecker | 2014-08-23 | 1 | -11/+7 |
| | |||||
* | Move strip processing into AST helper logic | kpdecker | 2014-08-23 | 1 | -22/+0 |
| | | | | | We already have to track these behaviors for the standalone parsing and rather than having two whitespace pruning implementations this moves all of the behavior into one place. Fixes #852 | ||||
* | Optimize replaceStack for inline methods | kpdecker | 2014-08-23 | 1 | -40/+24 |
| | | | Only use case was with inline input so most of this code was unnecessary. | ||||
* | Remove unnecessary stack variable from blockHelper | kpdecker | 2014-08-23 | 1 | -4/+4 |
| | |||||
* | Do not flush subexpressions | kpdecker | 2014-08-23 | 1 | -7/+0 |
| | | | | | | They are no longer duplicated with the new helper calling pattern and this also introduced stack corruption issues due to improper value lookups. Fixes #767 Fixes #768 | ||||
* | Fix undefined handling for pathed lookups | kpdecker | 2014-08-15 | 1 | -4/+3 |
| | | | | Fixes #837 | ||||
* | Strip dead code from javascript compiler | kpdecker | 2014-08-15 | 1 | -9/+2 |
| | |||||
* | Fix compat partial exec without data | kpdecker | 2014-08-15 | 1 | -0/+2 |
| | |||||
* | Make depthed lookup call non-literal | kpdecker | 2014-08-15 | 1 | -1/+1 |
| | | | Prevents duplicate calls from being made. | ||||
* | Drop unused DECLARE opcode | kpdecker | 2014-08-14 | 1 | -5/+1 |
| | |||||
* | Increase test coverage a touch | kpdecker | 2014-08-14 | 1 | -4/+2 |
| | |||||
* | Implement partial recursive lookup | kpdecker | 2014-08-14 | 1 | -1/+4 |
| | |||||
* | Inherit compat flag for partials | kpdecker | 2014-08-14 | 1 | -1/+4 |
| | |||||
* | Implement recursive field lookup in compat mode | kpdecker | 2014-08-13 | 1 | -7/+17 |
| | | | | | | Provides the mustache behavior of recursive lookup without the use of depthed paths. Note that this does incur a fairly dramatic performance penalty for depthed queries. | ||||
* | Use depths array rather than passing array args | kpdecker | 2014-08-13 | 1 | -9/+20 |
| | | | Approximately doubles the throughput performance of depthed templates and clears the way for doing recursive path lookups in pathed mode. | ||||
* | Create contextName helper for context lookup | kpdecker | 2014-08-13 | 1 | -7/+10 |
| | |||||
* | Render indent for standalone partials | kpdecker | 2014-08-12 | 1 | -2/+2 |
| | |||||
* | Remove unused JSCompiler.register method | kpdecker | 2014-08-11 | 1 | -5/+0 |
| | |||||
* | Do not lookup pathed helpers on the helper stack | kpdecker | 2014-07-12 | 1 | -5/+4 |
| | | | | Fixes #764 | ||||
* | Fix rendering of paths that resolve to zero | kpdecker | 2014-07-12 | 1 | -1/+1 |
| | | | | Fixes #820 | ||||
* | Use ID lookup for ambiguous helper evaluation | kpdecker | 2014-07-07 | 1 | -1/+2 |
| | | | Final change for #731 | ||||
* | Rework lookup null protector logic | kpdecker | 2014-07-06 | 1 | -54/+62 |
| | | | | | | | - Move the lookup null protection out of `nameLookup` and into that contexts that are aware of the needs for falsy vs. not displayed values. - Optimize lookup for nested path operations Fixes #731 | ||||
* | Move lambda resolution to runtime | kpdecker | 2014-07-06 | 1 | -4/+2 |
| | | | This has a very positive impact on precompiled output size, particularly for known-helpers cases, and little or no impact on the throughput numbers. | ||||
* | Remove disassemble log statement | kpdecker | 2014-06-28 | 1 | -3/+1 |
| | | | Fixes #772 | ||||
* | Fix evaluation of paths and subexprs | kpdecker | 2014-03-05 | 1 | -5/+8 |
| | | | Fixes #743 | ||||
* | Merge pull request #749 from jenseng/option_subexpressions_fix | Kevin Decker | 2014-03-05 | 1 | -4/+3 |
|\ | | | | | properly handle multiple subexpressions in the same hash, fixes #748 | ||||
| * | properly handle multiple subexpressions in the same hash, fixes #748 | Jon Jensen | 2014-02-20 | 1 | -4/+3 |
| | | | | | | | | | | push all hash params before popping any so as to avoid the last stackN var stomping previous ones | ||||
* | | fix bug in IE<=8 (no Array::map), closes #751 | Jon Jensen | 2014-03-04 | 1 | -9/+11 |
|/ | | | | | | | looks like this broke in 2812fe27 also s/this.i/var i/, since the functions that needed it were removed in a1edab6ef | ||||
* | Add support for depthed resolution of data fields | kpdecker | 2014-02-09 | 1 | -2/+6 |
| | |||||
* | Optimize buffer generate first and all edge cases | kpdecker | 2014-02-09 | 1 | -26/+39 |
| | |||||
* | Merge pull request #729 from wycats/precompile-literal | Kevin Decker | 2014-02-08 | 1 | -57/+55 |
|\ | | | | | Convert template spec to object literal | ||||
| * | Convert template spec to object literal | kpdecker | 2014-02-06 | 1 | -57/+55 |
| | | | | | | This allows for metadata to be associated with the template and a simplification of the template init logic. | ||||
* | | Remove unnecessary conditional | kpdecker | 2014-02-06 | 1 | -3/+1 |
|/ | |||||
* | Add trackIds compiler flag | kpdecker | 2014-01-17 | 1 | -3/+36 |
| | | | | Allows helpers that care about where a particular field came from derive this data while maintaining backward compatibility with existing helpers. | ||||
* | Fix missing parameters for pathed mustaches | kpdecker | 2014-01-17 | 1 | -1/+1 |
| | | | Fixes #658 | ||||
* | Implement partial hash evaluation | kpdecker | 2014-01-17 | 1 | -1/+1 |
| | |||||
* | Improve usefulness of extend util, properly use namespace property, update ↵ | Blake Embrey | 2014-01-16 | 1 | -17/+28 |
| | | | | setup options to use a hash helper. | ||||
* | Merge pull request #634 from wycats/name-option | Kevin Decker | 2014-01-15 | 1 | -18/+13 |
|\ | | | | | It would be great to have the helper name passed to `blockHelperMissing` | ||||
| * | Cleanup now unused code in jscompiler | kpdecker | 2014-01-06 | 1 | -5/+4 |
| | | |||||
| * | Include name option for all helper calls | kpdecker | 2014-01-06 | 1 | -15/+11 |
| | | | | | | | | | | | | | | | | 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 | ||||
* | | Expose the initial context via @root | kpdecker | 2014-01-15 | 1 | -1/+1 |
|/ | |||||
* | Track stringParams mode in local state vars | kpdecker | 2014-01-06 | 1 | -6/+7 |
| | |||||
* | Remove redundant conditions. | Blake Embrey | 2014-01-05 | 1 | -4/+1 |
| | |||||
* | Simplify ambiguous code | kpdecker | 2014-01-04 | 1 | -9/+9 |
| | | | | Remove if conditional in favor of boolean failover. | ||||
* | Merge branch 'compiler-options' of github.com:blakeembrey/handlebars.js into ↵ | kpdecker | 2014-01-01 | 1 | -4/+9 |
|\ | | | | | | | | | | | | | blakeembrey-compiler-options Conflicts: lib/handlebars/compiler/javascript-compiler.js | ||||
| * | Pull options out from param setup to allow easier extension. | Blake Embrey | 2013-12-28 | 1 | -5/+10 |
| | | |||||
* | | Remove duplication from generated subexpressions | kpdecker | 2014-01-01 | 1 | -12/+38 |
| | | |||||
* | | Whitespace cleanup | kpdecker | 2013-12-31 | 1 | -4/+4 |
| | | |||||
* | | Use literal for data lookup | kpdecker | 2013-12-31 | 1 | -1/+1 |
| | | |||||
* | | Add stack handling sanity checks | kpdecker | 2013-12-31 | 1 | -0/+8 |
| | | |||||
* | | Fix stack id "leak" on replaceStack | kpdecker | 2013-12-31 | 1 | -1/+6 |
| | | |||||
* | | Fix incorrect stack pop when replacing literals | kpdecker | 2013-12-31 | 1 | -2/+4 |
| | | |||||
* | | Fix multiple hash handling in subexpressions | kpdecker | 2013-12-31 | 1 | -1/+5 |
| | | |||||
* | | Added support for subexpressions | machty | 2013-12-30 | 1 | -22/+20 |
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. | ||||
* | Merge pull request #684 from blakeembrey/javascript-variable | Kevin Decker | 2013-12-25 | 1 | -1/+1 |
|\ | | | | | Allow any number of trailing characters for valid JavaScript variable | ||||
| * | Allow any number of trailing characters. | Blake Embrey | 2013-12-24 | 1 | -1/+1 |
| | | |||||
* | | Expose compilerInfo and checkRevision as APIs | kpdecker | 2013-12-23 | 1 | -3/+7 |
| | | | | | | Fixes #656 | ||||
* | | Protect context-lookups from undefined values | kpdecker | 2013-11-03 | 1 | -3/+15 |
| | | | | | | | | Fixes #166 Fixes #587 | ||||
* | | Implement strip opcode | kpdecker | 2013-10-14 | 1 | -0/+19 |
| | | |||||
* | | Defer content output | kpdecker | 2013-10-14 | 1 | -2/+19 |
| | | | | | | | | Allows for stripping of the content after the fact. | ||||
* | | Kill unused functions | kpdecker | 2013-10-14 | 1 | -9/+0 |
| | | |||||
* | | Push Source helper method | kpdecker | 2013-10-14 | 1 | -11/+15 |
| | | |||||
* | | Fix argument not found error | kpdecker | 2013-10-14 | 1 | -1/+1 |
| | | |||||
* | | Pass options hash to context function exec | kpdecker | 2013-10-14 | 1 | -1/+1 |
| | | | | | | Fixes #599 | ||||
* | | Use proper default vs. module import semantics | kpdecker | 2013-10-01 | 1 | -1/+2 |
| | | |||||
* | | Update logger for es6 modules | kpdecker | 2013-09-30 | 1 | -13/+4 |
| | |