Funcionamento

	Esta classe  semelhante a um interpretador de xml, ela procura por tags de template
	no texto e as deixa facilmente acessveis atravs da classe, adicionando propriedades e mtodos especiais em cada n.



	Por default so reconhecidas como tag de template as tags que seguem esse padro:
	&lt;js:NomeDaTag&gt;contedo qualquer&lt;/js:NomeDaTag&gt;.
	Mas isso  configurvel, exemplo: [NomeDaTag]contedo[/NomeDaTag].



Exemplo de template:
&lt;js:a&gt;
	&lt;js:b&gt;contedo&lt;/js:b&gt;
&lt;/js:a&gt;




	Aps carregar o template acima, voc poderia acessar o texto "contedo" usando instanciaDeTemplate.root.a.b._get()



H duas restries para a nomeao das tags:

	
		O nome da tag no pode comear com "_".
		Errado: [_minhaTag][/_minhaTag]
	
	
		No pode haver tags com o mesmo nome no mesmo nvel de indentao.
		Errado: [a][/a][a][/a].
		Correto: [a][/a][b][/b].

		Errado: [a][b][/b][b][/b][/a].
		Correto: [a][b][/b][c][/c][/a].

		Correto: [a][b][/b][a][b][/b] (o segundo [b] est em outro nvel de indentao).
	




	Para mais detalhes sobre o funcionamento, olhe o exemplo.



Construtor

	Template(content: String, [beginOpen: String = "&lt;js:"], [beginClose: String = "&gt;"], [endOpen: String = "&lt;/js:"], [endClose: String = "&gt;"])
	
		Gera uma instncia de Template.
		Restries:
		
			beginOpen no pode ser igual ao endOpen
			beginOpen no pode ser igual ao beginClose
			beginOpen no pode ser igual ao endClose
			endOpen no pode ser igual ao beginClose
			endOpen no pode ser igual ao endClose
		
		
			content texto a ser interpretado pela classe
			beginOpen define o prefixo da tag de abertura
			beginClose define o sufixo da tag de abertura
			endOpen define o prefixo da tag de fechamento
			endClose define o sufixo da tag de fechamento
		
	



Propriedades

	Template.root: Node  o n inicial, deve ser usado para obter acesso aos demais ns via "JSON".
	Template.tags: Array Array contendo referncia para todos os ns.



Mtodos do Node

	Node._get(void): String
	
		Retorna o valor do n. Se houverem tags de template no meio desse texto,
		estas sero removidas, mantendo apenas o texto padro contido dentro delas.
	
	Node._set(value: String): String
	
		Atribui um novo valor para o n e, retorna o prprio texto atribuido. Se o n tiver filhos, estes sero ignorados (no realmente removidos) no output.
		
			value texto a ser atribuido
		
	
	Node._reset([deep: Boolean = false]): void
	
		Desfaz todas as alteraes feitas no n pelos mtodos "_render" ou "_set".
		
			deep se true, os ns filhos tambm sero resetados
		
	
	Node._render(void): String
	
		A funo retorna o valor atual do n e implementa uma espcie de "fila de contedo".
		O valor atual do n  empilhado (voc tem acesso a ele atravs da propriedade "_value"), e o n passa a operar sobre uma cpia dele.
		Obs: O desenfileiramento ocorrer automaticamente no output.
	
	Node._output(void): String
	
		Retorna o texto do n e de seus ns filhos.
		 semelhante ao "_get", porm diferentemente do "_get", que s retorna o texto do n,
		ele tambm pega o texto dos ns filhos.
	



Propriedades do Node

	Node._default: String Mantm o valor inicial do n.
	Node._parent: Node Referncia para o n pai.
	Node._name: String Nome da tag.
	Node._children: Array Array contendo os ns filhos.
	Node._value: Array Mantm o texto do n em forma de uma estrutura de fila.
