LINUX.ORG.RU

История изменений

Исправление AntonI, (текущая версия) :

Ну он делает ровно то что должен;-)

  1. пытается отформатировать строку el по словарю tmp_scope и добавить результат в выходную последовательность.

  2. если вылетел KeyError - пытается вычислить ключ (то что было в паттерне между { }) и добавить соответствующую запись в tmp_scope, что бы в следующий заход там не падало а запись встала на место

  3. если eval упал, пишет в tmp_scope запись дублирующую ключ, что бы паттерн после подстановки не поменялся

Хотя один баг там таки есть, он ломается на незакрытых фигурных скобках - наверное это надо ловить и оставлять не отформатированным.

PS цикл нужен что бы все ключи разрешить, то есть он долбится в str.format пока в tmp_scope не будет все что нужно для успешного форматирования. В % это решалось сразу, ну что делать…

Вообще eval в try заворачивать это хорошая практика, если хочется хоть как то контролировать ситуацию.

Исходная версия AntonI, :

Ну он делает ровно то что должен;-)

  1. пытается отформатировать строку el по словарю tmp_scope и добавить результат в выходную последовательность.

  2. если вылетел KeyError - пытается вычислить ключ (то что было в паттерне между { }) и добавить соответствующую запись в tmp_scope, что бы в следующий заход там не падало а запись встала на место

  3. если eval упал, пишет в tmp_scope запись дублирующую ключ, что бы паттерн после подстановки не поменялся

Хотя один баг там таки есть, он ломается на незакрытых фигурных скобках - наверное это надо ловить и оставлять не отформатированным.

Вообще eval в try заворачивать это хорошая практика, если хочется хоть как то контролировать ситуацию.