// カテゴリ用の変換を実施
return this.ReplaceLinkCategory(link);
}
+ else if (StringUtils.DefaultString(link.Title).StartsWith("../"))
+ {
+ // ..形式のサブページが処理できない既知の不具合への対応、警告メッセージを出す
+ // ※ 2012年2月現在、..形式のサブページはIsSubpageも立たない
+ this.Logger.AddSource(link);
+ this.Logger.AddResponse(Resources.LogMessageErrorPageName, link.Title);
+ return link;
+ }
// 専用処理の無い内部リンクの場合、言語間リンクによる置き換えを行う
string interWiki = this.GetInterwiki(link);
}
/// <summary>
+ /// ReplaceLinkメソッドテストケース(サブページ)。
+ /// </summary>
+ [Test]
+ public void TestReplaceLinkSubpage()
+ {
+ TestMediaWikiTranslator translator = new TestMediaWikiTranslator();
+ MockFactory mock = new MockFactory();
+ translator.From = mock.GetMediaWiki("en");
+ translator.To = mock.GetMediaWiki("ja");
+ MediaWikiLink link;
+
+ // 親記事名も全て指定したサブページ
+ // ※ 以下オブジェクトを毎回作り直しているのは、更新されてしまうケースがあるため
+ link = new MediaWikiLink();
+ link.Title = "Template:Citation needed/Doc";
+ Assert.AreEqual("[[Template:要出典|Template:Citation needed/Doc]]", translator.ReplaceLink(link, "Template:Citation needed").ToString());
+
+ // 親記事名を省略し別途指定
+ link = new MediaWikiLink();
+ link.Title = "/Doc";
+ link.IsSubpage = true;
+ Assert.AreEqual("[[Template:要出典|/Doc]]", translator.ReplaceLink(link, "Template:Citation needed").ToString());
+
+ // ../形式でのサブページ
+ // ※ この形式は2012年2月現在未対応で渡す方法も無い、暫定対応の処理が動く
+ link = new MediaWikiLink();
+ link.Title = "../Doc";
+ Assert.AreEqual("[[../Doc]]", translator.ReplaceLink(link, "Template:Citation needed").ToString());
+ Assert.IsTrue(translator.Log.EndsWith(
+ "[[../Doc]] → " + Environment.NewLine
+ + "→ ../Doc は、現在のツールでは処理できないページ名です。" + Environment.NewLine));
+ }
+
+ /// <summary>
/// ReplaceLinkメソッドテストケース(カテゴリ)。
/// </summary>
[Test]