比較的容易に適合させることができる:)asp.net MVCのWikiエンジンのためのウィキ
代わりにasp.netのMVCまたはsoemthignための任意のWikiモジュールがあり、おそらくwikiマークアップのための任意のフォーマッタがあります
比較的容易に適合させることができる:)asp.net MVCのWikiエンジンのためのウィキ
代わりにasp.netのMVCまたはsoemthignための任意のWikiモジュールがあり、おそらくwikiマークアップのための任意のフォーマッタがあります
private void ProcessLine(string line, TextWriter writer)
{
int state = 0;
int i = 0;
int wordStart = 0;
Action encode =() => HttpUtility.HtmlEncode(line[i].ToString(), writer);
Func<bool> isws =() => Char.IsWhiteSpace(line[i]);
for (i = 0; i < line.Length; ++i)
{
switch (state)
{
case 0:
if (line[i] == '*')
{
state = 1;
}
else if (line[i] == '/')
{
state = 4;
}
else if (line[i] == '[')
{
wordStart = i + 1;
state = 7;
}
else
{
encode();
}
break;
case 1: //Start bold
if (isws())
{
encode();
state = 0;
}
else
{
writer.Write("<b>");
encode();
state = 2;
}
break;
case 2: //End bold
if (isws())
{
encode();
state = 3;
}
else if (line[i] == '*')
{
writer.Write("</b>");
state = 0;
}
else
{
encode();
}
break;
case 3:
if (isws())
{
encode();
}
else
{
encode();
state = 2;
}
break;
case 4: //Start italics
if (isws())
{
HttpUtility.HtmlEncode("/ ", writer);
state = 0;
}
else
{
writer.Write("<i>");
encode();
state = 5;
}
break;
case 5: //End italics
if (isws())
{
encode();
state = 6;
}
else if (line[i] == '/')
{
writer.Write("</i>");
state = 0;
}
else
{
encode();
}
break;
case 6:
if (isws())
{
encode();
}
else
{
encode();
state = 5;
}
break;
case 7: //Start link
state = 8;
break;
case 8: //End link
if (line[i] == ']')
{
WriteLink(line.Substring(wordStart, i - wordStart), writer);
state = 0;
}
break;
}
}
// Clean up italics, bold etc. based on the state we were in at the end of the line.
switch (state)
{
case 0:
break;
case 1:
HttpUtility.HtmlEncode("*", writer);
break;
case 2:
case 3:
writer.Write("</b>");
break;
case 4:
HttpUtility.HtmlEncode("/", writer);
break;
case 5:
case 6:
writer.Write("</i>");
break;
case 7:
HttpUtility.HtmlEncode(line.Substring(wordStart), writer);
break;
case 8:
WriteLink(line.Substring(wordStart), writer);
break;
}
}
上記のコードは、[]で囲まれたものが新しいページまたは既存のページへのリンクになるような動作を変更します。 これはあなたがクマールの後ろだったことを願っています。 – griegs
マークアップに関する情報が見つかりませんでした。 – Kumar
マークアップはコード内にあります。これは、奇妙な表記を使用して新しいページへのリンクを作成しますが、正常に動作します。 より良い表記を受け入れるようにコードを修正しました。理解とカスタマイズに約1時間しかかかりませんでした。 詳細については、MiniWiki.DomainModelのWikiToHtmlFormatter.csファイルを参照してください。 – griegs
私は8から逆方向に値をトレースして7にコードを進めましたが、道に沿ってどこかでそれを失ってしまいました。タグを生成するために必要なマークアップを知っていればいいでしょう。 – Kumar
新しいmvc4ベースのWikiエンジンがhttp://www.sapientier.com:88/LynxWiki/WikiTopic/Page/WikiRoot/WikiDir/HomePage
でエンジンの運転バージョンでhttp://lynxwiki.codeplex.comでリリースされましたこれは、MediaWikiのの機能の多くを持つフル機能のウィキプラスそれは持っています組み込みのIronPythonスクリプトを使用して動的コンテンツの機能を実現
ようこそスタックオーバーフロー!あなたの答えを投稿してくれてありがとう! [自己プロモーションに関するよくある質問](http://stackoverflow.com/faq#promotion)をよく読んでください。また、自分のサイト/製品にリンクするたびに免責条項を掲示することが必須*であることにも注意してください。 –
http://wikiplex.codeplex.com/ – Kumar