FreeHAL

 view release on metacpan or  search on metacpan

AI/FreeHAL/Config.pm  view on Meta::CPAN

    }
    *{$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

            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


        $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.245 second using v1.01-cache-2.11-cpan-e9199f4ba4c )