diegodfsd
8/5/2011 - 3:13 AM

dsl formação

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