Есть ли хороший язык / синтаксис для проверки полей, который мы можем использовать повторно? - PullRequest
0 голосов
/ 11 августа 2010

Я работаю над веб-приложением (использующим 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')

Я просто не хочу придумывать синтаксис, если где-то есть хороший.

Кто-нибудь видел что-то подобное? На любом языке ... но я особенно ценю краткость и читабельность.

1 Ответ

2 голосов
/ 11 августа 2010

Вы можете использовать списки.

@validate(user_id=[int, min(1)], user_name=[unicode,required,max(40)])

И каждый элемент может быть функцией (или классом / объектом), которая выполняется с соответствующим полем в качестве аргумента.Если возникает ошибка, проверка не проходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...