version 1.4, 2016/01/05 18:51:08
|
version 1.7, 2016/01/20 00:41:31
|
Line 60 sub convert_file {
|
Line 60 sub convert_file {
|
my ($contents) = @_; |
my ($contents) = @_; |
|
|
my $dom_doc = XML::LibXML->load_xml(string => $contents); |
my $dom_doc = XML::LibXML->load_xml(string => $contents); |
add_outtext($dom_doc); |
my $root = $dom_doc->documentElement(); |
|
if (defined $root && $root->nodeName ne 'html') { |
|
add_outtext($dom_doc); |
|
} |
return node_to_string($dom_doc); |
return node_to_string($dom_doc); |
} |
} |
|
|
Line 78 sub node_to_string {
|
Line 81 sub node_to_string {
|
if (defined $parent->parentNode) { |
if (defined $parent->parentNode) { |
$grandparent_name = $parent->parentNode->nodeName; |
$grandparent_name = $parent->parentNode->nodeName; |
} |
} |
my @no_escape = ('m', 'script', 'display', 'parse', 'answer'); |
my @no_escape = ('m', 'script', 'style', 'display', 'parse', 'answer'); |
if (string_in_array(\@no_escape, $parent_name) && |
if (string_in_array(\@no_escape, $parent_name) && |
($parent_name ne 'answer' || |
($parent_name ne 'answer' || |
(defined $grandparent_name && |
(defined $grandparent_name && |
Line 252 sub add_endouttext {
|
Line 255 sub add_endouttext {
|
} else { |
} else { |
$parent->appendChild($endouttext); |
$parent->appendChild($endouttext); |
} |
} |
|
# replace spaces afterwards by a \n + indentation |
|
my $next = $endouttext->nextSibling; |
|
if (defined $next && $next->nodeType == XML_TEXT_NODE) { |
|
my $v = $next->nodeValue; |
|
if ($v =~ /^ /) { |
|
$v =~ s/^ +//; |
|
if ($parent->firstChild->nodeType == XML_TEXT_NODE && |
|
$parent->firstChild->nodeValue =~ /^\n +$/) { |
|
$v = $parent->firstChild->nodeValue.$v; |
|
} else { |
|
$v = "\n".$v; |
|
} |
|
$next->setData($v); |
|
} |
|
} |
} |
} |
|
|
# Convert paragraph children when one contains an inline response into content + <br> |
# Convert paragraph children when one contains an inline response into content + <br> |