Sunday, August 05, 2007

prototype javascript library Template pattern example


<script type="text/javascript" charset="utf-8">
function doc(argument) {
document.write("<p>\n");
document.write(argument);
document.write("</p>\n");
}

function printCart(){
//creating a sample cart
var cart = new Object();
cart.items = [ ];
//putting some sample items in the cart
cart.items.push({product: 'Book 123', price: 24.50, quantity: 1});
cart.items.push({product: 'Set of Pens', price: 5.44, quantity: 3});
cart.items.push({product: 'Gift Card', price: 10.00, quantity: 4});
//here we create our template for formatting each item
var itemFormat = new Template('You are ordering #{quantity} units of #{product} at $#{price} each.');
var formatted = '';
for(var i=0; i<cart.items.length; i++){
var cartItem = cart.items[i];
formatted += itemFormat.evaluate(cartItem) + '<br/>\n';
}

doc(formatted);
}
printCart();

var oldStr = 'testStringGsubAndTemplate';
var oldPattern = /Str(.*?)(G.*?)And/;
var regNoReplace = ' {1} + {2} ';
var regAllReplace = ' #{1} + #{2} ';
var regPartReplace = ' \\#{1} + #{2} ';

var rnr = oldStr.gsub(oldPattern, regNoReplace);
doc(rnr);
var rar = oldStr.gsub(oldPattern, regAllReplace);
doc(rar);
var rpr = oldStr.gsub(oldPattern, regPartReplace);
doc(rpr);
//alert(regNoReplace.match(Template.Pattern)); // return null, will not perform replacement function(match) {var before... }
var tg = (new Template(regNoReplace)).evaluate(oldStr.match(oldPattern));
doc(tg);
//alert(regPartReplace.match(Template.Pattern)); // return match object, will perform replacement function(match) {return template.ev....}
var tgp = (new Template(regPartReplace)).evaluate(oldStr.match(oldPattern));
doc(tgp);
</script>

No comments :