뭐 대단한 건 아니고 이것저것 실험해본 결과 정리? 정도



1. 기본적으로 일반 괄호를 사용한 하이퍼링크([이렇게](링크주소) 거는 거)에 존재하는 버그임


&{template:default} {{test1= [test1](
}} {{test2)= [test2](
}} {{test3)= test3
}} {{test4= [test4](
}} {{test5)= [test5](
}} {{test6)= test6
}} {{test7= Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
}}


그래서 #" style=" 같은 거 없이 이렇게만 해도



a1432866692cc92d81465b40de9f343366b26665a8a28feb7206a680

잘만 작동한다.



하지만 이 경우, 실수로라도 저 하이퍼링크가 걸린 텍스트를 클릭했을 경우

PL이 존재하지도 않는 주소로 가는 창이 열려서 시공의 폭풍에 떨어지는 불상사가 일어날 수 있으므로

가급적 #" style=" text-decoration: none; 정도라도 걸어주는 게 좋지 않을까 싶음.



2. template overwriting 역시 작동함


&{template:default} {{test1= [test1](#" style="
}} {{test1)= [test2](#" style="
}} {{test1)= test3
}} {{test1= [test4](#" style="
}} {{test1)= [test5](#" style="
}} {{test1)= test6
}}


각 행의 name을 이렇게 다 통일시키면 어떻게 될까?



39b8dd36e9d32ca32eb0c0b004c636346475b68038b72c649a36ad628e7cad2d4ab31a

이렇게 된다.


즉 [test1] 행을 [test4] 행이 덮어쓰고

2, 3, 5 행을 6행이 덮어쓰는 과정이 잘 처리되었다는 소리.


설사 겉으로 name이 출력되지 않는 행이라고 해도, 내부적으로는 name이 존재한다는 증거다.


&{template:default} {{test1= [test1](#" style="
}} {{test2)= [test2](#" style="
}} {{test3)= test3
}} {{test?{test}= [test4](#" style="
}} {{test5)= [test5](#" style="
}} {{test6)= test6
}}


그래서 코드를 이렇게 짠 다음 쿼리에 다른 수를 넣으면 위와 같이 잘 작동하지만,

1을 넣어서 overwriting이 작동하게 하면


a16f1b666e00d02aa9679639cf0964b1f0a48d4ae0936590ecc6be68747b5763825deb49ae86bcca83af789e


이렇게, 뒤의 행들은 연결되어야 할 (#" style=" 구문이 사라지는 고로 오작동하게 된다.



첫 번째 행이 아닌 경우는 어떻게 될까?


&{template:default} {{test1= [test1](#" style="
}} {{test2)= [test2](#" style="
}} {{test3)= test3
}} {{test4= [test4](#" style="
}} {{test?{test})= [test5](#" style="
}} {{test6)= test6
}}



이렇게 코드를 돌려보면, 역시 다른 숫자를 넣을 때는 별 일이 일어나지 않지만

쿼리에 2를 집어넣을 경우



a64c20666e00d02aa9679639cf0964b17c850296686ac3ecc97f7d7cd65bd57adf0fb992e623bb94c3f61262

이렇게 2번째 행이 5번째 행으로 치환당하고

남겨진 test4와 test6이 이어짐을 알 수 있다.


더 재미있는 건 쿼리에 3을 넣었을 때인데



a15610ac3d02b55392ff5d67f25bf3e52ceaea3693b9cfddfdf3ac2e9415

아예 test4 행을 형성하는 구문 전체가 링크 안으로 빨려들어가버려서 처리되지 않고

행 하나가 날아가버리는 현상이 일어난다.



내용 유무에 따라서 표를 나눠야 할 일이 있을 때 응용할 수 있지 않을까???



아무튼 그래서


&{template:default} [[{{test[[?{test}]]= [test: ?{test}](#" style="
}} {{test[[?{test}+10]])= [test: ?{test}(2)](#" style="
}} {{test[[?{test}+20]])= test: ?{test}(3)
}} {{test[[1-?{test}]]= [test2: 1-?{test}](#" style="
}} {{test[[1-?{test}+10]])= [test2: 1-?{test}(2)](#" style="
}} {{test[[1-?{test}+20]])= test2: 1-?{test}(3)
}} $[[]]] {{test0= [ ](#" style="}} {{test10)= [ ](#" style="}} {{test20)= }}


이렇게 서로 간에 name이 겹치지 않도록 코드를 조금 신경써서 짜면



a14514ad3736b35bb2332b619b3dc17d63c9740dc432a5b96661a20cb42686505a3a9085

이렇게 오버라이팅을 구현하는 것 자체는 가능하... 지만


결국 한 '합쳐진 행'을 구성하는 모든 name에 대해 오버라이팅할 란을 만들어야 하는 고로, 상당히 귀찮다...



본인이 설계한 매크로는 쿼리도 아니고,

인덱스 매니퓰레이션으로 주사위 결과값을 복사하는 식으로 작동하는지라

이런 식으로 복수의 셀에 오버라이팅을 구현하려고 하면, 이 값 복사 과정도 반복해야 하므로

렉이 크게 가중된다는 문제가 커서 이걸 적용하기 상당히 힘들 거 같음.




3. 결론적으로, 솔직히 유용하게 쓰기는 힘든 게 맞는듯


일단 container의 형태가 변형된 걸 아래 열에서 되돌리거나 하는 테크닉을 찾아내지 못한 게 크다.


열 모양 자체는 기존에도 CSS로 display를 inline-block으로 설정하는 걸로 얼마든지 만들 수 있었는데

template를 조작하기 위해 건드려야 할 name도 늘어난 칸 수에 정비례한다면, 솔직히 불편함이 가중될 뿐이지...


나야 글상자 모양을 예쁘게 하고 싶다고 미련을 못 버리고 있지만,

대개의 경우는 그냥 PL 본인들이 읽기 쉽게 채팅창 크기를 조절하면 그만일 문제고.




그래서 어지간해서는 이거 쓸 일이 없을 듯.

매크로 설계 초기단계부터 고려했으면 모를까,

지금까지 만들어놓은 걸 다 뜯어고치기에는 많이 피곤하다 이거.




혹시 여러분도 이 버그 관련해서 뭔가 새로운 기법이나 용도를 찾아냈으면 공유합시다.