Pipes, Tables

Ich möchte die Möglichkeit Dinge in Tabellen zu abstrahieren.

Beispiel:

field = char table(";" /* Liest bis zum Semikolon */) 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X             X     X             X
X XXXXX XXXXX X XXX X XXXXX XXXXX X
X           X X XpX X     X X   X X
X             X     X             X PacManbildschirm halt.
X             X     X             X
X             X     X             X;

char table könnte hier durch Language realisiert werden.

pacman_ascii = char table(";")
     .-.   .-.     .--.                        
    | OO| | OO|   / _.-' .-.   .-.  .-.   .''. 
    |   | |   |   \  '-. '-'   '-'  '-'   '..' 
    '^^^' '^^^'    '--'                        ;

pacman_bitmap = char table(";")
  yyyy   yyyy
 yyybyy yyyy
 yyyyyy yyyy
  yyyy   yyyy ;

wall_bitmap = char table(";")
rgrRrrrR 
rRrrrRrr
rrrRrgrR
RrrrRrrr;  // Unterschiedliche Rottöne

Jetzt möchte ich, dass diese Tabelle gepipt werden kann und damit transformiert.

pointerfield = field.transform(row)
  row.transform
  {
    switch( value )
    {
      case X : return wall_bitmap;
      case P : return pacman_bitmap;
    }
  }
  
Vielleicht ein Transform2d, was zwei verschachtelte Containerstrukturen erwartet?  

Ich möchte etwas schreiben können, was wie

graphic = bitmap( field | { X=wall_bitmap, P=pacman_bitmap } );

beschrieben werden kann.

Dafür muss {X=…} gefragt werden können, wie groß das Datenfeld ist, was dafür field fragen können muss, wie groß das Feld ist und wall_bitmap muss dann Pixel setzen.