public List <IMessageChunk> SplitMessageToChunks(string message) { var chunks = new List <IMessageChunk> { new TextMessageChunk(message) }; var eventArgs = new MessageChunkingEventArgs(chunks); SplitToChunks(this, eventArgs); return(eventArgs.Chunks); }
protected void HandleSplitToChunks(object sender, MessageChunkingEventArgs e) { var newChunks = new List <IMessageChunk>(); foreach (IMessageChunk chunk in e.Chunks) { if (!(chunk is TextMessageChunk)) { newChunks.Add(chunk); continue; } var textChunk = (TextMessageChunk)chunk; var wordChunks = new List <IMessageChunk>(); foreach (string word in textChunk.Text.Split(' ')) { Uri uri; if (Uri.TryCreate(word, UriKind.Absolute, out uri)) { if (uri.Scheme != "http" && uri.Scheme != "https") { wordChunks.Add(new TextMessageChunk(word)); continue; } // Uri verifies that http(s) URIs are at least minimal (http://a) wordChunks.Add(new UriMessageChunk(word, uri)); } else if (TryCreateUriHeuristically(word, out uri)) { wordChunks.Add(new UriMessageChunk(word, uri)); } else { wordChunks.Add(new TextMessageChunk(word)); } } var spaceChunk = new TextMessageChunk(" "); for (int i = 0; i < wordChunks.Count; ++i) { newChunks.Add(wordChunks[i]); if (i < wordChunks.Count - 1) { newChunks.Add(spaceChunk); } } } e.Chunks = SharpIrcBotUtil.SimplifyAdjacentTextChunks(newChunks); }
protected virtual void OnSplitToChunks(MessageChunkingEventArgs e) { HandleEvent(SplitToChunksSubscribers, e, "splitting message to chunks"); }