pb (НЕКОНКУРСНЫЙ), 125 байт
^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]>^}
Версия pbi, необходимая для запуска этого ответа, новее, чем вопрос. Это работало бы в более старых версиях, за исключением того, что я никогда не удосуживался разрешить ввод новых строк. Ну что ж.
Во-первых, это определяет высоту поля путем подсчета новых строк во входных данных. Как только он узнает об этом, он идет в Y-положение правой стороны коробки, спускается туда, где он должен быть, и рисует стены и пол, заканчивая крышкой.
Проверьте эту забавную анимацию!
Длинная пауза - кисть, проходящая через вход.
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