Changeset 77 in text-formbuilder


Ignore:
Timestamp:
03/25/05 13:20:40 (20 years ago)
Author:
peichman
Message:

fixed some typos in the docs
rearranged internals in the grammar, plus a minor bugfix for the skip pattern of inline lists (now allows padding space around the comma)
added new test scripts to the MANIFEST

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/MANIFEST

    r64 r77  
    44README 
    55t/Text-FormBuilder.t 
     6t/pod-coverage.t 
     7t/01-field.t 
    68bin/fb.pl 
    79lib/Text/FormBuilder.pm 
  • trunk/lib/Text/FormBuilder.pm

    r74 r77  
    821821your server, and you don't have to parse the form spec each time you want  
    822822to display your form. The generated module is a subclass of L<CGI::FormBuilder>, 
    823 that will passa long any constructor arguments to FormBuilder, and set up 
     823that will pass along any constructor arguments to FormBuilder, and set up 
    824824the fields for you. 
    825825 
     
    983983=item C<!field> 
    984984 
    985 B<DEPRACATED> Include a named instance of a group defined with C<!group>. 
     985B<DEPRECATED> Include a named instance of a group defined with C<!group>. 
    986986 
    987987=item C<!title> 
     
    12231223=head2 Language/Parser 
    12241224 
    1225 Deprecate the C<!field> directive 
     1225Make sure that multiple runs of the parser don't share data. 
    12261226 
    12271227Allow renaming of the submit button; allow renaming and inclusion of a  
     
    12391239=head2 Code generation/Templates 
    12401240 
     1241Expose some of the currently private functions to be able to get the generated 
     1242code text directly, without printing. 
     1243 
    12411244Revise the generated form constructing code to use the C<fieldopts> 
    12421245option to C<< FB->new >>; will require FB 3.02 to run. 
  • trunk/lib/Text/FormBuilder/grammar

    r74 r77  
     1# line directives 
     2# block directives 
     3# field lines 
     4# comments 
     5 
    16{ 
    27    #$::RD_TRACE = 1; 
    38    my ( 
    4         $context,      # line or group 
    59        @sections,     # master data structure 
    610        $section_head, 
    711        $section_id, 
    812        @lines,        # lines in each section 
    9         $title, 
    10         $author, 
    11         $description, 
    1213        %lists, 
    1314        %patterns, 
     
    2425        $cols, 
    2526    ); 
    26     $context = 'line'; 
     27    my $context = 'line';       # start in line context by default 
     28    my %formspec; 
     29     
     30    # TODO: helper sub? 
     31    sub alert ($) { 
     32        warn '[' . (split(/::/, (caller(1))[3]))[-1] . '] ' . shift() . "\n"; 
     33    } 
    2734} 
    2835 
    29 form_spec: (list_def | description_def | validate_def | group_def | note | line)(s) 
     36form_spec: 
     37    {  
     38        %formspec = ();  # clear the old formspec data 
     39    } 
     40    (list_def | description_def | group_def | note | line)(s) 
    3041    { 
    3142        # grab the last section, if there is any 
     
    3950        } 
    4051         
    41         $section_id = $item{identifier}; 
    42         $section_head = $item[3]; 
    43         @lines = (); 
    4452        $return = { 
    45             title    => $title, 
    46             author   => $author, 
    47             description => $description, 
     53            title    => $formspec{title}, 
     54            author   => $formspec{author}, 
     55            description => $formspec{description}, 
    4856            lists    => \%lists, 
    4957            patterns => \%patterns, 
     
    6068 
    6169dynamic_list: '&' <perl_codeblock> 
    62     { 
    63         warn "[Text::FormBuilder] Dynamic lists have been removed from the formspec grammar"; 
    64     } 
     70    { warn "[Text::FormBuilder] Dynamic lists have been removed from the formspec grammar"; } 
    6571 
    6672description_def: '!description' block 
    6773    { 
    68         warn "[Text::FormBuilder] Description redefined at input text line $thisline\n" if defined $description; 
    69         $description = $item{block}; 
    70     } 
    71  
    72 validate_def: '!validate' var_name <perl_codeblock> 
    73     { $subs{$item{var_name}} = eval "sub $item[3]" } 
     74        warn "[Text::FormBuilder] Description redefined at input text line $thisline\n" if defined $formspec{description}; 
     75        $formspec{description} = $item{block}; 
     76    } 
    7477 
    7578group_def: '!group' { $context = 'group' } var_name '{' field_line(s) '}' { $context = 'line' } 
     
    8285note: '!note' block  { push @lines, [ 'note', $item{block} ]; } 
    8386 
    84  
    85 #TODO: allow \ escape for [] {} in these blocks 
    8687 
    8788# curly-brace delimited block, that can contain properly 
     
    109110title: '!title' /.*/ 
    110111    { 
    111         warn "[Text::FormBuilder] Title redefined at input text line $thisline\n" if defined $title; 
    112         $title = $item[2]; 
     112        warn "[Text::FormBuilder] Title redefined at input text line $thisline\n" if defined $formspec{title}; 
     113        $formspec{title} = $item[2]; 
    113114    } 
    114115 
    115116author: '!author' /.*/ 
    116117    { 
    117         warn "[Text::FormBuilder] Author redefined at input text line $thisline\n" if defined $author; 
    118         $author = $item[2]; 
     118        warn "[Text::FormBuilder] Author redefined at input text line $thisline\n" if defined $formspec{author}; 
     119        $formspec{author} = $item[2]; 
    119120    } 
    120121 
     
    147148group_field: '!field' group_name name label(?) 
    148149    { 
    149         warn "[Text::FormBuilder] The !field directive has been DEPRECATED (input file line $thisline). Please use the name:GROUP style"; 
     150        warn "WARNING line $thisline: The '!field' directive has been DEPRECATED. Use the 'name:GROUP' style instead.\n"; 
    150151        push @lines, [ 'group', { name => $item{name}, label => $item{'label(?)'}[0], group => $item{group_name} } ]; 
    151152    } 
     
    227228limit: /\d+/ 
    228229 
    229 label: '|' (simple_multiword | quoted_string) { $item[2] } 
     230label: '|' string { $item[2] } 
    230231 
    231232hint: bracket_block 
     
    237238other: '+' 'other' { 1 } 
    238239 
    239 default: '=' (simple_multiword | quoted_string) { $item[2] } 
     240default: '=' string { $item[2] } 
     241 
     242string: simple_multiword | quoted_string 
    240243 
    241244# for simple multiword values not involving punctuation 
     
    249252option_list: options | list_var 
    250253     
    251 options: '{' option(s /,/) '}' 
     254options: '{' option(s /\s*,\s*/) '}' 
    252255 
    253256list_var: /@[A-Z_]+/ { $list_var = $item[1] } 
    254257 
    255 option: (simple_multiword | quoted_string) display_text(?) 
     258option: string display_text(?) 
    256259    { push @options, { $item[1] => $item{'display_text(?)'}[0] } } 
    257260 
Note: See TracChangeset for help on using the changeset viewer.