better default multiline-aware templates

This commit is contained in:
Jeremy Ashkenas
2010-10-05 17:10:44 -04:00
parent 5984be70c1
commit 348147d8fb
3 changed files with 12 additions and 2 deletions

View File

@@ -30,5 +30,12 @@
find the intersection of two thousand-element arrays in one second.
</h2>
<br />
<script type="text/html" id="template">
<%
if (data) { data += 12345; }; %>
<li><%= data %></li>
</script>a
</body>
</html>

View File

@@ -87,6 +87,9 @@ $(document).ready(function() {
var withNewlinesAndTabs = _.template('This\n\t\tis: <%= x %>.\n\tok.\nend.');
equals(withNewlinesAndTabs({x: 'that'}), 'This\n\t\tis: that.\n\tok.\nend.');
var fromHTML = _.template($('#template').html());
equals(fromHTML({data : 12345}).replace(/\s/g, ''), '<li>24690</li>');
_.templateSettings = {
evaluate : /\{\{(.+?)\}\}/g,
interpolate : /\{\{=(.+?)\}\}/g

View File

@@ -623,8 +623,8 @@
// By default, Underscore uses ERB-style template delimiters, change the
// following template settings to use alternative delimiters.
_.templateSettings = {
evaluate : /<%(.+?)%>/gm,
interpolate : /<%=(.+?)%>/gm
evaluate : /<%([\s\S]+?)%>/g,
interpolate : /<%=([\s\S]+?)%>/g
};
// JavaScript templating a-la ERB, pilfered from John Resig's