행위

:Str left/설명문서

조무위키

imported>노구리님의 2020년 8월 6일 (목) 01:34 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

{{str left}} 틀은 문자열을 지정한 길이로 만들어 주는 틀입니다. 주어진 문자열이 지정한 길이보다 길면 자르고, 짧으면 반복합니다.

사용법[편집]

이 틀을 쓸 때에는 다음과 같이 2개의 이름 없는 매개변수를 씁니다.

{{str left | 문자열 | 길이 }}

코드 길이를 최적화하고 오류 발생 가능성을 줄이려면 다음과 같이 씁니다. 문자열에 등호(=)가 포함된 경우의 잘못된 동작을 방지합니다.

{{str left|1=|2=}}
  • 길이(매개변수 2)가 잘못된 수이거나 비어 있으면, 텅 빈 문자열을 출력합니다. 길이가 아예 미정의되어 있으면 1로 간주됩니다.
  • 출력되는 결과는 최대 500자입니다. 그 이상의 문자열은 잘립니다.
  • 다른 틀을 사용하지 않으므로 서버 부하가 적습니다.
  • 주어진 문자열에 연속된 공백이나 위키 마크업 표현 등이 들어 있으면 의도하지 않은 결과를 출력할 수도 있습니다. '사용 예' 문단과 '제한점 및 알려진 버그' 문단을 참고하세요.

사용 예[편집]

간단한 사용 예:

입력 결과
{{str left | ABC XYZ | 5 }} 틀:Str left
{{str left | ABC XYZ | 10 }} 틀:Str left
{{str left | ABC XYZ | 1 }} 틀:Str left
{{str left | ABC XYZ | 0 }} 틀:Str left
{{str left | ABC XYZ | }} 틀:Str left
{{str left | ABC XYZ }} 틀:Str left

주어진 문자열 안의 공백( )도 한 문자로 취급되며, 연속된 공백도 그 수 만큼 문자로 취급됩니다. 단, 출력에서는 중복된 공백이나 문자열 끝의 공백은 사라집니다. 다음 예를 참고하세요.

입력 결과
{{str left | 3   spaces here. | 5 }} 틀:Str left
{{str left | 3   spaces here. | 4 }} 틀:Str left

한글처럼, 유니코드에는 지정되어 있으나 아스키 코드에 미포함된 문자를 문자열로 지정하면 한 문자의 바이트에 상관 없이 문자 수를 셉니다. 과거에 문제가 있던 기능으로, 현재 디시위키에서는 올바르게 동작합니다. 버그질라:16852 참고.

입력 결과
{{str left | 소년이여 야망을 가져라 | 7 }} 틀:Str left
{{str left | àçé | 5 }} 틀:Str left

만약 문자열에 등호(=)가 포함되어 있으면 틀 사용시 이름 있는 매개변수로 취급되기 때문에 오류가 생깁니다. 이를 방지하기 위해서는 이름 있는 매개변수를 사용하면 됩니다. 매개변수 이름으로는 1, 2를 쓰면 됩니다. 다음 예는 문자열 'ab=cde'를 다섯 자로 맞추는 것을 의도하는 코드입니다.

입력 결과 설명
{{str left | 1= ab=cde | 2= 5 }} 틀:Str left (올바른 예) 올바르게 동작함.
{{str left | ab=cde | 5 }} 틀:Str left (잘못된 예) 엉뚱한 결과가 출력됨.

제한점 및 알려진 버그[편집]

이 틀은 디시위키 매직워드인 {{padleft:}}를 변칙적으로 사용합니다. 틀에 주어진 문자열을 {{padleft:}}의 세 번째 매개변수로 입력하는데, {{padleft:}} 기능은 그에 대해 별다른 오류 검증을 하지 않기 때문에 문자열의 유효 문자 수를 잘못 셀 수 있습니다. 또한 해당 매개변수는 그 크기가 500자로 제한됩니다.

문자열에 문자 참조가 포함될 경우 다음과 같이 잘못 처리될 수 있습니다.

입력 결과 설명
{{str left | a c | 3 }} 틀:Str left 'a c'를 의도한 입력.
{{str left | a c | 8 }} 틀:Str left 문자참조  가 6자의 문자로 처리되어 출력되고, 이것이 브라우저에서 공백으로 처리됨.
{{str left | aBc | 3 }} 틀:Str left 'abc'를 의도한 입력.
{{str left | a c | 3 }} 틀:Str left 'a c'를 의도한 입력.

문자열에 위키 마크업 표현이 사용될 경우 잘못 처리될 수 있습니다. <nowiki> 태그는 내부적으로 고유의 제어문을 통해 처리됩니다. 제어문은 제어 문자 \x07(BELL)과 'UNIQ'로 시작하여 'QINU'와 제어 문자로 끝나는 43바이트 길이의 문자열입니다. 이 제어문은 최종적으로 생성된 HTML 페이지에서는 표시되지 않아야 정상입니다. 그러나 다음과 같이 제어문이 그대로 출력될 수도 있습니다. 버그질라:22555 참고.

입력 결과 설명
{{str left | a<nowiki/>bc | 3 }} 틀:Str left 'abc'를 의도한 입력이나 제어문의 첫 두 바이트가 출력됨.
{{str left | a<nowiki/>bc | 43 }} 틀:Str left 제어문 중 42바이트가 출력됨.
{{str left | a<nowiki/>bc | 44 }} 틀:Str left 제어문 43바이트가 43개의 문자로 처리 및 출력되었으나 최종 HTML 페이지 생성 과정에서 사라짐.
{{str left | a<nowiki/>bc | 45 }} 틀:Str left 제어문 43바이트가 끝나고 'b'가 출력됨.

<nowiki>의 경우와 달리, HTML 주석이나 <noinclude>, <includeonly> 등의 위키 마크업 표현은 올바르게 처리됩니다. 이는 해당 표현이 매직워드까지 넘어가지 않고 틀 자체에서 전처리되기 때문입니다.

입력 결과
{{str left | a<noinclude/>bc | 3 }} 틀:Str left
{{str left | a<!-- 주석 -->bc | 3 }} 틀:Str left