FreeHAL
view release on metacpan or search on metacpan
AI/FreeHAL/Config.pm view on Meta::CPAN
1415161718192021222324252627282930313233343536373839404142434445464748495051525354
}
*{
$caller
.
'::'
.
$opt_ref
->{read_config}} = \
&AI::FreeHAL::Config::Hash::read_config
;
*{
$caller
.
'::'
.
$opt_ref
->{write_config}} = \
&AI::FreeHAL::Config::Hash::write_config
;
}
package
AI::FreeHAL::Config::Gap;
use
AI::FreeHAL::Class;
### [caller 0]
{
sub
serialize {
return
"\n"
}
sub
update {}
sub
extend {}
sub
copy_to {}
}
package
AI::FreeHAL::Config::Comment;
use
AI::FreeHAL::Class;
{
my
%text_of
: ATTR( :init_arg<text> );
sub
serialize {
my
(
$self
) =
@_
;
return
$text_of
{ident
$self
};
}
sub
append_comment {
my
(
$self
,
$new_text
) =
@_
;
$text_of
{ident
$self
} .=
$new_text
;
}
sub
update {}
sub
extend {}
sub
copy_to {}
}
package
AI::FreeHAL::Config::Keyval;
use
AI::FreeHAL::Class;
{
my
%key_of
: ATTR( :init_arg<key> :get<key> );
my
%vals_of
: ATTR;
my
%deleted_of
: ATTR;
AI/FreeHAL/Config.pm view on Meta::CPAN
888990919293949596979899100101102103104105106107108
s/ (?!\Z) \n /\n
$keyspace
$sep
/gxms
for
@vals
;
$serialization
.=
$comm
||
q{}
;
$serialization
.=
join
q{}
,
map
{
"$key$sep$_\n"
}
@vals
;
}
return
$serialization
;
}
sub
update {
my
(
$self
,
$hash_ref
,
$updated_ref
) =
@_
;
my
$ident
= ident
$self
;
my
$key
=
$key_of
{
$ident
};
if
(!
exists
$hash_ref
->{
$key
}) {
$deleted_of
{
$ident
} = 1;
}
else
{
my
$val
=
$hash_ref
->{
$key
};
AI/FreeHAL/Config.pm view on Meta::CPAN
188189190191192193194195196197198199200201202203204205206207208
$self
->ensure_gap()
if
!
$is_anon
;
for
my
$comp
( @{
$components_of
{
$ident
}} ) {
$serialization
.=
$comp
->serialize(
$def_sep
,
$name_of
{
$ident
});
}
return
$serialization
;
}
sub
update {
my
(
$self
,
$hash_ref
,
$updated_ref
) =
@_
;
my
$ident
= ident
$self
;
if
(!
defined
$hash_ref
) {
$deleted_of
{
$ident
} = 1;
return
;
}
for
my
$comp
( @{
$components_of
{
$ident
}} ) {
$comp
->update(
$hash_ref
,
$updated_ref
) or
next
;
( run in 0.271 second using v1.01-cache-2.11-cpan-e9199f4ba4c )