Um representer é um software que recebe a solução de um estudante e retorna uma representação normalizada dela. Depois usamos essas representações para agilizar o feedback automatizado e a classificação.
A melhor forma de explicar representers é com um exemplo. Vamos supor que dois estudantes enviem duas submissões para o exercício hello-world em Ruby:
# Student 1's submission
def self.hello(name = 'World')
"Hello, #{name}!"
end
# Student 2's submission
def self.hello(nom = 'World')
"Hello, #{nom}!"
end
Embora o código dessas soluções seja diferente (indentação, nomes de variáveis e sintaxe de string diferentes), elas são essencialmente as mesmas. Então, ao criar uma representação normalizada delas, podemos tratá-las como iguais para efeito de fornecer feedback. Isso reduz drasticamente a quantidade de mentoria duplicada que precisa acontecer.
Cada trilha mantém seu próprio representer, específico para aquela linguagem. Não existe uma saída padronizada: só exigimos que cada trilha seja internamente consistente.
Se você quiser criar um representer, dê uma olhada na documentação de representers para mais informações.