diff options
Diffstat (limited to 'IrcStates/Server.cs')
-rw-r--r-- | IrcStates/Server.cs | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/IrcStates/Server.cs b/IrcStates/Server.cs index b9e4ef4..9371a2b 100644 --- a/IrcStates/Server.cs +++ b/IrcStates/Server.cs @@ -64,16 +64,22 @@ namespace IrcStates return null; } - private Emit ParseTokens(Line line) + public Emit ParseTokens(Line line) { - Emit ret; - if (LineHandlers.ContainsKey(line.Command)) - foreach (var callback in LineHandlers[line.Command]) - { - var emit = callback(line.Command, line); - } + if (line != null && !LineHandlers.ContainsKey(line.Command)) return null; + var ret = new Emit(); - throw new NotImplementedException(); + var handlers = LineHandlers[line.Command] + .Select(callback => callback(line.Command, line)) + .Where(emit => emit != null); + + foreach (var emit in handlers) + { + emit.Command = line.Command; + ret = emit; + } + + return ret; } } } |