사용자:Hsl0/local CGI

리버티게임, 모두가 만들어가는 자유로운 게임

기존의 CGI는 페이지 단위였지만, 문서 내에서 스코프를 나눠서 각 스코프별로 각자의 CGI 상태를 갖는 로컬 CGI(LCGI)의 초안이다.

각자의 상태를 갖는 SPA 프레임워크의 컴포넌트에서 영감을 얻어, 선언형 언어인 위키텍스트의 특성을 살리고 기존 CGI 개념을 가져와 단순화시켰다.

LCGI는 스코프를 만드는 틀과, 그 틀 내의 CGI 상태를 바꾸는 링크 틀(액션)로 나뉜다.

기본적으로 로컬 CGI 스코프 내부의 변수는 지역변수이다. 하지만, 바깥 스코프의 변수와 연동시켜서 연동된 내부의 변수를 바꾸면 외부의 변수도 바뀌고, 반대로 외부의 변수를 바꾸면 내부의 변수를 바꿀 수 있다. 이를 포워딩이라고 한다.

{{LCGI|<nowiki>
<!-- 스코프의 내용, 이 내용이 LCGI 틀 자리에 표출된다. -->
현재 상태: {{{offset}}}
<!-- LL은 Local Link의 약자로, LCGI 스코프 내부의 상태를 변경하는 링크이다. -->
* {{LL|{{LL/set|offset=1}}|1로 변경}}
* {{LL|{{LL/set|offset=2}}|2로 변경}}
{{입력 상자|target=offset}}
</nowiki>
|<!-- LCGI 스코프에 대한 설정 -->
{{LCGI/public|offset}}<!-- {{LCGI/forward|offset=offset}} 과 같음 -->
{{LCGI/private|offset}}<!-- private로 지정한 변수가 아니라면 전부 public으로 만듦 -->
{{DB2|model|key=aa}}<!-- DB2 등 다른 시스템과 변수를 연동할 수 있음 -->
}}