사용자:Bd3076/기술 스택/1
< 사용자:Bd3076 | 기술 스택
의문의 플러그인을 만들며 알게 된 정보들.
플러그인 시스템의 기능[편집 | 원본 편집]
플러그인 시스템은 사용자가 직접 플러그인을 만들고 설치할 수 있게 한다. 물론 그 전에도 플러그인은 있었지만[1] 지금은 훨씬 더 편해졌다. 하지만 플러그인을 다른 곳에 이용한다면 어떨까. 그래서 플러그인 시스템을 분석해 보기로 했다.
먼저 시작은 {{플러그인}} 틀이다. 내부를 들여다 보면
<div style="display:none"> {{#css: {{플러그인/setup/css}} }} {{#vardefine:defaultdoc| {{NAMESPACE}}:{{ROOTPAGENAME}}/commonjs }} {{#vardefine:doc| {{#rel2abs: {{{문서| {{{1| {{#var:defaultdoc}} }}} }}} | {{FULLPAGENAME}} }} }} {{#vardefine:install-type| {{{설치| {{{2| 즉시 }}} }}} }} </div>{{#ifexist:{{#var:doc}}| {{ :{{#var:doc}} | {{#var:doc}} | {{#var:install-type}} | {{rand|1|100000}} }} | {{알림 상자 |색=#9900CC |테두리색=#000000 |제목색=#9900CC |왼쪽 그림=VisualEditor - Icon - programming-block.svg |제목=오잉?? 아직 플러그인 문서가 안만들어졌네요? |본문=[{{fullurl: {{#var:doc}} |action=edit&preload=틀:플러그인/preset&summary=새로운플러그인생성}} 자바스크립트 플러그인은 이 문서에서 만들 수 있어요!!] }} }}
이렇게 되어 있다. 밑의 알림 상자는 플러그인 문서가 만들어지지 않았을 때 생성되는 문서이다. 이 부분이 눈에 거슬린다. 하지만 지울 수는 없다. preset을 눈여겨 봐야 한다. preset은 플러그인의 양식과 같기 때문이다.
{{#vardefine:name|플러그인 이름, 영어로}} {{#vardefine:creat|만든사람}} {{#vardefine:version|버전명}} {{#vardefine:descript|플러그인의 용도}} {{#vardefine:local|플러그인 틀이 붙은 문서에서만 사용하게 하려면 true, 아니면 false}} {{#vardefine:executable|실행되지 않는 플러그인을 만들고 싶으면 false, 보통의 경우는 true}} {{#vardefine:code| <syntaxhighlight lang="javascript"> // 이부분에 코드 입력 // // 여기까지 코드 입력 // </syntaxhighlight> }} !!!!!!!!!!!!!!!! 플러그인 정보 입력 구간 끝 아래는 만지지 마시오!!!!!!!!!!!!!!!!! </div>{{#switch: {{{1|화면}}} |dump = |화면 = {{플러그인/preset/각주}} <p<inclu<noinclude></noinclude>deonly></incl<noinclude></noinclude>udeonly>re class="script" data-name="{{#var:name}}" data-create="{{#var:creat}}" data-version="{{#var:version}}" data-descript="{{#var:descript}}" data-local="{{#var:local}}" data-executable="{{#var:executable}}" data-state="{{풀<noinclude></noinclude>기:FULLPAGENAME}}"> {{#var:code}} </pre> |#default = {{#ifeq:{{{2|틀}}}|틀|{{플러그인/알림|{{#var:name}}}}|}} <span class="use-script" data-name="{{#var:name}}" data-creat="{{#var:creat}}" data-version="{{#var:version}}" data-executable="{{#var:executable}}" data-descript="{{#var:descript}}" data-local="{{#var:local}}" data-state="{{풀<noinclude></noinclude>기:FULLPAGENAME}}" data-link="{{fullurl: {{#rel2abs: {{{1}}} }} }}"></span> }}
밑부분이 상당히 이상하다. 특히 {{플러그인/preset/각주}}
아래의 문장은 대체 저게 문장인가 싶을 정도다. 저게 위키 문법에서 가능한지 의심되지만 어쨌든 가능하니까 저렇게 해도 문제가 없을 것이다. 변수 설정은 그리 어렵지 않으니 생략하고 매개변수를 살펴보자.
첫 번째 매개변수는 화면
와 같이 쓰였다. 기본이 화면으로 보인다. 1번 매개변수가 화면이라면,
{{플러그인/preset/각주}} <p<inclu<noinclude></noinclude>deonly></incl<noinclude></noinclude>udeonly>re class="script" data-name="{{#var:name}}" data-create="{{#var:creat}}" data-version="{{#var:version}}" data-descript="{{#var:descript}}" data-local="{{#var:local}}" data-executable="{{#var:executable}}" data-state="{{풀<noinclude></noinclude>기:FULLPAGENAME}}"> {{#var:code}}
이런 게 나오는데, 각주는 설명 문서와 분류 추가를 담당한다. 딱히 살펴볼 건 없으니, 넘어가자.
다음은 바로 저 해괴한 문장인데, 저 부분은 왜 있는 걸까 의심스럽다. 사실상 별 의미도 하지 않으므로, 간략하게 해 보자.
{{플러그인/preset/각주}} <pre class="script" data-name="{{#var:name}}" data-create="{{#var:creat}}" data-version="{{#var:version}}" data-descript="{{#var:descript}}" data-local="{{#var:local}}" data-executable="{{#var:executable}}" data-state="{{풀기:FULLPAGENAME}}"> {{#var:code}}
이제 명확해졌다. 이 구간은 플러그인 js 파일의 JSON 정보를 데이터화하는 부분이었던 것이다.
(작성중)