require
5.008;
our
$VERSION
=
'2.20231031'
;
sub
_HAS_VALUE{
return
1; }
sub
safe_set_value {
my
(
$self
,
$value
) =
@_
;
$value
=
q{}
if
!
defined
$value
;
$value
=~ s/\t/ /g;
$value
=~ s/\n/ /g;
$value
=~ s/\r/ /g;
my
$remain
=
$value
;
my
$depth
= 0;
my
$nested_ok
= 1;
while
(
length
$remain
> 0 ) {
my
$first
=
substr
(
$remain
,0,1 );
$remain
=
substr
(
$remain
,1 );
$depth
++
if
$first
eq
'('
;
$depth
--
if
$first
eq
')'
;
$nested_ok
= 0
if
$depth
== -1;
}
$nested_ok
= 0
if
$depth
!= 0;
if
( !
$nested_ok
) {
$value
=~ s/\(/ /g;
$value
=~ s/\)/ /g;
}
$value
=~ s/^\s+//;
$value
=~ s/\s+$//;
$self
->set_value(
$value
);
return
$self
;
}
sub
set_value {
my
(
$self
,
$value
) =
@_
;
my
$remain
=
$value
;
my
$depth
= 0;
while
(
length
$remain
> 0 ) {
my
$first
=
substr
(
$remain
,0,1 );
$remain
=
substr
(
$remain
,1 );
$depth
++
if
$first
eq
'('
;
$depth
--
if
$first
eq
')'
;
croak
'Out of order parens in comment'
if
$depth
== -1;
}
croak
'Mismatched parens in comment'
if
$depth
!= 0;
croak
'Invalid characters in value'
if
$value
=~ /\n/;
croak
'Invalid characters in value'
if
$value
=~ /\r/;
$self
->{
'value'
} =
$value
;
return
$self
;
}
sub
build_string {
my
(
$self
,
$header
) =
@_
;
$header
->comment(
'('
.
$self
->value() .
')'
);
return
;
}
1;