Text-Restructured
view release on metacpan or search on metacpan
lib/Text/Restructured.pm view on Meta::CPAN
qq(Cannot have both argument and content.), $lit)
if $args !~ /^$/ && $content !~ /^$/;
my $subst = $parent->tag eq 'substitution_definition';
my $text = "$args$content";
if (! $parser->{_MathML}) {
eval "use Text::ASCIIMathML";
$parser->{_MathML} = new Text::ASCIIMathML unless $@;
}
chomp $text;
my $pcdata = $DOM->newPCDATA("$text\n");
my $math = $parser->{_MathML} ? $DOM->new('mathml') : $pcdata;
my $label_sub;
if ($parser->{_MathML}) {
my %mstyle = (($subst ? () : (displaystyle=>'true')),
($options->{mstyle} ?
%{$parser->HashifyFieldList($options->{mstyle})} :
()),
);
my @mstyle_attr = map(($_, $mstyle{$_}), sort keys %mstyle);
my $label = $options->{label};
$math->{attr}{mathml} = $parser->{_MathML}->TextToMathMLTree
($text, [title=>$text, xmlns=>"&mathml;",
$label ? (label=>$label) : ()],
[($parser->{opt}{D}{mstyle} ?
@{$parser->{opt}{D}{mstyle}} : ()), @mstyle_attr]);
return if ! defined $math->{attr}{mathml};
$math->append($pcdata);
if ($label) {
$label_sub =
$DOM->new('substitution_definition',
names=>[$parser->NormalizeName($label, 'keepcase')]);
my $counter = ++$parser->{TOPDOM}{equation};
my $pcdata = $DOM->newPCDATA($counter);
my $err = $parser->RegisterName($label_sub, $source, $lineno);
$label_sub->append($pcdata);
$math->{attr}{label} = $counter;
}
}
return $math if $subst;
my $para = $DOM->new('paragraph');
$para->append($math);
$para->append($label_sub) if $label_sub;
return $para;
}
lib/Text/Restructured/DOM.pm view on Meta::CPAN
my ($spaces, $tag, $attrlist) = ($1, $2, $3);
my $dom = new Text::Restructured::DOM($tag);
while ($attrlist ne '') {
if ($attrlist =~ s/^([\w:]+)=([\"\'])([^\"]*)\2\s*//) {
$dom->{attr}{$1} = $3;
}
elsif ($attrlist =~ s/^(\w+)\s*//) {
$dom->{attr}{$1} = undef;
}
else {
goto pcdata;
}
}
$tos->append($dom) if $tos;
if (@stack > 0) {
$tos = $dom;
}
else {
$main = $dom;
}
push (@stack, $dom);
push (@indents, $indent);
$tos = $dom;
}
else {
pcdata:
substr($_,0,$indents[-1]+4) = "";
chomp;
my $text = $_;
my $ncontent = @{$tos->{content}};
if ($ncontent > 0 &&
$tos->{content}[$ncontent-1]{tag} eq '#PCDATA') {
$tos->{content}[$ncontent-1]{text} .= "$text\n";
}
else {
my $dom = newPCDATA Text::Restructured::DOM("$text\n");
lib/Text/Restructured/Transforms.pm view on Meta::CPAN
$field->{lineno},
qq(Cannot extract bibliographic field "$origname" containing anything other than a single paragraph.)));
$docinfo->append($field);
}
else {
my $bib = $DOM->new($name);
%{$bib->{attr}} = (%Text::Restructured::XML_SPACE)
if $name =~ /^address$/i;
$docinfo->append($bib);
my @contents = $fb->first->contents;
my $pcdata = $contents[0];
$pcdata->{text} =~ s/\$\w+:\s*(.+?)(?:,v)?\s\$/$1/g
if defined $pcdata->{text};
$bib->append(@contents);
}
}
else {
$docinfo->append($field);
}
}
# Anything before the docinfo that's not a title, subtitle, or
# decoration has to move after it.
( run in 0.839 second using v1.01-cache-2.11-cpan-454fe037f31 )