Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HTML::ValidationRules #kansaipm 14

HTML::ValidationRules #kansaipm 14

Kentaro Kuribayashi

November 26, 2011
Tweet

More Decks by Kentaro Kuribayashi

Other Decks in Technology

Transcript

  1. HTML::ValidationRules
    id:antipop / @kentaro
    Kansai.pm #14

    View Slide

  2. Validator Modules
    are
    Too Complicated to
    Understand

    View Slide

  3. • FormValidtor::*
    • Class::Validotor
    • Data::Validator
    • etc.

    View Slide

  4. There’re too
    many validation
    modules around.

    View Slide

  5. I can’t learn so
    many modules.

    View Slide

  6. HTML5 Client Side
    Form Validation Spec.
    can be regarded as a
    subset / basis of
    general validation
    rules.

    View Slide

  7. View Slide

  8. Client-side Validation

    View Slide

  9. Just use it.

    View Slide

  10. HTML::ValidationRules
    Written by id:antipop
    id:wakabatan

    View Slide

  11. • Extracts validation
    rules from HTML form
    • Validate server-side
    queries with it
    • Common rules
    between client-side and
    server-side

    View Slide





  12. HTML5::ValidationRules



    maxlength="255" />

    required="required" />
    max="800" />

    textarea>





    View Slide

  13. use HTML::ValidationRules;
    my $parser = HTML::ValidationRules->new;
    my $rules = $parser->load_rules(file => 'form.html');
    # rules will be extracted as follows:
    # [
    # text => [ [ HTML_PATTERN => '[A-Za-z0-9]+' ],
    [ HTML_MAXLENGTH => 255 ] ],
    # url => [ HTML_URL => [ HTML_MAXLENGTH =>
    255 ], 'NOT_BLANK' ],
    # email => [ HTML_EMAIL => [ HTML_MAXLENGTH =>
    255 ], 'NOT_BLANK' ],
    # number => [ HTML_NUMBER => [ HTML_MIN => 200 ],
    [ HTML_MAX => 800 ] ],
    # textarea => [ [ HTML_MAXLENGTH => 1000 ],
    'NOT_BLANK' ],
    # range => [ HTML_RANGE => [ HTML_MIN => 20 ],
    [ HTML_MAX => 80 ] ],
    # ]

    View Slide

  14. use FormValidator::Simple qw(HTML);
    my $query = CGI->new;
    my $result = FormValidator::Simple-
    >check($query => $rules);
    # or FormValidator::Lite
    use FormValidator::Lite;
    FormValidator::Lite->load_constraints('HTML');
    my $query = CGI->new;
    my $validator = FormValidator::Lite-
    >new($query);
    my $result = $validator->check(@$rules);

    View Slide

  15. Use HTML5 Client-Side
    Form Validation also for
    Server-Side Validation
    Rules

    View Slide