2009-07-15 6 views
0

比較的容易に適合させることができる:)asp.net MVCのWikiエンジンのためのウィキ

代わりにasp.netのMVCまたはsoemthignための任意のWikiモジュールがあり、おそらくwikiマークアップのための任意のフォーマッタがあります

+0

http://wikiplex.codeplex.com/ – Kumar

答えて

0
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; 
     } 

    } 
+0

上記のコードは、[]で囲まれたものが新しいページまたは既存のページへのリンクになるような動作を変更します。 これはあなたがクマールの後ろだったことを願っています。 – griegs

1

それはカスタマイズすることが非常に簡単です

MiniWiki

を試してみてくださいマークアップの書式設定など、最も一般的なWikiをimplment。

+0

マークアップに関する情報が見つかりませんでした。 – Kumar

+0

マークアップはコード内にあります。これは、奇妙な表記を使用して新しいページへのリンクを作成しますが、正常に動作します。 より良い表記を受け入れるようにコードを修正しました。理解とカスタマイズに約1時間しかかかりませんでした。 詳細については、MiniWiki.DomainModelのWikiToHtmlFormatter.csファイルを参照してください。 – griegs

+0

私は8から逆方向に値をトレースして7にコードを進めましたが、道に沿ってどこかでそれを失ってしまいました。タグを生成するために必要なマークアップを知っていればいいでしょう。 – Kumar

1

新しいmvc4ベースのWikiエンジンがhttp://www.sapientier.com:88/LynxWiki/WikiTopic/Page/WikiRoot/WikiDir/HomePage

でエンジンの運転バージョンでhttp://lynxwiki.codeplex.comでリリースされましたこれは、MediaWikiのの機能の多くを持つフル機能のウィキプラスそれは持っています組み込みのIronPythonスクリプトを使用して動的コンテンツの機能を実現

+1

ようこそスタックオーバーフロー!あなたの答えを投稿してくれてありがとう! [自己プロモーションに関するよくある質問](http://stackoverflow.com/faq#promotion)をよく読んでください。また、自分のサイト/製品にリンクするたびに免責条項を掲示することが必須*であることにも注意してください。 –

関連する問題