Skip to content

Commit

Permalink
Fix #110
Browse files Browse the repository at this point in the history
  • Loading branch information
Lobz committed May 16, 2024
1 parent f7acfb4 commit be009ae
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions docker/R/corretor.R
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@ connect <- function (dbuser, dbpass, dbname) {
con<- dbConnect(MySQL(), user=dbuser, password=dbpass, dbname=dbname, host='mysql')
return (con);
}
# Construida na chamada PHP como
# Construida na chamada PHP como
# con <- connect($DBUSER, $DBPASS, $DBNAME)

# Funcao acessoria para testar se um objeto MySQL nao tem resultados
no.results <- function(object) {
length(object[,1]) == 0
}

# corretoR recebe:
# texto
# corretoR recebe:
# texto
# E devolve um um vector logico com o resultado dos testes
# Caso o codigo tenha erros de sintaxe, retorna NULL
corretoR <- function (id.exerc, texto) {
Expand All @@ -29,14 +29,16 @@ corretoR <- function (id.exerc, texto) {
paste("SELECT condicao FROM testes
WHERE exercicio_id=", id.exerc,
" ORDER BY id ASC", sep=""));
precondi <- dbGetQuery(con,
paste("SELECT precondicoes FROM exercicios
precondi <- dbGetQuery(con,
paste("SELECT precondicoes FROM exercicios
WHERE id=", id.exerc, sep=""));

# Executa as precondicoes
if(!no.results(precondi)) eval(parse(text=precondi), envir=corrEnv);

# Executa o texto da resposta
# Evita que o codigo retorne matrizes
texto <- paste0(texto,";TRUE;");
# try pega erros de sintaxe
getError <- try(eval(parse(text=texto), envir=corrEnv));
if (class(getError) == "try-error") return (NULL);
Expand All @@ -47,7 +49,7 @@ corretoR <- function (id.exerc, texto) {
for (i in 1:notaMax) {
# A avaliacao pode retornar TRUE, FALSE ou erro
# No momento, erro esta sendo tratado como FALSE
# Edit fev 2013:
# Edit fev 2013:
# O [1] no final tem a funcao de evitar condicoes com comprimento 0.
# Agora essas condicoes se tornam [1] NA, que serao transformados em FALSE abaixo
notas[i] <- (try(eval(parse(text=testes[i,1]), envir=corrEnv))[1] == TRUE)[1];
Expand All @@ -68,7 +70,7 @@ notaR <- function (id.exerc, arquivo) {
return (nota);
}

# Exemplos:
# Exemplos:
# con <- connect('notaR', 'notaRPW', 'notaR')
# corretoR(1, "y<-1;x<-2")
# ou
Expand Down

0 comments on commit be009ae

Please sign in to comment.