도움말:문서 파싱 과정

최근 편집: 2017년 10월 8일 (일) 21:41

위키텍스트HTML로 변환하는 작업 일부를 순서에 따라 소개합니다.

풀기

{{풀기:틀 이름}}, {{풀기:#invoke}}와 같이 풀기로 작성된 글귀들이 모두 처리됩니다.

인터널 파싱

문서코드를 참고할 수 있습니다.

전처리

DOM으로의 전처리를 수행한 후 다시 text로 확장합니다. 이것은 preprocessToObj 함수expand 함수를 사용합니다. 또한 이 과정에서 틀 변수, 들이 교체됩니다.

일부 태그

<includeonly>, <noinclude>, <onlyinclude>와 같은 끼워넣기 태그들과 <!--...--> 태그 등이 처리됩니다. 모두 끝난 다음에는 닫히지 않은 괄호를 출력합니다.

틀 변수

{{{1|}}}과 같이 괄호 셋으로 묶인 틀 변수가 처리됩니다. 이 작업이 끼워넣기 태그의 처리보다 늦게 이루어지기 때문에, 예를 들어 <noinclude>{{{1|</noinclude>}}}라는 위키텍스트가 적힌 틀은 "}}}"으로 처리됩니다.

위키텍스트로 작성된 {{틀 이름}}들 대신 해당 의 내용이 끼워넣어집니다. 틀 안에 다른 틀이 있다면 마찬가지로 끼워넣어지며 이 때 전처리 함수가 재귀 호출됩니다. 그러나 만일 틀이 자기 자신을 호출한다면 재귀적인 틀이 발견되었다는 오류 메세지가 대신 끼워넣어집니다.

확장 태그

<ref>와 같은 확장 태그가 처리됩니다.

파서 함수

{{#invoke:}}, {{#if:}}와 같은 파서 함수가 처리됩니다.

만일 파서 함수의 일종인 모듈에서 {{틀}}이나 {{#invoke}}, <ref>과 같은 문자열을 출력하더라도 이것은 실제로 작동하지 않으며 단지 {{틀}}과 {{#invoke}}, <ref>이라는 문자열로만 표시됩니다. 만약 모듈에서 틀이나 파서 함수, 파서 태그를 호출하고 싶다면, frame:expandTemplate이나 frame:callParserFunction, frame:extensionTag와 같은 함수를 사용하여야 합니다.

다른 방법으로, {{subst:#invoke:}}(혹은 {{풀기:#invoke:}})와 같이 입력할 수 있습니다. 풀기는 비교적 일찍 일어나는 작업이므로, 풀기로 작성된 invoke는 처리되지 않고 남아 있다가 다음 번 편집에서 처리됩니다(이것은 보통 피해야 하는 상황입니다).[1] 자세한 내용은 레퍼런스를 참고해주세요.

확장 태그

<pre>, <nowiki>와 같은 확장 태그가 처리됩니다.

Sanitize

위키텍스트에서 허용되지 않는 HTML 마크업이 처리됩니다.

표가 처리됩니다.

hr 태그

----(4개 이상)으로 된 위키텍스트가 hr 태그로 변환됩니다. 그러나 페미위키 스킨에서 hr은 보이지 않아, 그냥 사라지는 것처럼 보입니다.

행동 스위치

__목차__와 같이 밑줄 둘로 이루어진 행동 스위치(behavior switch)들이 처리됩니다.

요술 변수

{{PAGENAME}}과 같은 요술 변수들이 처리됩니다. 이 작업은 틀 끼워넣기가 완료된 이후 수행되므로, 예를 들어 끼워넣어진 틀 안에 {{PAGENAME}}이라는 글귀가 있었다면 이것은 틀 이름이 아닌 최종 문서의 이름을 보여주게 됩니다.

문단 제목

== 등으로 묶인 문단 제목이 처리됩니다.

안쪽 링크

[[페미위키]]와 같은 링크들이 처리됩니다.

이 작업은 요술 변수가 처리된 이후에 진행되기 때문에, 요술 변수로 얻은 문자열을 링크에 사용할 수 있습니다. 예를 들어, [[{{SITENAME}}]]라는 위키텍스트는 페미위키로의 링크를 형성합니다.

따옴표

''''', '''''와 같은 따옴표가 처리됩니다.

바깥 링크

바깥 링크가 처리됩니다.

요술 링크

ISBN xxx이나 RPC xxx와 같은 요술 링크가 처리됩니다.

외부 링크

출처