| line | true | false | branch | 
 
| 43 | 0 | 1 | unless $ruleset_name =~ qr/ ^ [\w.:][\w.:-]* $ /sx | 
 
| 64 | 0 | 4 | unless defined $arg | 
 
| 70 | 2 | 0 | unless (ref $arg or $arg =~ qr/^>>/s) | 
 
| 80 | 1 | 1 | if ($pending_rule) { } | 
 
|  | 0 | 1 | elsif (@pending_doc) { } | 
 
| 82 | 1 | 0 | if ($ds->check_rule($pending_rule, \@pending_doc)) | 
 
| 104 | 0 | 2 | if (not ref $arg) { } | 
 
|  | 0 | 2 | elsif (ref $arg ne 'HASH') { } | 
 
| 122 | 0 | 2 | if ($arg->{'substitute'}) | 
 
| 125 | 0 | 0 | unless ref $arg->{'substitute'} eq 'HASH' | 
 
| 127 | 0 | 0 | if keys %$arg > 1 | 
 
| 144 | 0 | 0 | $arg->{'mandatory'} ? : | 
 
|  | 1 | 0 | $arg->{'param'} ? : | 
 
|  | 1 | 1 | $arg->{'optional'} ? : | 
 
| 147 | 0 | 2 | unless $ruletype | 
 
| 157 | 0 | 2 | defined $arg->{'valid'} ? : | 
 
|  | 0 | 2 | ref $arg->{'valid'} eq 'ARRAY' ? : | 
 
| 164 | 0 | 0 | if ref $v eq 'CODE' | 
 
| 165 | 0 | 0 | if $v eq 'FLAG_VALUE' or $v eq 'ANY_VALUE' | 
 
| 169 | 0 | 0 | if (ref $v) { } | 
 
|  | 0 | 0 | elsif ($ds->set_defined($v)) { } | 
 
| 184 | 0 | 0 | if $diag_mode | 
 
| 187 | 0 | 0 | unless ($arg->{'no_set_doc'}) | 
 
| 206 | 0 | 2 | if ($arg->{$ruletype} =~ qr/ ^ \s* SPECIAL \( ( \s* \w+ \s* ) \) \s* $ /sx) { } | 
 
|  | 0 | 2 | elsif ($arg->{$ruletype} =~ qr/ SPECIAL | [()] /sx) { } | 
 
| 214 | 0 | 0 | if ($special_arg eq 'all' or $special_arg eq 'single') { } | 
 
|  | 0 | 0 | elsif ($special_arg eq 'show') { } | 
 
| 224 | 0 | 0 | unless (@{$ds->{'vocab_list'};} > 1) | 
 
| 234 | 0 | 0 | if $ds->{'format'}{$f}{'uses_header'} | 
 
| 239 | 0 | 0 | if $ds->{'special'}{$_} | 
 
|  | 0 | 0 | $special_arg eq 'all' ? : | 
 
| 258 | 0 | 0 | if ($ds->{'special'}{'show'}) { } | 
 
| 279 | 0 | 0 | unless defined $Web::DataService::SPECIAL_PARAM{$special_arg} | 
 
| 283 | 0 | 0 | unless ($ds->{'special'}{$special_arg}) | 
 
| 295 | 0 | 0 | if defined $arg->{'errmsg'} | 
 
| 296 | 0 | 0 | if defined $arg->{'warn'} | 
 
| 297 | 0 | 0 | if defined $arg->{'clean'} | 
 
| 299 | 0 | 0 | if defined $arg->{'alias'} and $arg->{'alias'} ne $pending_rule->{'optional'} | 
 
| 322 | 1 | 0 | if ($pending_rule) | 
 
| 324 | 1 | 0 | if ($ds->check_rule($pending_rule, \@pending_doc)) | 
 
| 333 | 0 | 1 | if ($diag_mode) | 
 
| 348 | 0 | 0 | if (ref $r eq 'HASH') { } | 
 
| 351 | 0 | 0 | if $copy->{'valid_save'} | 
 
| 383 | 0 | 1 | if $error_msg | 
 
| 396 | 2 | 0 | unless $rr->{'special'} | 
 
| 397 | 0 | 0 | if $rr->{'special'} eq 'IGNORE' | 
 
| 400 | 0 | 0 | unless @$doc_ref | 
 
| 418 | 0 | 0 | unless $ds->{'special'}{$param} | 
 
| 428 | 0 | 0 | if ref $ds->{'special_alias'}{$param} eq 'ARRAY' | 
 
| 432 | 0 | 0 | if ($param eq 'limit') { } | 
 
|  | 0 | 0 | elsif ($param eq 'offset') { } | 
 
|  | 0 | 0 | elsif ($param eq 'count' or $param eq 'datainfo' or $param eq 'header') { } | 
 
|  | 0 | 0 | elsif ($param eq 'linebreak') { } | 
 
|  | 0 | 0 | elsif ($param eq 'vocab') { } | 
 
| 463 | 0 | 0 | if ($param eq 'selector') { } | 
 
|  | 0 | 0 | elsif ($param eq 'format') { } | 
 
|  | 0 | 0 | elsif ($param eq 'path') { } | 
 
|  | 0 | 0 | elsif ($param eq 'document') { } | 
 
|  | 0 | 0 | elsif ($param eq 'show') { } | 
 
|  | 0 | 0 | elsif ($param eq 'limit') { } | 
 
|  | 0 | 0 | elsif ($param eq 'offset') { } | 
 
|  | 0 | 0 | elsif ($param eq 'count') { } | 
 
|  | 0 | 0 | elsif ($param eq 'datainfo') { } | 
 
|  | 0 | 0 | elsif ($param eq 'vocab') { } | 
 
|  | 0 | 0 | elsif ($param eq 'header') { } | 
 
|  | 0 | 0 | elsif ($param eq 'linebreak') { } | 
 
|  | 0 | 0 | elsif ($param eq 'save') { } | 
 
| 505 | 0 | 0 | if (defined $default and $default > 0) | 
 
| 540 | 0 | 0 | if $info->{'data_provider'} | 
 
| 542 | 0 | 0 | if $info->{'data_source'} | 
 
| 544 | 0 | 0 | if $info->{'data_license'} | 
 
| 599 | 0 | 0 | if $ds->node_attr('/', 'default_save_filename') | 
 
| 631 | 0 | 0 | if (ref $ds->{'RS_SUBST'}{$rs_name} eq 'HASH') |