Edit in JSFiddle

var _ = ishml.Template
var example1=_`Carmen has a pet ${_.pick("dog","cat","emu","octopus").tag("pet")}. 
Saul has ${_.a.tags.pet}.  I saw his ${tags=>tags.pet.text} yesterday. `

var example2=_`Carmen has ${_.a.pick().tag("pet")}, but ${tags=>tags.pet.data.problem}.
Is ${tags=>tags.pet.data.value} right for you?  
A pet ${tags=>tags.pet.inner.data.value} is not right for me.`

example2.populate({pet:[{animal:"dog",problem:"they shed a lot"},
{animal:"cat",problem:"I'm allergic"},
{animal:"emu",problem:"they can be temperamental"},
{animal:"octopus",problem:"they get bored easily"}]})

var example3=_`The humane society has ${_.list(_("dog","cat","emu","octopus").tag("pet").s).tag("list")}. 
I've always wanted ${_.a.pick.tags.pet.tag("my_pet")}.  
I wish I could take home all the ${tags=>tags.list.text},
but I should just get ${tags=>tags.my_pet.text}.`

var data={available:{animal:"cat"}}

var example4=_`${tags=>_.cap(tags.pet.data.available.animal).s}! I would love ${tags=>_.a(tags.pet.data.available.animal)}!`
.cache("pet")
.populate(data)


var demo=function()
{
   example1.say().replace("#paragraph1")
   example2.say().replace("#paragraph2")
   example3.say().replace("#paragraph3")
   example4.say().replace("#paragraph4")
}