2016-07-26 6 views
0

Wikicodeがテーブルを解析するためには、私はこのfileで正規表現を使用して<table> </table>のようなHTML形式にそれを解析する必要がwikitextテーブルを解析する方法HTML?

{| class="wikitable" 
|- 
! Header 1 
! Header 2 
! Header 3 
|- 
| row 1, cell 1 
| row 1, cell 2 
| row 1, cell 3 
|- 
| row 2, cell 1 
| row 2, cell 2 
| row 2, cell 3 
|} 

のですか?

+0

リンクしたファイルは何ですか?ウィキータブルをhtmlに変換しますか?そうでない場合は、なぜそれを使うのですか? – Whothehellisthat

+0

ウィキータをHTMLに変換せず、残りの部分を変換します。私はここに関数を追加する必要があるので、ウィキータブルを変換することもできます。 –

+0

ああ、大丈夫です。あなたが必要とするもの、つまり正規表現と置換関数、あるいはその他のものを教えて、始める前にライブラリ全体を解析するのではなく、問題に集中できるようにするのは良いでしょうか? – Whothehellisthat

答えて

0
    • ヘッダ行レンダリング、表
      • 行が行の開始時!を有する場合の表は、
      • 属性そのよう=店を持っている場合、各行
      • を検索する検索各ヘッダーの取得とレンダリング
    • 一緒にすべてのピースを入れて、

    https://jsfiddle.net/n1dp3fcs/2/

    var attrs = "", headers = "", rows = ""; 
    function renderTables(wiki) { 
        wiki.replace(findTable, parseTable); 
        var HTML = "<table" + (attrs ? " " + attrs : "") + ">" + 
        (headers ? "<thead>" + headers + "</thead>" : "") + 
        (rows ? "<tbody>" + rows + "</tbody>" : "") + 
        "</table>"; 
        attrs = headers = rows = ""; 
        return HTML; 
    } 
    
    var findTable = /\{\|\s*(.*?)\s*\|\}/g, 
        parseTable = function(match, content) { 
         Array.prototype.forEach.call(content.split(newRow), renderRow); 
        }; 
    
    var newRow = /\s*\|-\s*(?:\|\s*)?/g, 
        renderRow = function(content) { 
         console.log("tr", content, arguments); 
         if (content.indexOf("=") !== -1) { console.log("attrs"); attrs += content; } 
         else if (content[0] === "!") { console.log("th"); headers += "<tr>" + content.replace(findHeader, renderHeader) + "</tr>"; } 
         else { console.log("td"); rows += "<tr>" + content.replace(findCol, renderCol) + "</tr>"; } 
        }; 
    
    var findHeader = /\s*!\s*([^!]+?)(?=\s*!|$)/g, renderHeader = "<th>$1</th>"; 
    
    var findCol = /(?:^\s*|\s*\|\s*)([^\|]+?)(?=\s*\||$)/g, renderCol = "<td>$1</td>"; 
    
    を返す:
  • はそれ以外の場合は、通常の行
    • 各セルを取得し、レンダリング
  • は、テーブルをレンダリングします
  • +0

    それは素晴らしい作品です。しかし、問題がある、私は正しくwikitextのテーブルコードを書いていない。私はそれを更新しました。それを再チェックできますか?また、このコードをこの(http://goessner.net/download/prj/wiky/wiky.js)に追加することができますか? –

    +0

    それを試してください。そのファイルの仕組みを理解するのに本当に時間を費やすことはできません。誰でもそれを作った人にいつでも触れることができ、彼がそれを追加したいかどうか尋ねることができます。私の名前はトーマス・ジャイルズ、「GitHub:wthit56」彼が私に信用できるかどうか。あるいは、テーブルレンダリングコードを新しいバージョンに変更することができるのか、それとも何が起こっているのかを聞いたことがあります。 – Whothehellisthat

    +0

    本質的に、私はちょうど自由のためにあなたの仕事の負荷を行った。ちょうど頭が上がっていますが、このフォーラムは質問をするためのものであり、人々にあなたのためのコード全体を書かせずに、他の人の図書館でそれを再実装することです。私はちょうどこれらのものが楽しいと思うことはちょっと幸運ですが、私は他の誰かのコードを見て、私の仕事でスプライスするつもりはありません。 – Whothehellisthat

    関連する問題