NAME CGI::FormBuilder::Source::YAML - Initialize FormBuilder from YAML file SYNOPSIS use CGI::FormBuilder; my $form = CGI::FormBuilder->new( source => { source => 'form.fb', type => 'YAML', }, ); my $lname = $form->field('lname'); # like normal DESCRIPTION This reads a YAML (YAML::Syck) file that contains FormBuilder config options and returns a hash to be fed to CGI::FormBuilder->new(). Instead of the syntax read by CGI::FormBuilder::Source::File, it uses pure YAML syntax as read by YAML::Syck. That means you fully specify the entire data structure -- the module doesn't do any fancy process- ing. LoadCode is enabled, so you can use YAML syntax for defining subrou- tines. This is convenient if you have a function that generates vali- dation subrefs, for example, I have one that can check profanity using Regexp::Common. validate: myfield: javascript: /^[\s\S]{2,50}$/ perl: !!perl/code: >- { My::Funk::fb_perl_validate({ min => 2, max => 50, profanity => 'check' })->(shift); } Well there is one exception to the "pure YAML syntax", you can specify references as string values that start with \&, \$, \@, or \% in the same way you can with CGI::FormBuilder::Source::File. If you have a full direct package reference, it will look there, otherwise it will traverse up the caller stack and take the first it finds. EXAMPLE method: GET header: 0 title: test name: test action: /test submit: test it linebreaks: 1 required: - test1 - test2 fields: - test1 - test2 - test3 - test4 fieldopts: test1: type: text size: 10 maxlength: 32 test2: type: text size: 10 maxlength: 32 test3: type: radio options: - - 1 - Yes - - 0 - No test4: options: \&test4opts sort: \&Someother::Package::sortopts validate: test1: /^\w{3,10}$/ test2: javascript: EMAIL perl: eq 'test@test.foo' test3: - 0 - 1 test4: \&test4opts You get the idea. A bit more whitespace, but it works in a standard- ized way. METHODS new() Normally not used directly; it is called from CGI::FormBuilder. Cre- ates the "CGI::FormBuilder::Source::YAML" object. Arguments from the 'source' hash passed to CGI::FormBuilder->new() will become defaults, unless specified in the file. parse($source) Normally not used directly; it is called from CGI::FormBuilder. Parses the specified source file. No fancy params -- just a single filename is accepted. If the file isn't acceptable to YAML::Syck, I suppose it will die. SEE ALSO CGI::FormBuilder, CGI::FormBuilder::Source REVISION $Id: YAML.pm 3 2006-11-02 16:00:00Z markle $ AUTHOR Copyright (c) 2006 Mark Hedges . All rights reserved. LICENSE This module is free software; you may copy it under terms of the Perl license (GNU General Public License or Artistic License.) http://www.opensource.org/licenses/index.html