2016-07-26 4 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

그것은 위대한 작품. 하지만 문제가 있습니다. 위키 텍트 용 테이블 코드를 올바르게 작성하지 않았습니다. 나는 그것을 업데이트했다. 다시 확인해 주시겠습니까? 또한이 코드를이 코드에 추가 할 수있는 방법이 있습니까 (http://goessner.net/download/prj/wiky/wiky.js)? –

+0

시도해보십시오. 나는 그 파일이 어떻게 작동하는지 알아내는 데 정말로 시간을 할애 할 수 없다. 당신은 언제든지 그것을 만든 사람과 연락하여 그가 그것을 추가하고 싶은지 물을 수 있습니다. 제 이름은 토마스 자일즈입니다. 제게 신용을 줘야한다면 'GitHub : wthit56'입니다. 또는 테이블 렌더링 코드를 새 버전으로 수정하거나 다른 작업을 수행 할 수 있는지 여부를 묻는 것일 수도 있습니다. – Whothehellisthat

+0

본질적으로, 나는 방금 무료로 당신을 위해 많은 일을했습니다. 이 포럼은 질문을하고, 사람들로 하여금 전체 코드를 작성하지 못하게하고, 다른 사람의 라이브러리에서 다시 구현하도록합니다. 당신은 이런 것들을 재미있게 찾은 것만으로도 운이 좋았지 만, 제 다른 누군가의 코드와 스플 라이스를 보지 않을 것입니다. – Whothehellisthat

관련 문제