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 )