[EMAIL PROTECTED] (Larry Wall) writes:
> On Fri, Oct 14, 2005 at 08:38:55AM +0200, Peter Makholm wrote:
> : Yesterday I spend some hours getting pugs to understand
> : translitterations with multiple ranges in each pair. E.g.
> :
> : "foobar".trans( "a-z" => "n-za-n" );
> :
> : By accident I tested something like:
> :
> : "foobar".trans( ['a' .. 'z'] => "n-za-m" );
> :
> : and it didn't work.
> :
> : The problem is that ['a' .. 'z'] gets stringified to 'a b c d ...'
> : which gets 'b' translated to the third letter in the right hand side.
>
> Hmm, why is stringification getting involved at all? We're intending
> transliteration to work with multi-codepoint sequences of various
> sorts, so the canonical representation of the data structure can't
> be simple strings.
>
> Actually, it looks like the bug is probably that => is forcing stringification
> on its left argument too agressively. It should only do that for an
> identifier.
The code I'm lookin at is in pugs/src/perl6/Prelude.pm around line 380:
method trans (Str $self: *%intable) is primitive is safe {
my sub expand (Str $string is copy) {
...
}
my sub expand_arrayref ( $arr is copy ) {
...
}
my %transtable;
for %intable.kv -> $k, $v {
# $k is stringified by the => operator.
my @ks = expand($k);
my @vs = $v.isa(Str) ?? expand($v) !! expand_arrayref($v);
[EMAIL PROTECTED] = @vs;
}
[~] map { %transtable{$_} // $_ } $self.split('');
}
> One other quibble is that we're switching ranges in character classes to
> use ".." instead of "-", so trans should use the same convention.
Ok.
> : Is this supposed to work and if so how should the code differ between
> :
> : "foobar".trans( ['a' .. 'b'] => '12'); # a=>1, b=>2
> : "foobar".trans( "a b" => "123" ) # a=>1, ' '=>2, b=>3
>
> Actually, the [...] is somewhat gratuitous. Should work with parens too.
> In fact, it should work with a bare range object on the left:
>
> "foobar".trans( 'a' .. 'b' => '12'); # a=>1, b=>2
Works too.
> Thanks for working on this! Do you know any more people like you? :-)
No, after seeing what happend to Lintilla I've kept clear from cloning
companies.
--
Peter Makholm | What if:
[EMAIL PROTECTED] | IBM bought Xenix from Microsoft instead of buying
http://hacking.dk | DOS?