/// <summary> /// 文字列を解析する /// </summary> /// <param name="rawContent"></param> /// <returns></returns> public IXenoVideoParseResult Parse(string rawContent) { var result = new XenoVideoParseResult(); foreach (var line in rawContent.Split(Environment.NewLine).Select((content, index) => new { content, index }).Where(l => !l.content.IsNullOrEmpty())) { IXenoVideoNode node; try { node = new XenoVideoNode(line.content); } catch (Exception e) { this.logger.Error($"行の解析に失敗しました。(行:{line.index + 1}, content: {line.content})", e); result.FailedCount++; continue; } if (node.NiconicoId is null) { result.SkippedCount++; continue; } result.Videos.Add(node); result.SucceededCount++; } return(result); }
public void 動画情報ファイルノードの解析をテストする(string content, string id) { var video = new XenoVideoNode(content); Assert.That(video.NiconicoId, Is.EqualTo(id)); }