Skip to content

Conversation

@gwicke
Copy link

@gwicke gwicke commented Jan 17, 2014

No description provided.

gwicke and others added 30 commits January 16, 2014 19:05
Also tweak the output print newlines slightly so that each time ends up on its
own line.
- JSON intermediate representation:
    [
        '<ul>',
        [
            'foreach',
            {
                data: 'items',
                as: 'item',
                tpl: [
                    '<li', ['attr',{id:id}], '>',
                    ['text',{data:val}], '</li>'
                ]
            }
        ],
        '</ul>'
    ]

- small runtime with an interpreter and compiler

- ported two tests, both run faster than handlebars.js
* add comment explaining background

* fix JSHint warnings, including one bug in the attr handler
* directly dereference static ids from scope without function call, but fall
  back to the full method for complex expressions

* add jshintrc
* cache compiled sub-blocks by storing their options in a global cache keyed
  on uid; this means that we only compile each block once

* remove some local var aliases for prototype members; these turn out not to
  be beneficial.
When a string was passed in, always include all children of body.

Add test case.
When a string was passed in, always include all children of body.

Add test case.
This avoids lots of extra string creation; we accumulate all the output
in a single place from the beginning.
gwicke and others added 30 commits March 15, 2014 12:58
This port only required swapping out the handlebars module with hogan.js, and
calling .render() on the compiled template. Lambda expressions are compiled in
each iteration. There might be more efficient ways to do this in hogan, please
contribute improvements!
The handlebars benchmark is not listed in runall.sh yet as it just excludes
the timing of a plain .compile currently. Proper handlebars precompilation
uses a commandline tool, but produces code that is very browser-specific.
Making this work in node requires more tweaking.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants