- local $_ = shift;
- # add default path unless specified
- $_ = $this->{-path} . '_' . $_ unless /_/;
- #todo: shouldn't occur - find out where this is done, then fix and remove this check
- # defined $_ or return '';
- $_ = $this->loc($this->{$_}) if exists $this->{$_};
- #todo: else remove path
- # adaptive string (code)
- $_ = $_->(@_) if ref $_ eq "CODE";
+ if (exists $this->{$id}) {
+ $id = $this->loc($this->{$id});
+ # adaptive string (code)
+ $id = $id->(@args) if ref $id eq "CODE";
+ } else {
+ # not found: strip path and use literal identifier
+ $id =~ s/.*\Q$this->{-seperator}//s if defined $this->{-seperator};
+ }