Mercurial > pub > Impl
view Lib/IMPL/Resources/Format.pm @ 122:a7efb3117295
Fixed bug in IMPL::DOM::Navigator::selectNodes
Fixed bug in IMPL::DOM::Node::selectNodes
renamed operator 'type' to 'typeof' in IMPL::Object::Abstract
A proper implementation of the IMPL::DOM::Node::nodeProperty and a related changes in the IMPL::DOM::Property module, now the last is very simple.
author | wizard |
---|---|
date | Tue, 08 Jun 2010 20:12:45 +0400 |
parents | 196bf443b5e1 |
children | e6447ad85cb4 |
line wrap: on
line source
package IMPL::Resources::Format; use strict; use warnings; require Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw(&FormatMessage); sub FormatMessage { my ($string,$args,$resolver) = @_; $resolver ||= \&_defaultResolver; $string =~ s/%(\w+(?:\.\w+)*)%/_getvalue($args,$1,"\[$1\]",$resolver)/ge; return $string; } sub _getvalue { my ($obj,$path,$default,$resolver) = @_; foreach my $chunk (split /\./,$path) { return $default unless $obj; if (ref $obj eq 'HASH') { $obj = $obj->{$chunk}; } else { $obj = $resolver->($obj,$chunk); } } return $obj; } sub _defaultResolver { my ($obj,$prop) = @_; return ( eval { $obj->can($prop) } ? $obj->$prop() : undef ); } 1;