OSDN Git Service

f71187f8ec2eaa6a5080e04790c0a175e08dc7d2
[wptscs/wpts.git] / Wptscs / Parsers / MediaWikiVariable.cs
1 // ================================================================================================
2 // <summary>
3 //      MediaWikiページの変数要素をあらわすモデルクラスソース</summary>
4 //
5 // <copyright file="MediaWikiVariable.cs" company="honeplusのメモ帳">
6 //      Copyright (C) 2011 Honeplus. All rights reserved.</copyright>
7 // <author>
8 //      Honeplus</author>
9 // ================================================================================================
10
11 namespace Honememo.Wptscs.Parsers
12 {
13     using System;
14     using System.Collections.Generic;
15     using System.Text;
16     using Honememo.Parsers;
17     using Honememo.Utilities;
18
19     /// <summary>
20     /// MediaWikiページの変数要素をあらわすモデルクラスです。
21     /// </summary>
22     public class MediaWikiVariable : AbstractElement
23     {
24         #region 定数
25
26         /// <summary>
27         /// 内部リンクの開始タグ。
28         /// </summary>
29         public static readonly string DelimiterStart = "{{{";
30
31         /// <summary>
32         /// 内部リンクの閉じタグ。
33         /// </summary>
34         public static readonly string DelimiterEnd = "}}}";
35
36         #endregion
37
38         #region コンストラクタ
39
40         /// <summary>
41         /// 変数要素をあらわす空のインスタンスを生成する。
42         /// </summary>
43         /// <param name="variable">変数。</param>
44         /// <param name="value">値。</param>
45         public MediaWikiVariable(string variable, IElement value = null)
46         {
47             this.Variable = variable;
48             this.Value = value;
49         }
50
51         #endregion
52
53         #region プロパティ
54
55         /// <summary>
56         /// 変数。
57         /// </summary>
58         public virtual string Variable
59         {
60             get;
61             set;
62         }
63
64         /// <summary>
65         /// 値。
66         /// </summary>
67         public virtual IElement Value
68         {
69             get;
70             set;
71         }
72
73         #endregion
74
75         #region 実装支援用抽象メソッド実装
76
77         /// <summary>
78         /// この要素を書式化した変数テキストを返す。
79         /// </summary>
80         /// <returns>変数テキスト。</returns>
81         protected override string ToStringImpl()
82         {
83             // 戻り値初期化
84             StringBuilder b = new StringBuilder();
85             
86             // 開始タグの付加
87             b.Append(MediaWikiVariable.DelimiterStart);
88
89             // 変数
90             if (!String.IsNullOrEmpty(this.Variable))
91             {
92                 b.Append(this.Variable);
93             }
94
95             // 値
96             if (this.Value != null)
97             {
98                 b.Append('|');
99                 b.Append(this.Value.ToString());
100             }
101
102             // 閉じタグの付加
103             b.Append(MediaWikiVariable.DelimiterEnd);
104             return b.ToString();
105         }
106
107         #endregion
108     }
109 }