| UMMF documentation | Contained in the UMMF distribution. |
UMMF::Core::Config - Configuration object.
my $config = UMMF::Core::Config->new('argv' => \@ARGV,
'env' => \%ENV,
);
my $value = $config->config_value($modelElement, $name, $default);
This class is used by bin/ummf.pl to allow the user to specify overrides for configuration.
my $value = $config->config_*($model_element, $key, $default);
None exported.
Kurt Stephens, kstephens@users.sourceforge.net 2003/10/10
$Revision: 1.6 $
my $value = $self->config_value($model_element, $key, $default);
Returns the configuration value for $key for a $model_element.
The result defaults to $default, if no match value is found.
my $value = $self->config_value_inherited($model_element, $key, $default);
Same as config_value but searches up the $model_element's namespace for a matching TaggedValue.
This allows control values to be defined in a Package that will be inherited from all ModelElements under the Package.
my $value = $self->config_value($model_element, $key, $default);
Returns true if the $self->config_value(...) is a 'true' value.
my $value = $self->config_value_inherited_true($model_element, $key, $default);
Returns true if the $self->config_value_inherited(...) is a 'true' value.
| UMMF documentation | Contained in the UMMF distribution. |
package UMMF::Core::Config; use 5.6.0; use strict; use warnings; our $AUTHOR = q{ kstephens@users.sourceforge.net 2003/10/10 }; our $VERSION = do { my @r = (q$Revision: 1.6 $ =~ /\d+/g); sprintf "%d." . "%03d" x $#r, @r };
####################################################################### use base qw(UMMF::Core::Object); ####################################################################### use UMMF::Core::Util qw(:all); use Carp qw(confess); ####################################################################### my %instance; sub instance { my ($self) = @_; $instance{ref($self) || $self}; } sub instance_or_new { my ($self, @args) = @_; $instance{ref($self) || $self} ||= $self->new(@args); } ####################################################################### sub initialize { my ($self) = @_; $self->SUPER::initialize; $self->{'override'} ||= { }; $self; } ####################################################################### sub set_value { my ($self, $val) = @_; my (@opts) = split('/', $val, 3); @opts = unshift(@opts, ('*') x (@opts - 3)); my ($kind, $name, $key) = @opts; my $value = shift; $self->override->{$kind}{$name}{$key} = $value; $self; } ####################################################################### sub _config { my ($self, $model_element, $key, $default, $proc, $kind) = @_; # $DB::single = 1 if ref($self) =~ /Profile/; $kind || confess(); my $name = ref($model_element) ? ModelElement_name_qualified($model_element) : $model_element; no warnings; my $value; # Try overrides: my $over = $self->override; # Direct match. $value = $over->{$kind}{$name}{$key} unless defined $value; # $name wild. $value = $over->{$kind}{'*'}{$key} unless defined $value; # $kind wild. $value = $over->{'*'}{$name}{$key} unless defined $value; # $name, $kind wild. $value = $over->{'*'}{'*'}{$key} unless defined $value; $value; } #######################################################################
sub config_enabled { my ($self, $model_element, $key, $default) = @_; my $value = $self->{'config_enabled_force'} || $self->config_value_inherited_true($model_element, $key, $default); if ( 0 ) { no warnings; print STDERR "config_enabled($model_element->{name}, $key, $default) = $value\n"; } $value; }
sub config_value { my ($self, $model_element, $key, $default) = @_; my $value = $self->_config($model_element, $key, $default, 'direct'); $value; }
sub config_value_inherited { my ($self, $model_element, $key, $default) = @_; my $value = $self->_config($model_element, $key, $default, 'inherited'); $value; }
sub config_value_true { my ($self, $model_element, @args) = @_; String_toBoolean($self->config_value($model_element, @args)); }
sub config_value_inherited_true { my ($self, $model_element, @args) = @_; String_toBoolean($self->config_value_inherited($model_element, @args)); } ####################################################################### 1; ####################################################################### ### Keep these comments at end of file: kstephens@users.sourceforge.net 2003/10/10 ### ### Local Variables: ### ### mode:perl ### ### perl-indent-level:2 ### ### perl-continued-statement-offset:0 ### ### perl-brace-offset:0 ### ### perl-label-offset:0 ### ### End: ###