dsl formação
# coding: utf-8
class Formacao
def initialize(nome, &bloco)
@nome = nome
@formacao = {
:tecnico => nil,
:graduacao => {},
:certificacoes => []
}
instance_eval(&bloco)
end
def tecnico(curso)
@formacao[:tecnico] = curso
end
def graduacao(detalhe)
@formacao[:graduacao] = detalhe
end
def certificacao(nome)
@formacao[:certificacoes] << nome
end
def to_s
mensagem = <<-EOF
Nome: #{@nome}
Colegial Técnico: #{ @formacao[:tecnico] }
Graduação:
#{ @formacao[:graduacao].collect{|k, v| "\t\t" + k + ": " + v }.join("\n\t") }
Certificações:
#{ @formacao[:certificacoes].collect{|v| "\t\t" + v }.join("\n\t") }
EOF
end
end
def formacao(nome, &bloco)
Formacao.new(nome, &bloco)
end
f = formacao "Diego Dias" do
tecnico "Processamento de Dados"
graduacao "Curso" => "Sistemas de Informação", "Situação" => "Concluido", "Faculdade" => "Universidade Anhembi Morumbi", "Período" => "2004 - 2008"
certificacao "MCAD - Microsoft Certified Applications Developer"
certificacao "MCTS - Microsoft Certified Technology Specialist WCF 4.0 - Charter Member"
certificacao "CSM - Certified Scrum Master"
end
print f