ODF-lpOD_Helper

 view release on metacpan or  search on metacpan

lib/ODF/lpOD_Helper.pm  view on Meta::CPAN

    my $right_count = $existing_count - $offset;
    confess ivis 'offset $offset exceeds existing text:s count($existing_count)'
      if $right_count < 0;
    $text_elt->set_attribute('c', $offset); # possibly zero
    my $result = $text_elt->insert_element("text:s", position => NEXT_SIBLING);
    $result->set_attribute('c', $right_count); # possibly zero
    return $result
  }
  elsif ($text_elt->tag eq '#PCDATA') {
    my $existing_len = length($text_elt->text);
    confess ivis 'offset $offset exceeds existing pcdata length ($existing_len)'
      if $offset > $existing_len;
    return $text_elt->split_at($offset);
  }
  elsif ($offset == 0) {
#my $para = $elt->passes(PARA_FILTER) ? $elt : $elt->parent(PARA_FILTER);
#btw dvis 'BEFORE TRANSMUTE $para = ',fmt_tree($para);
#btw dvis 'BEFORE TRANSMUTE $elt = ',fmt_tree($elt);
    my $result =
         $text_elt->insert_element($text_elt->clone, position => NEXT_SIBLING);
#btw dvis '$result ',fmt_tree($result);

t/47_Hsplit_element_at.t  view on Meta::CPAN


my $para = odf_create_paragraph;
#$body->insert_element($para);
my $str = "A     B\t\tC\n\nDEF";
$para->set_text($str);
say "para=",fmt_tree($para) if $debug;
is($para,
   hash {
     field first_child => hash {
       field gi => $XML::Twig::gi2index{"#PCDATA"};
       field pcdata => match qr/^A ?/;
       field next_sibling => hash {
         field gi => $XML::Twig::gi2index{"text:s"};
         field att => hash { field "text:c" => in_set(4,5); etc };
         field next_sibling => hash {
           field pcdata => "B";
           field next_sibling => hash {
             field gi => $XML::Twig::gi2index{"text:tab"};
             field next_sibling => hash {
               field next_sibling => hash {
                 field next_sibling => hash {
                   field gi => $XML::Twig::gi2index{"text:line-break"};
                   etc };
                 etc };
               etc };
             etc };

t/47_Hsplit_element_at.t  view on Meta::CPAN

  );
  eval { my ($n,$o) = $emptypara->Hoffset_into_vtext(1); };
  is($@, T, "empty->Hoffset_into_vtext(last+2) throws");
}

####################### TEST Hsplit_element_at ##################

{ 
  my $tpara = odf_create_paragraph(); 
  $tpara->set_text(""); 
  my $empty_pcdata = $tpara->first_child;
  my $nelt = $empty_pcdata->Hsplit_element_at(0);
  ok($empty_pcdata->tag eq "#PCDATA" && $empty_pcdata->Hget_text eq ""
      &&
     $nelt->tag eq "#PCDATA" && $nelt->Hget_text eq ""
      && $empty_pcdata != $nelt,
     "emptypcdata->Hsplit_element_at(0)"
  );
  eval{ $nelt = $empty_pcdata->Hsplit_element_at(1) };
  is($@, T, "empty_pcdata->Hsplit_element_at(1) throws");
  say fmt_tree($tpara) if $debug;
  $tpara->normalize;
  fail() if $tpara->first_child; # both empty children should have been deleted
}

{ 
  my $tpara = odf_create_paragraph(); 
  $tpara->set_text("     "); 
  my $m = $tpara->Hsearch(qr/.*/); # either text:s{5} or " " + text:s{4}
  say fmt_match($m) if $debug;



( run in 0.494 second using v1.01-cache-2.11-cpan-454fe037f31 )