*** Str.pir	2008-06-08 13:38:46.000000000 -0500
--- Str.pir.back	2008-06-08 13:37:39.000000000 -0500
***************
*** 213,282 ****
      .return(retv)
  .end
  
- =item trans()
- 
- Partial implementation of transliteration.  Handles simple p6-like
- transliteration (see S05):
- 
-   "ABC".trans( ('A'=>'a'), ('B'=>'b'), ('C'=>'c') ) # abc
-   "ABC".trans('XYZ' => 'xyz')
-   "ABCXYZ".trans( (['A'..'C'] => ['a'..'c']), (<X Y Z> => <x y z>)
-   
-   Does not interpolate strings 'A..Z' or 'A-Z' into Ranges ('A'..'Z') yet
-   
- =cut
- 
- .sub 'trans' :method
-     .param pmc args :slurpy
-     .local pmc it, pair, table
-     .local pmc retv
-     
-     table = new 'Hash'
-     retv = new 'Perl6Str'
-     retv = self
-     it = new 'Iterator', args
-     
-   pair_loop:
-     unless it, st_trans
-     pair = shift it
-     .local pmc key, val, key_it, val_it
-     # should handle Array key/value pairs
-     key = pair.'key'()
-     val = pair.'value'()
-     key_it = new 'Iterator', key
-     val_it = new 'Iterator', val
-     
-   mapping:
-     unless key_it, pair_loop
-     $S0 = shift key_it
-     $S1 = shift val_it
-     table[$S0] = $S1
-     goto mapping
-     
-   st_trans:
-     # 'Perl6Str' iterator is not working here for some reason (not implemented)
-     .local int pos, len
-     .local string orig, rep
-     len = retv.'chars'()
-     pos = 0
-     
-   transliterate:
-     if pos == len goto done
-     orig = substr retv, pos, 1
-     rep = table[orig]
-     unless rep, next
-     $S0 = retv[pos]
-     retv[pos] = rep
-     
-   next:
-     pos += 1
-     goto transliterate
-     
-   done: 
-     .return(retv)
- .end
- 
- =cut
  
  =item perl()
  
--- 213,218 ----
