pb (NÃO COMPROMISSO), 125 bytes
^w[B!0]{>}w[B!45]{<w[B=10]{t[T+1]b[0]}}v[X]vw[T!0]{vb[124]<[X]b[124]>w[B=0]{>}t[T-1]}w[X!1]{<b[95]}<w[B!0]{^}w[Y!-1]{b[47]>^}
A versão do pbi que você precisa para executar esta resposta é mais recente que a pergunta. Teria funcionado em versões mais antigas, exceto que eu nunca consegui permitir novas linhas de entrada. Ah bem.
Primeiro, isso determina a altura da caixa contando novas linhas na entrada. Uma vez que ele sabe disso, vai para o local Y do lado direito da caixa, desce até onde precisa estar e desenha as paredes e o chão, terminando com a tampa.
Confira esta animação divertida!
A pausa longa é o pincel passando por cima da entrada.
Ungolfed:
^w[B!0]{>} # Go to the end of the input
w[B!45]{< # Head left until hitting a hyphen
w[B=10]{ # For each newline on the way:
t[T+1] # Count it
b[0] # Delete it
}
}
v[X] # Move down as far as it is right + the number of \n
v # ...plus one
w[T!0]{ # While the counting variable is nonzero:
vb[124] # Go down and draw a pipe
<[X]b[124] # Draw a pipe on the left as well
>w[B=0]{>} # Go back to the right side
t[T-1] # Decrement variable
}
w[X!1]{<b[95]} # Draw the bottom of the box
<w[B!0]{^} # Go up the left wall
w[Y!-1]{b[47]>^} # Go up and right, drawing the lid