[LON-CAPA-cvs] cvs: loncom /homework/cleanxml post_xml.pm xml_to_loncapa.pm

damieng damieng at source.lon-capa.org
Thu Nov 10 16:53:56 EST 2016


damieng		Thu Nov 10 21:53:56 2016 EDT

  Modified files:              
    /loncom/homework/cleanxml	post_xml.pm xml_to_loncapa.pm 
  Log:
  improved <br><br> conversion
  
Index: loncom/homework/cleanxml/post_xml.pm
diff -u loncom/homework/cleanxml/post_xml.pm:1.10 loncom/homework/cleanxml/post_xml.pm:1.11
--- loncom/homework/cleanxml/post_xml.pm:1.10	Thu Nov 10 19:48:22 2016
+++ loncom/homework/cleanxml/post_xml.pm	Thu Nov 10 21:53:56 2016
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Third step to clean a file.
 #
-# $Id: post_xml.pm,v 1.10 2016/11/10 19:48:22 damieng Exp $
+# $Id: post_xml.pm,v 1.11 2016/11/10 21:53:56 damieng Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1858,6 +1858,18 @@
           push(@new_children, $doc->createElement('p'));
         }
         $p = undef;
+        # ignore the next node if it is a br (the paragraph default margin will take as much space)
+        # (ignoring whitespace)
+        while (defined $next && $next->nodeType == XML_TEXT_NODE && $next->nodeValue =~ /^[ \t\f\n\r]*$/) {
+          my $next2 = $next->nextSibling;
+          $node->removeChild($next);
+          $next = $next2;
+        }
+        if (defined $next && $next->nodeType == XML_ELEMENT_NODE && $next->nodeName eq 'br') {
+          my $next2 = $next->nextSibling;
+          $node->removeChild($next);
+          $next = $next2;
+        }
       } elsif ($child->nodeType == XML_ELEMENT_NODE && string_in_array(\@inline_like_block, $child->nodeName)) {
         # inline_like_block: use the paragraph if there is one, otherwise do not create one
         if (defined $p) {
@@ -2034,6 +2046,20 @@
               if (!defined $left || !$left_needs_p) {
                 $replacement->appendChild($middle);
               }
+              # ignore the next node if it is a br (the paragraph default margin will take as much space)
+              my $first_right;
+              if (defined $right) {
+                $first_right = $right->firstChild;
+                # ignore non-nbsp whitespace
+                while (defined $first_right && $first_right->nodeType == XML_TEXT_NODE &&
+                    $first_right->nodeValue =~ /^[ \t\f\n\r]*$/) {
+                  $first_right = $first_right->nextSibling;
+                }
+              }
+              if (defined $first_right && $first_right->nodeType == XML_ELEMENT_NODE &&
+                  $first_right->nodeName eq 'br') {
+                $right->removeChild($first_right);
+              }
             } else {
               fix_paragraphs_inside($n, $all_block);
               $replacement->appendChild($n);
Index: loncom/homework/cleanxml/xml_to_loncapa.pm
diff -u loncom/homework/cleanxml/xml_to_loncapa.pm:1.9 loncom/homework/cleanxml/xml_to_loncapa.pm:1.10
--- loncom/homework/cleanxml/xml_to_loncapa.pm:1.9	Thu Jan 21 22:11:13 2016
+++ loncom/homework/cleanxml/xml_to_loncapa.pm	Thu Nov 10 21:53:56 2016
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # convert_file takes a well-formed XML file content and converts it to LON-CAPA syntax.
 #
-# $Id: xml_to_loncapa.pm,v 1.9 2016/01/21 22:11:13 damieng Exp $
+# $Id: xml_to_loncapa.pm,v 1.10 2016/11/10 21:53:56 damieng Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -311,6 +311,9 @@
           # we only add a br if there is something after
           my $br = $doc->createElement('br');
           $parent->insertBefore($br, $next);
+          # add another br to make up for the p margin
+          $br = $doc->createElement('br');
+          $parent->insertBefore($br, $next);
         }
       }
     }




More information about the LON-CAPA-cvs mailing list