모듈:언스트
Module| 이 Lua 모듈은 전체 페이지의 약 20%인 약 11,800,000 페이지에서 사용됩니다. 주요 중단 및 서버 로드를 방지하려면 모듈의 /sandbox 또는 /testcase 하위 페이지 또는 자체 모듈 샌드박스에서 변경 사항을 테스트해야 합니다.테스트한 변경사항을 한 번의 편집으로 이 페이지에 추가할 수 있습니다.실행하기 전에 대화 페이지에서 변경 사항에 대해 논의하는 것을 고려합니다. |
| 이 모듈은 페이지 보호 대상입니다.매우 많은 페이지에서 사용하는 가시성이 높은 모듈이거나 매우 자주 교체됩니다.파손이나 실수는 많은 페이지에 영향을 미치고 사소한 편집으로도 서버에 상당한 부하가 발생할 수 있기 때문에 편집으로부터 보호됩니다. |
{{Citation need}} 또는 {{Refremov}}와 같은 유지관리 템플릿은 절대 교체해서는 안 됩니다.이를 방지하는 방법은 템플릿을 제외된 형식으로 대체하는 것입니다.이 모듈은 그 트릭을 구현합니다.
인포박스는 모듈을 사용해야 합니다.기본적으로 블록 형식으로 나열된 매개 변수가 있는 다른 템플릿과 마찬가지로 Unlast-infobox.
사용.
템플릿을 자체 대체 템플릿으로 변경하려면 기존 템플릿 코드를 다음으로 감싸십시오.
{{SAFESUBST:<포함되지않습니다 />#invoke:$B = [...기존 템플릿 코드... ] } 제출하지 않을 때 표시할 위키텍스트는 "$B"로 지정해야 합니다.#invoke로 전달된 다른 모든 파라미터는 생성된 템플릿 호출에 기본값으로 복사됩니다.이러한 기본 매개변수 중 하나의 값이__DATE__, 생성된 템플릿 호출에서 해당 값은 현재 월 및 연도가 됩니다.
일부 템플릿에는<noinclude>하지만 일치하지 않는</noinclude>템플릿의 끝에.이런 경우에 실종자들은</noinclude>끝맺기 전에 추가해야 합니다.}}.
고급.
{{SAFESUBST:<포함되지않습니다 />#invoke:$params=[parameters] $aliases=[ alias] $flags=[flags] $B=[...기존 템플릿 코드... ] } Lua 제한으로 인해 일반적으로 템플릿을 대체할 때 모수가 무작위로 정렬됩니다. $params=#invoke에서 사용할 수 있습니다.템플릿 매개 변수를 쉼표로 구분하여 순서대로 나열하지 않습니다(예:egg,bacon,sausage,cheese,spam). 번호가 매겨진 매개 변수는 목록의 다른 매개 변수보다 먼저 있어야 합니다.나머지 파라미터는 생성된 호출의 끝에 고정됩니다.
매개 변수 별칭은 에 나열할 수 있습니다. $aliases=(에 나열되어서는 안 됩니다.) $params=), 자동으로 교체됩니다.각 별칭과 해당 별칭의 대체 형식은 다음과 같습니다.alias>replacement, 각 쌍은 쉼표로 구분되어야 합니다(예:œuf>egg,melt>cheese). 이 매개변수는 사용하거나 사용하지 않고 작동할 수 있습니다. $params=.
매개변수 $flags=모듈 동작의 다른 측면을 수정하는 데 사용할 수 있습니다. 항목은 쉼표로 구분됩니다.유효한 플래그는override(# invoke의 매개변수 allows: 원래 템플릿 호출의 매개변수보다 우선합니다.);keep-whitespace(이름 없는 매개변수에서 공백을 트리밍하지 않는 prevents); 그리고remove-empty(빈 매개 변수를 removes합니다.)
이러한 파라미터는 더 복잡한 옵션을 제공하기 위해 파서 함수를 사용하여 조작할 수 있습니다(파라미터에서 파서 함수, 템플릿 또는 모듈 호출도 다음과 같이 해야 함에 유의하십시오).SAFESUBST:<noinclude />).
매개변수 $template-name=는 이 매개 변수에 할당된 템플릿 이름으로 하위 템플릿 이름을 재정의합니다.
예
템플릿 고려:다음 코드를 포함하는 예제:
{{SAFESUBST:<포함되지않습니다 />#invoke:해제 foo=bar date=__DATE__ $B= [...템플릿 코드가 여기로... ]} | 원래의 | 결과 |
|---|---|
{{subst:example}} | {{Example date=November 2023}} |
{{subst:example foo=X}} | {{Example foo=X date=November 2023}} |
{{subst:example baz=X}} | {{Example baz=X date=November 2023}} |
{{subst:example date=January 2001}} | {{Example foo=bar date=January 2001}} |
현지의 checkType = 요구하다('libraryUtil').checkType 현지의 p = {} 현지의 바디_PARAM = '$B' 현지의 특별한 참새 = { ['$params'] = '파라미터 목록', ['$ aliases'] = '파라미터 별칭', ['$ flags'] = 'flags', ['$B'] = 'template 내용', ['$template-name'] = 'template 호출 이름 덮어쓰기', } 기능. p.주된(틀, 몸) -- 우리가 대체할 경우, 이 함수는 템플릿 호출을 반환하고, 다음과 같은 경우 -- 아닙니다. 템플릿 본문을 반환합니다.템플릿 본문은 다음에서 지정할 수 있습니다. -- 본문 매개변수 또는 에 정의된 템플릿 매개변수에서 -- BODY_PARAM 변수입니다.이 기능은 Lua 또는 에서 호출할 수 있습니다. -- #invoke. -- 교체하지 않으면 템플릿 본문을 반환합니다. 한다면 것은 아니다. mw.isSubsting() 그리고나서 한다면 몸 ~= 영의 그리고나서 돌아가다 몸 그렇지 않다면 틀.아그르그르그르그르그르그르그르그르그.[바디_PARAM] ~= 영의 그리고나서 돌아가다 틀.아그르그르그르그르그르그르그르그르그.[바디_PARAM] 또 다른 과오(끈의형식의( "템플릿 내용이 지정되지 않았습니다(# invoke의 매개변수 '%s' 사용).", 바디_PARAM ), 2) 끝. 끝. -- 프레임 개체의 상태를 확인합니다. 한다면 유형(틀) ~= '테이블' 아니면 유형(틀.get parent.) ~= '기능' 아니면 것은 아니다. 틀:get parent.() 그리고나서 과오( "1번부터 'main' argument은 부모가 있는 프레임 개체여야 합니다." .. "프레임 사용 가능", 2 ) 끝. -- 호출 이름을 찾습니다. 현지의 m템플릿호출 = 요구하다('모듈:템플릿 호출') 현지의 이름. 한다면 틀.아그르그르그르그르그르그르그르그르그.['$template-name'] 그리고. '' ~= 틀.아그르그르그르그르그르그르그르그르그.['$template-name'] 그리고나서 이름. = 틀.아그르그르그르그르그르그르그르그르그.['$template-name'] -- 템플릿 이름이 이 이름으로 무엇이든 덮어쓰기 또 다른 이름. = m템플릿호출.이름.(틀:get parent.():제목 가져오기()) 끝. -- 전달된 인수를 전달된 기본값과 결합 현지의 아그르그르그르그르그르그르그르그르그. = {} 한다면 끈의찾아내다( ','..(틀.아그르그르그르그르그르그르그르그르그.['$ flags'] 아니면 '')..',', '%s*override%s*, ) 그리고나서 위해서 k, v 안에 쌍들( 틀:get parent.().아그르그르그르그르그르그르그르그르그. ) 하 아그르그르그르그르그르그르그르그르그.[k] = v 끝. 위해서 k, v 안에 쌍들( 틀.아그르그르그르그르그르그르그르그르그. ) 하 한다면 것은 아니다. 특별한 참새[k] 그리고나서 한다면 v == '__DATE__' 그리고나서 v = mw.내용 언어 가져오기():서식 날짜( FY'. ) 끝. 아그르그르그르그르그르그르그르그르그.[k] = v 끝. 끝. 또 다른 위해서 k, v 안에 쌍들( 틀.아그르그르그르그르그르그르그르그르그. ) 하 한다면 것은 아니다. 특별한 참새[k] 그리고나서 한다면 v == '__DATE__' 그리고나서 v = mw.내용 언어 가져오기():서식 날짜( FY'. ) 끝. 아그르그르그르그르그르그르그르그르그.[k] = v 끝. 끝. 위해서 k, v 안에 쌍들( 틀:get parent.().아그르그르그르그르그르그르그르그르그. ) 하 아그르그르그르그르그르그르그르그르그.[k] = v 끝. 끝. -- 별도로 지정되지 않은 경우 트림 매개변수 한다면 것은 아니다. 끈의찾아내다( ','..(틀.아그르그르그르그르그르그르그르그르그.['$ flags'] 아니면 '')..',', '%s*유지% - whitespace%s*, ) 그리고나서 위해서 k, v 안에 쌍들( 아그르그르그르그르그르그르그르그르그. ) 하 아그르그르그르그르그르그르그르그르그.[k] = mw.우스트링.경기(v, '^%s*(.*)%s*
