Commit counter 21. Major update, mostly to support new features in JsViews,
as well as improved support for converter functions. Also preparing the
ground for upcoming changes making it possible to opt in to making any
JsRender tag data-bound (i.e. data-linked, when using JsViews)
Updated Readme with info about beta status. Added/improved three samples
in step-by-step demos, showing how to access parent data, or pass template
parameters to nested templates or block tags.
See jsrender/demos/step-by-step/11, 12 and 13.
Commit counter 22. Major update, including some BREAKING CHANGES, and many
new features. More samples and documentation for new features will be added
incrementally in coming updates.

Among the changes:

Detailed APIs modified for consistent arguments and use of this
pointer, and for maximum extensibility. See updated samples for usage...

Compiled templates restructured for easier debugging.

View object restructured for clarity.

View now has a type property, e.g. type="item"
Only "item" views have index properties, but to get the index from a nested
view use view.get("item").index.

nodes collection on a view is now a function, view.nodes().

Settings grouped onto a $.views.settings object.
View navigation features improved, with view.get(...) and $.view(elem, ...)
tagCtx object provides improved access to the args and properties of a tag
 invocation.

Adding resources (helpers, converters, tags, etc) to a template now supported
by passing parent template to API. e.g. $.tags({...}, parentTemplate).
Many improvements to custom tags, - used also as part of JsViews integration
for new JsViews Tag Controls. (Instantiation of tags as control instances).

Template inclusion now supported with simpler syntax {{for tmpl=.../))

Fixes for issues #169, #162, #157, #156, #155, #153, #145
Commit counter 23. Several fixes and improvements. Main changes as follows:

#index will only work from item 'views', but #getIndex() now available from
nested {{if}} blocks etc. (fixes #173).

Fixes and improvements for associating resources (tags, helpers, converters)
with template. (See #170)

Sample test page for above nested resouces feature: nested-template-resources.html.

New feature for deep paths, which now allow a.b.c when a or b are null to
render an empty string, and not throw. Just set noerror=true. Updated sample
step-by-step/07_paths.html to show this, as well as the new comment tag:
{{!-- this is a comment --}}, and the use of aliases ~foo=expression for
providing access from nested templates without using #parent.parent.parent...


Continued improving compiled template output for ease of debugging. Set
$.views.settings.tryCatch=false; to cause errors thrown in compiled template
rendering to throw in the template, and facilitate debugging from there,
rather then rendering the error string and continuing... Example of this added
in nested-template-resources.html test page.
Commit 24: Several bug fixes, including #177. Also small change to support
newlines within tag markup.
Commit 24b: Fix for bug #181. (Bigger fix coming soon with many other
changes, but since it is taking longer than expected, I decided to pull
this specific fix out, and expedite it...)
Commit 25.
- New view.get() API for finding parent/child views by type.
- Renamed view._hlp to view.hlp - public API to find contextual helpers/params.
- New and improved tag and view hierarchy navigation APIs, including
view.childTags() and tag.childTags() for finding descendant tags
(optionally filtered by tagName).
- New tag.flow boolean property on tags. If true, ignored by tag hierarchy
navigation APIs.
- New ~root helper in templates to access the top-level (root) data from nested
contexts.
- view.renderContent() now automatically uses the current data context and
parentView

- Includes fixes for #32 #179
Commit 26: Small fix for integration with JsViews tag controls
Commit 27. Major update - {{else}} with any tag, {{include}} etc.

1: All tags now support one or more {{else}} tags
 - not only {{if ...}}...{{else ...}}...{{else}}...{{/if}}
 - but also {{for ...}}...{{else ...}}...{{else}}...{{/for}}
 - or {{myTag ...}}...{{else ...}}...{{else}}...{{/myTag}}.

 The {{else}} tag(s) will in effect split the content of the
 {{myTag}}...{{/myTag}} block into multiple blocks.

 Each tag implementation can define specific behavior for the {{else}}
 blocks.

 Example: Add an {{else}} to {{for}}...{{/for}} to provide an
 'if array is empty' section.

 - See http://borismoore.github.com/jsviews/test/test-pages/for-else.html
 for an advanced interactive example with JsViews.
 - See the updated http://borismoore.github.com/jsviews/demos/tag-controls/tabs-control.html
 for an interactive example of {{myTag}}...{{else}}...{{/myTag}}

2: There is now an {{include tmpl=.../}} tag, for simple template
 composition, without navigation through data, or iteration over arrays.
 See issue #155

3: There is now a new ‘wrapped template’ feature for providing both
 a template  and block content, so that the template can then ‘wrap’
 the content.
 See http://borismoore.github.com/jsrender/demos/step-by-step/06_template-composition.html

BREAKING CHANGES:
The tag.renderContent() method has been replaced by tag.tagCtx.render()
 on each tagCtx
 See http://borismoore.github.com/jsrender/demos/step-by-step/08_custom-tags.html.

Advanced custom tag APIs have changed for better support of {{else}} blocks,
 and better navigation through the tag hierarchy.
Commit 28. Small design change for custom tags with declared templates.
- A declared template now takes precendence over inline (block) content,
 but can access the inline content using {{include tmpl=#content/}}, or
 programmatically as tagCtx.content.
- New sample content showing alternative approaches to custom tags wrapping
 their inline content:
http://borismoore.github.com/jsrender/demos/step-by-step/08_custom-tags.html.
- See also JsViews sample:
http://borismoore.github.com/jsviews/demos/tag-controls/tabs-control.html

Fix for #190
Commit 29. Small change in jsrender.js needed for JsViews:
 When data-linking data-link="foo{:expr}", for some target attribute, foo,
 then if the expr returns null the attribute foo will be removed.
Commit 30. (Beta Candidate)
This includes changes required to fix for issues 89, 116, 148 and 149 of
JsViews.
It is also a candidate for Beta. If no significant new bugs are
encountered then it will be used to provide an official beta version.
Commit 31. (Beta Candidate)
1) Important fix for 'minor' bug (typo) which prevented data-linking when
 window.name !== "" - e.g. in jsfiddle samples.
2) BREAKING change - but only if NOT using jQuery. See #191:
 With this change the JsRender API for with and without jQuery is now
 identical except that with jQuery, window.jQuery is the global namespace
 object, typically mapped to var $, and without jQuery, window.jsviews
 is the global namespace object. If in the second case window.jsviews is
 also mapped to var $, then the API for both scenarios now beccomes
 identical and allows a single documentation and samples set to be provided
 for both scenarios:
 $.views provides access to the full JsRender (and JsViews) APIs
 e.g. $.converters. But in addition, some important APIs ($.templates and
 $.render) are also made available directly from $...
3) The attr and url converters no longer convert null to "". This allows
 JsViews data-link="someTarget{attr:expression}" to remove the target
 attribute if the expression returns null, just as is the case already for
 data-link="someTarget{:expression}"
4) Modified sample "20_without-jquery.html" to show proposed pattern for
 mapping window.jsviews to var $, with API change above.
 "11_accessing-parent-data.html
5) Added example of accessing root data as ~root - within existing sample
 "11-accessing-parent-data.html
Commit 32. (Beta Candidate)
1) Fix for white-space-stripping bug
Commit 33. (Beta Candidate)
Small bug fix required for JsViews Issue 153