### The switching system to parse a message

sub new {
  my ($class, $newprinter, $newcompiler) = @_;

  $self = { printer => $newprinter, compiler => $newcompiler, };

  bless $self, $class;
}

sub runOnce {
  my $self = shift;

  ### FIXME
}

sub switch {
  my ($self, $mesg) = @_;

  return $self->parseMessage($mesg);
}

sub parseMessage {
  my ($self, $mesg) = @_;

  given($mesg->getTypeString) {
    when ("print") {
      $tobeprinted = $mesg->getCarry->getData;
      $self->{printer}->println($tobeprinted)
    }
    when ("load") {
      ### FIXME adds load component with $self->{compiler}
    }
    when ("select") {
      ### FIXME adds select component with $self->{compiler}
    }
  }
}

1;
