1 // ================================================================================================
3 // XMLのコメント要素を解析するためのクラスソース</summary>
5 // <copyright file="XmlCommentElementParser.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2011 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Parsers
16 /// XMLのコメント要素を解析するためのクラスです。
18 public class XmlCommentElementParser : AbstractParser
23 /// 渡されたテキストをXMLコメントとして解析する。
25 /// <param name="s">解析対象の文字列。</param>
26 /// <param name="result">解析したタグ。</param>
27 /// <returns>タグの場合<c>true</c>。</returns>
29 /// XML/HTMLタグと判定するには、1文字目が開始タグである必要がある。
30 /// ただし、後ろについては閉じタグが無ければ全て、あればそれ以降は無視する。
32 public override bool TryParse(string s, out IElement result)
36 if (string.IsNullOrEmpty(s) || !s.StartsWith(XmlCommentElement.DelimiterStart))
42 XmlCommentElement comment = new XmlCommentElement();
43 int index = s.IndexOf(XmlCommentElement.DelimiterEnd, XmlCommentElement.DelimiterStart.Length);
46 // 閉じタグが存在しない場合、最後までコメントと判定
47 comment.Raw = s.Substring(XmlCommentElement.DelimiterStart.Length);
48 comment.ParsedString = s;
52 // 閉じタグがあった場合、閉じタグまでを返す
53 comment.Raw = s.Substring(
54 XmlCommentElement.DelimiterStart.Length,
55 index - XmlCommentElement.DelimiterStart.Length);
56 comment.ParsedString = s.Substring(0, index + XmlCommentElement.DelimiterEnd.Length);
64 /// 渡された文字が<see cref="TryParse"/>等の候補となる先頭文字かを判定する。
66 /// <param name="c">解析文字列の先頭文字。</param>
67 /// <returns>候補となる場合<c>true</c>。このクラスでは常に<c>true</c>を返す。</returns>
68 /// <remarks>性能対策などで<see cref="TryParse"/>を呼ぶ前に目処を付けたい場合用。</remarks>
69 public override bool IsPossibleParse(char c)
71 return XmlCommentElement.DelimiterStart[0] == c;