Я работаю над веб-приложением (использующим Python & Bottle) и создаю декоратор для проверки параметров HTTP, отправляемых в GET или POST. Ранняя версия принимает вызовы, так что это:
@params(user_id=int, user_name=unicode)
... гарантирует, что user_id - это int, user_name - это строка, и оба поля существуют.
Но этого недостаточно. Я хочу иметь возможность указать, что имя_пользователя является необязательным или что оно должно быть не пустым и содержать не более 40 символов. Реализовать это достаточно просто, но я борюсь с тем, какой синтаксис будет наиболее элегантным. Кажется, что это может быть проблемой, которую кто-то решил раньше, но я не нахожу ответа. В частности, мне интересно, есть ли элегантный способ взять анализируемые строки, обеспечивающие синтаксис. Что-то вроде:
@params(user_id='int:min1', user_name='unicode:required:max40')
Я просто не хочу придумывать синтаксис, если где-то есть хороший.
Кто-нибудь видел что-то подобное? На любом языке ... но я особенно ценю краткость и читабельность.