private void InitializeHistory(LowLevelToAbstractConsoleAdapter adapter)
{
var keyMap = new Dictionary<ConsoleKey, Func<HistoryEntry>>
{
{ ConsoleKey.UpArrow, () => _history.GetNextEntry() },
{ ConsoleKey.DownArrow, () => _history.GetPreviousEntry() }
};
adapter.KeyStrokes
.Select(keyInfo => keyInfo.Key)
.Where(key => key == ConsoleKey.UpArrow || key == ConsoleKey.DownArrow)
.Select(key => keyMap[key])
.Subscribe(func =>
{
adapter.EraseCurrentLine();
var historyEntry = func();
if (historyEntry != null)
{
adapter.Write(historyEntry.Value);
}
});
}