DSL Receita
class Receita{
private nome
private dados
Receita(receita, Closure closure){
nome = receita
dados = ["ingredientes" : [:],
"porcoes": null,
"tempo" : null,
"preparo" : []]
closure(this)
}
def ingredientes(quantidade, nome){
dados["ingredientes"][nome] = quantidade
}
def porcoes(quantidade){
dados["porcoes"] = quantidade
}
def tempo(tempo){
dados["tempo"] = tempo
}
def preparo(instrucao){
dados["preparo"] << instrucao
}
String toString(){
"""\tNome: ${nome}
Tempo: ${ dados.tempo }
Porções: ${ dados.porcoes }
Ingredientes:
${ dados.ingredientes.collect{ it.key + ", " + it.value }.join("\r\n\t") }
Preparo:
${ dados.preparo.collect{ it }.join("\n\t") }
"""
}
}
def novo = { nome, closure ->
new Receita(nome, closure)
}
println novo("Pudim de leite", {
it.ingredientes 1, "lata de Leite MOÇA"
it.ingredientes 2, "medidas (da lata) de leite"
it.ingredientes 3, "ovos"
it.preparo "Bata todos os ingredientes do pudim no liquidificador e despeje na fôrma reservada"
it.preparo "Asse em banho-maria, em forno médio (180ºC), por cerca de 1 hora e 30 minutos"
it.preparo "Depois de frio, leve para gelar por cerca de 6 horas"
it.preparo "Desenforme e sirva a seguir"
it.porcoes 10
it.tempo "1h 30min"
})