textris 0.2.0

Tetris on terminal!
Documentation
use super::{KeyConverter, Order};
use std::collections::HashMap;
use termion::event::{Event, Key};

pub struct EventReader {
    key2order: HashMap<Key, Order>,
}

impl EventReader {
    pub fn new(keys: KeyConverter) -> Self {
        EventReader {
            key2order: keys.key_to_order(),
        }
    }

    pub fn order(&self, input: Event) -> Option<Order> {
        if let Event::Key(key) = input {
            self.key2order.get(&key).map(|order| *order)
        } else {
            None
        }
    }

    pub fn bound_key(&self, desired_order: Order) -> Key {
        for (&key, &order) in self.key2order.iter() {
            if order == desired_order {
                return key;
            }
        }
        panic!(
            "Order {:?} does not be associated with any key",
            desired_order
        );
    }
}