$e->{OutTop} = $1 eq 'nothing' ? '' : $1;
} elsif (# parse: expect other wordish things to be comments
m{^(?!or\b)\w{2,} }) {
+ } elsif (m/^$/) {
+ } else {
+ confess "unk rhs $_ ?";
}
$e->{CQ} = $in_changequote;
+ # adhoc: rely on this specific section title
+ $e->{DD} = $csection =~ m{^while dollar[- ]doubling}i;
} else {
confess "$_ ?";
}
$rubric =~ s/\&/AMP /g;
$rubric =~ s/\$/DOLLAR /g;
$rubric =~ s/NEWQUOTE/NEW_QUOTE /g;
- my $f = $e->{In} =~ m/\n/
- ? "\n# %s:\n%s\n\n"
- : "%-30s: %s.\n";
+ my ($f,$prubric) = $rubric =~ m/^(.*)\n/
+ ? ("\n# %s:\n%s\n\n", $1)
+ : ("%-30s: %s .\n", $rubric);
my $o;
$o = $e->{OutTop} if $dir_prefix eq '';
$o //= $e->{Out};
$o =~ s{/sub/dir}{} if $dir_prefix eq '' && !defined $e->{OutTop};
$o = $omap->($o, $e);
- oi sprintf $f, $rubric, $e->{In};
- oo sprintf $f, $rubric, $o;
+ oi sprintf $f, $prubric, $e->{In};
+ oo sprintf $f, $prubric, $o;
}
oi $end;
oh "${senl}# ----- $what ends -----\n";
oh "# doctest starts $dir_prefix\n";
write_permode($dir_prefix,
'','','', 'normal',
- sub { !$_[0]{CQ} } );
+ sub { !$_[0]{DD} && !$_[0]{CQ} } );
+ write_permode($dir_prefix,
+ '&$+', '&$-', "\n",
+ 'dollar doubling',
+ sub {
+ my ($e) = @_;
+ return 0 if $e->{CQ};
+ return $e->{DD} || !grep {
+ # If there are two entries with the same In,
+ # use only the one from the `while dollar
+ # doubling' section. So entries there override
+ # entries in the rest o the file.
+ $_ ne $e && $_->{In} eq $e->{In}
+ } @exp;
+ },
+ sub {
+ $_=$_[0];
+ s/\$/\$\$/g unless $_[1]{DD};
+ $_;
+ } );
write_permode($dir_prefix,
"&:changequote NEWQUOTE\n",
"NEWQUOTE:changequote &\n",