Описание rewidget:

  Автор -- Arvid

  Версия -- $Id: rewidget.txt 35330 2008-01-13 09:03:40Z cray $

  URL -- $URL: https://code.keysolutions.ru/svn/ks.schema/tags/ks.schema-1.0.2/src/ks/schema/textline/browser/rewidget.txt $

  Это полный бред. И подлежит немедленному удалению.
  Этот же функционал реализован в zope.formlib.interfacesf
  А вот с библиотекой выражений было бы очень хорошо.
  Но только обязательно надо реализовывать для полей, а не для виджетов
  
  Аннотация:

    Продукт предоставляет виджет для проверки поля на соответствие регулярному(ым) выражению(ям)

  Идея реализации:

    Виджет наследуется от zope.app.form.browser.textwidgets.TextWidget, 
    перекрывая метод getInputValue.
    
    Параметры:
    
      reObj -- откомпилированный объект с регулярным выражением;
      
      exceptionRE -- ошибка, отнаследованная от zope.schema.interfaces.ValidationError
                     c определенным __doc__, описывающим необходимый формат.
    
    TODO: можно передавать параметры через zcml
    TODO: сделать регекспов несколько
    TODO: сделать библиотеки регекспов
    
    Уже есть несколько частных использований:
    
      EmailWidget -- корректность адреса эл. почты
      
      NameWidget -- корректность псевдонима
    
    Способ использования:
    
      1. Регулярное выражение:
        
        firstnameConstraint = re.compile(u'^[а-яА-Яa-zA-Z]*$', flags=re.U)
      
      2. Ошибка:
      
        class NotValidFirstName(ValidationError):
            """ Имя должно состоять из букв латиницы или кириллицы"""
      
      3. Объявление класса:
      
          class FirstNameWidget(WidgetREBase):
            """first name widget"""
            reObj = firstnameConstraint
            exceptionRE = NotValidFirstName
            
      4. zcml:
      
        <widget
          field="firstname"
          class=".widget.FirstNameWidget"
        />
                                        