cvar_as_hashref mixin, um cvars gut zu serialisieren
authorSven Schöling <s.schoeling@linet-services.de>
Tue, 25 Mar 2014 12:47:42 +0000 (13:47 +0100)
committerSven Schöling <s.schoeling@linet-services.de>
Wed, 9 Apr 2014 15:19:54 +0000 (17:19 +0200)
SL/DB/Helper/CustomVariables.pm

index 373a60c..839c490 100644 (file)
@@ -26,6 +26,7 @@ sub import {
   make_cvar_alias($caller_package, %params)      if $params{cvars_alias};
   make_cvar_by_configs($caller_package, %params);
   make_cvar_by_name($caller_package, %params);
+  make_cvar_as_hashref($caller_package, %params);
 }
 
 sub save_meta_info {
@@ -125,6 +126,24 @@ sub make_cvar_by_name {
   }
 }
 
+sub make_cvar_as_hashref {
+  my ($caller_package, %params) = @_;
+
+  no strict 'refs';
+  *{ $caller_package . '::cvar_as_hashref' } = sub {
+    my ($self) = @_;
+    @_ > 1 and croak "not an accessor";
+
+    my $cvars_by_config = $self->cvars_by_config;
+
+    my %return = map {
+      $_->config->name => { value => $_->value_as_text, is_valid => $_->is_valid }
+    } @$cvars_by_config;
+
+    return \%return;
+  }
+}
+
 sub _all_configs {
   my (%params) = @_;