모듈 토크:논쟁들
Module talk| Arguments 모듈의 개선 사항을 논의하기 위한 대화 페이지입니다. |
| 이 모듈 버전의 텍스트 및/또는 기타 크리에이티브 콘텐츠:인수가 복사되었거나 인큐베이터로 이동되었습니다.모듈:Wp/nod/이 편집된 인수.전자 페이지의 기록은 이제 후자 페이지의 내용에 대한 속성을 제공하는 역할을 하며, 후자 페이지가 존재하는 한 삭제해서는 안 됩니다. |
반복기 손상
@스트라디바리우스 씨:이 모듈에서 미묘한 반복기 손상 버그를 발견했습니다.
현지의 논병아리 = 요구하다('모듈:인수').args를 얻다(틀) 위해서 k, v 에 논병아리 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 mw.로그.(k .. '=' .. (v 또는 '''비공식''') .. ' ') 한다면 논병아리[k .. 'subsufix'] 그리고나서 mw.로그.('의 접미사를 찾았습니다.' .. k) 끝. 끝. 일부 접미사 인수를 읽으려고 하면 메모리에 저장되어 내부 테이블에 추가되므로 반복기가 손상되고 일부 인수가 건너뛸 수 있습니다.저는 이것이 오직 일부 시간 동안만 재현 가능하다는 것을 알아차렸습니다.Jackmcbarn (대화) 02:58, 2014년 4월 13일 (UTC)
- @Jackmcbarn:좋은 발견입니다. (저는 그렇게 생각합니다.)
pairs(args)2호선에서 뿐만 아니라args?) 다음 함수 문서에 언급된 정의되지 않은 동작과 마주칩니다. "traversal에 next를 사용할 때 존재하지 않는 키에 값이 할당되면 동작이 정의되지 않습니다."__pairs 메소드가 이 모듈에서 작동하는 방식은 사용자가 인수 테이블을 인덱싱하기 전에 기존의 모든 인수가 메모되어 있다는 것을 의미합니다.따라서 사용자가 쌍을 반복하는 동안 기존 인수를 쿼리해도 이미 metaArgs 테이블에 존재하기 때문에 문제가 없습니다.사용자가 존재하지 않는 인수를 쿼리할 때 오류가 발생합니다.__index 함수는 metaArgs에서 이를 nilArg, 빈 테이블로 메모하도록 설정됩니다.즉, nil이 아닌 모든 값을 프레임 개체에서 복사한 후에도 이러한 빈 테이블을 metaArgs 테이블에 새 값으로 추가할 수 있습니다.인수가 복사되었는지 확인하기 위해 metatable.donePairs 플래그를 사용하여 샌드박스에 수정 사항을 추가했습니다.이미 복사된 경우 __index meta 메서드는 nil을 전혀 기억하지 못합니다.이렇게 하면 버그가 해결되지만 닐을 메모하지 않으면 일부 모듈에서 성능이 저하될 수 있습니다.당신이 어떻게 생각하는지 한번 보세요.또한, 아노미가 라이브로 올리기 전에 수정 사항을 확인하고 싶은 것은 아닐까요?Stradivarius♪ talk ♪ 씨, 2014년 4월 13일 16:02 (UTC) [- @스트라디바리우스 씨:네, 그것은 쌍(args)이어야 합니다.여러분이 페어 방식 안에 있을 때 설정되는 플래그는 어떨까요? 설정되는 동안 다른 테이블에 네일을 기억하고, 플래그가 설정되지 않을 때 실제 위치로 이동합니다.또한, 인수가 빈 문자열이면 빈 문자열이 nil로 변환되더라도 반복되는데, 이는 예상치 못한 일입니다.Jackmcbarn (talk) 17:47, 2014년 4월 13일 (UTC) [
- @스트라디바리우스 씨:저는 반복 기능이 언제 중단되는지를 알려주는 것이 불가능하다는 것을 깨달았습니다(호출하는 기능이 일찍 돌아올 수 있기 때문에 등). 그래서 그 아이디어는 사라졌습니다.대신에, 나는 닐이 메모되는 방식을 바꿨습니다.그들은 이제 다른 테이블로 갑니다. 그 테이블은 그 문제와 다른 문제를 동시에 해결해야 합니다.생각은?Jackmcbarn (talk) 2014년 4월 13일 23:14 () 응답
- 제가 그것을 실행하고 나서, 저는 다른 생각이 떠올랐습니다.쌍이 실행되면 argTables의 모든 내용이 이미 메타Arg의 일부이기 때문에 더 이상 메모할 걱정이 없습니다.Jackmcbarn (talk) 2014년 4월 13일 23:51 () 응답
- 쌍이 실행된 후에 기억해야 한다고 생각합니다. 사용자가 값이 0인 새 키를 쿼리할 수도 있고 매번 같은 방식으로 기억하는 것이 더 간단하기 때문입니다.저는 metaArgs에 빈 테이블을 넣는 것보다 nilArgs 테이블을 사용하는 당신의 아이디어가 좋습니다.그러면 반복기 문제가 해결되고 쌍을 사용했는지 여부에 관계없이 동일한 메모화 체계를 사용할 수 있습니다.또한 mergeArgs 함수의 작동 방식 때문에 명시적으로 허용되지 않는 한 빈 문자열을 반복해서는 안 됩니다(그 부분에서도 버그를 발견하지 않은 경우). - Stradivarius♪ talk ♪ 05:25, 2014년 4월 14일 (UTC)
- 그러나 쌍을 실행한 후에는 argTables를 더 이상 확인할 필요가 없으므로 nillArg에서 nillArg로 메모할 가치가 없습니다. 어느 쪽이든 nillArg를 반환할 수 있기 때문입니다.지금 샌드박스의 코드가 제대로 작동하지 않을까요?Jackmcbarn (대화) 2014년 4월 14일 18:28 (UTC) [
- 아 네, 당신 말이 맞습니다.저는 새로운 체크가 우리가 argTables 체크를 우회했다는 것을 의미한다는 사실을 등록하지 않았습니다.저는 코멘트를 추가하고 모듈을 업데이트했습니다. 지금 모든 것이 작동하기를 바랍니다.Stradivarius♪ talk ♪ 씨, 2014년 4월 15일 08:12 (UTC) [
- @Jackmcbarn:웁스 - 인수가 nil로 변환되는 빈 문자열일지라도 인수가 반복되는 문제를 잊고 있었습니다.이 문제는 nilArgs 테이블로 해결할 수 있지만 현재 버전에는 여전히 존재합니다.포맷을 유지하면서 nilArgs 테이블 버전으로 다시 전환해 보겠습니다.Stradivarius♪ talk ♪ 씨, 2014년 4월 15일 19:47 (UTC) [
- @스트라디바리우스 씨:nilArgs를 생각해보니 테이블 추가 조회라서 별로 마음에 들지 않습니다.반복하는 동안 nilArg가 발견되면 건너뛰고 다음 요소로 이동합니다(또는 쌍을 이룬 후 모든 nilArg를 nil로 변경).Jackmcbarn (talk) 19:49, 2014년 4월 15일 (UTC) [
- @Jackmcbarn:웁스 - 인수가 nil로 변환되는 빈 문자열일지라도 인수가 반복되는 문제를 잊고 있었습니다.이 문제는 nilArgs 테이블로 해결할 수 있지만 현재 버전에는 여전히 존재합니다.포맷을 유지하면서 nilArgs 테이블 버전으로 다시 전환해 보겠습니다.Stradivarius♪ talk ♪ 씨, 2014년 4월 15일 19:47 (UTC) [
- 아 네, 당신 말이 맞습니다.저는 새로운 체크가 우리가 argTables 체크를 우회했다는 것을 의미한다는 사실을 등록하지 않았습니다.저는 코멘트를 추가하고 모듈을 업데이트했습니다. 지금 모든 것이 작동하기를 바랍니다.Stradivarius♪ talk ♪ 씨, 2014년 4월 15일 08:12 (UTC) [
- 그러나 쌍을 실행한 후에는 argTables를 더 이상 확인할 필요가 없으므로 nillArg에서 nillArg로 메모할 가치가 없습니다. 어느 쪽이든 nillArg를 반환할 수 있기 때문입니다.지금 샌드박스의 코드가 제대로 작동하지 않을까요?Jackmcbarn (대화) 2014년 4월 14일 18:28 (UTC) [
- 쌍이 실행된 후에 기억해야 한다고 생각합니다. 사용자가 값이 0인 새 키를 쿼리할 수도 있고 매번 같은 방식으로 기억하는 것이 더 간단하기 때문입니다.저는 metaArgs에 빈 테이블을 넣는 것보다 nilArgs 테이블을 사용하는 당신의 아이디어가 좋습니다.그러면 반복기 문제가 해결되고 쌍을 사용했는지 여부에 관계없이 동일한 메모화 체계를 사용할 수 있습니다.또한 mergeArgs 함수의 작동 방식 때문에 명시적으로 허용되지 않는 한 빈 문자열을 반복해서는 안 됩니다(그 부분에서도 버그를 발견하지 않은 경우). - Stradivarius♪ talk ♪ 05:25, 2014년 4월 14일 (UTC)
샌드박스에서 nilArgs 버전을 구현했습니다.추가 테이블 룩업임에도 불구하고 상당히 우아한 솔루션이라고 생각합니다.반복하는 동안 nilArg 테이블을 건너뛰는 것은 쉽지 않습니다. __pairs 및 __ipairs 각각에 대해 반복기 내부에 반복기를 구현해야 하기 때문입니다.그리고 쌍을 이룬 후 모든 nilArg 테이블을 nil로 변경하면 __index 및 __newindex에 의해 도입된 모든 nilArg 테이블을 잡기 위해 mergeArg를 실행한 후 metaArg에서 쌍을 실행해야 합니다.nilArgs를 사용하여 메모를 하면 이러한 문제를 피할 수 있고 코드가 상당히 짧아집니다(새로운 __pairs 및 __ipairs 함수를 살펴봅니다).스트라디바리우스♪ talk ♪ 씨, 2014년 4월 15일 20:24 (UTC) [
- @스트라디바리우스 씨:좋아요, 저는 그것에 팔렸나 봐요.하지만 몇 가지 미묘한 버그가 있는 것 같습니다. 추적할 수 있는지 알아보겠습니다.Jackmcbarn (talk) 20:35, 2014년 4월 15일 (UTC) [
- 검토해 주셔서 감사합니다.내일 시간이 된다면, 저는 미세한 설명서에 명시된 방법으로 테스트 케이스를 다시 작성할 수도 있습니다.그러면 이러한 미묘한 버그를 추적하는 것이 약간 덜 성공적일 것입니다.Stradivarius♪ talk ♪ 씨, 2014년 4월 15일 20:59 (UTC []
- 또한 코드에서 버그를 발견했습니다. __newindex가 metaArgs에서 nil 인수를 제대로 덮어쓰지 않아 __pairs와 __index 모두에 문제가 발생했을 수 있습니다.Stradivarius♪ talk ♪ 씨 2014년 4월 15일 21:11 (UTC)
- @Jackmcbarn:모듈 다시 쓰기를 마쳤습니다.인수/테스트 사례 및 잘못된 입력 테스트와 반복 테스트를 추가했습니다.저는 그것을 깨려고 최선을 다했지만, 지금까지 모든 시험을 통과했습니다.예상대로 메인 모듈은 4번의 반복기 테스트에 실패합니다.그것을 깰 수 있는 다른 방법이 있습니까?그렇지 않다면, 저는 메인 모듈을 업데이트할 때라고 생각합니다.Stradivarius♪ talk ♪ 씨, 2014년 4월 17일 13:10 (UTC) [
- @스트라디바리우스 씨:좋은 것 같군요.저는 성능상의 이유로 한 번 더 검사를 추가했습니다.Jackmcbarn (talk) 2014년 4월 17일 18:47 () 응답
- @Jackmcbarn:모듈 다시 쓰기를 마쳤습니다.인수/테스트 사례 및 잘못된 입력 테스트와 반복 테스트를 추가했습니다.저는 그것을 깨려고 최선을 다했지만, 지금까지 모든 시험을 통과했습니다.예상대로 메인 모듈은 4번의 반복기 테스트에 실패합니다.그것을 깰 수 있는 다른 방법이 있습니까?그렇지 않다면, 저는 메인 모듈을 업데이트할 때라고 생각합니다.Stradivarius♪ talk ♪ 씨, 2014년 4월 17일 13:10 (UTC) [
래퍼 템플릿
이 편집 요청에 응답했습니다.설정 answered=또는 ans=요청을 다시 활성화하려면 매개 변수를 no로 지정합니다. |
Special:에서 변경하십시오.Diff/604718144/611675481.이것은 "래퍼" 옵션에 대한 지원을 추가합니다.설정하면 부모가 래퍼인 경우에만 부모 인수를 처리하고 그렇지 않은 경우에만 프레임 인수를 처리합니다.Jackmcbarn (talk) 00:25, 2014년 6월 5일 (UTC)
- 아마도 사용자: Stradivarius씨는 당신의 코드를 확인하고 이것을 적용할 수 있을 것입니다.Martin (MSGJ · talk) 2014년 6월 5일 09:12, 2014년 6월 5일 (UTC) [
- @Jackmcbarn:저는 "부모가 포장지라면"이라는 말이 무슨 뜻인지 잘 이해하지 못합니다.어떤 종류의 포장지를 말하는 건가요?프레임:getParent()를 인덱스하지 않는 것이 타당하다는 것을 알 수 있습니다. 만약 프레임이 때때로 0으로 반환된다면, 이 현상을 볼 수 있는 유일한 시간은 현재 프레임에서 frame:getParent()를 호출한 다음 Args를 가져오기 위해 부모 프레임을 전달하는 것입니다.한편, 아마도 제가 놓치고 있는 것이 있을 것입니다. 그리고 저는 이 포장지 사업에 머리를 굴리면 모든 것이 정리될 것이라고 생각합니다.일반적인 코드 검토에 대해서는,
local title, found = parent:getTitle(), false내겐 좀 위험해 보여요getTitle이 어떤 이유로 두 개의 값을 출력하는 것으로 전환될 경우(가능성은 낮지만 가능성은 있음) 이러한 문장을 별도의 행에 배치합니다.또한, 우리는 아마도 그것을 확인해야 할 것입니다.options.wrappers표입니다. 그래서 만약 그들이 다음과 같은 것을 명시한다면 우리는 사람들에게 더 유익한 오류 메시지를 줄 수 있습니다.{wrappers = true}— Stradivarius♪ talk ♪ 씨, 2014년 6월 5일 09:43 (UTC) [- @스트라디바리우스 씨:래퍼는 Template:와 같이 모듈을 호출하는 템플릿입니다.정보 상자는 모듈의 래퍼입니다.정보 상자 및 템플릿:보호된 편집이 모듈의 래퍼입니다.보호된 편집 요청입니다.그것은 영(0) 문제와 관련이 없습니다. 어쨌든 코드의 그 부분을 수정해야 했기 때문에 저는 그것을 동시에 수정했습니다.기본 시간 getParent()가 0인 것은 getParent()를 이미 한 번 호출한 경우이지만, 다른 시간은 콘솔을 통해 실제 프레임이 있는 모듈을 호출한 경우입니다.현지인들을 같은 라인으로 고정시켰습니다.테이블이 아닌 다른 테이블에 오류를 던지는 대신 모듈에 래퍼가 하나만 있는 (매우) 일반적인 경우를 처리하기 위해 테이블로 만들었습니다.New diff is Special:Diff/604718144/611678252.Jackmcbarn (대화) 13:31, 2014년 6월 5일 (UTC) [
- 아, 이제 이게 무슨 짓인지 알겠어요.따라서 getArgs가 래퍼 템플릿에서 호출되고 해당 래퍼가 옵션에 나열됩니다.래퍼는 상위 인수만 로드하므로 클라이언트 모듈에서 새 인수를 요청할 때마다 프레임 인수의 조회를 저장합니다.그리고 상위 프레임이 옵션에 나열되지 않은 경우.래퍼: 사용자가 #wraps를 통해 클라이언트 모듈을 직접 호출하는 것으로 가정합니다.추가하기에 유용한 기능인 것 같습니다.한 가지 궁금한 것이 있습니다. options.frameOnly가 설정되어 있으면 frame을 호출하지 않는 것이 코드를 너무 복잡하게 만들까요? getParent()?getParent가 전화하는 데 얼마나 비싼 프레임인지는 잘 모르겠습니다만, 굳이 전화하지 않아도 된다면 전화하지 않는 것이 말이 될 것 같습니다. (그러나 다시 말씀드리지만, frameOnly는 제 경험상 옵션으로 그렇게 많이 사용되지 않습니다.) - Stradivarius♪ talk ♪ 00:57, 6 (Reply]
- @스트라디바리우스 씨:제가 그렇게 만들었어요.New diff is Special:Diff/604718144/611759842.Jackmcbarn (talk) 01:11, 2014년 6월 6일 (UTC) [
- 최적화된 방법을 하나 더 찾았습니다.특수:Diff/604718144/611760186.Jackmcbarn (talk) 01:13, 2014년 6월 6일 (UTC) [
- 몇 가지 의견을 추가했습니다: 스페셜:Diff/604718144/611784069.코드와 테스트 케이스는 제가 보기에 좋아 보이므로, 당신이 이것에 만족한다면 메인 모듈을 업데이트할 준비가 되었다고 생각합니다.Stradivarius♪ talk ♪ 씨, 2014년 6월 6일 06:23 (UTC) [
- 최적화된 방법을 하나 더 찾았습니다.특수:Diff/604718144/611760186.Jackmcbarn (talk) 01:13, 2014년 6월 6일 (UTC) [
- @스트라디바리우스 씨:제가 그렇게 만들었어요.New diff is Special:Diff/604718144/611759842.Jackmcbarn (talk) 01:11, 2014년 6월 6일 (UTC) [
- 아, 이제 이게 무슨 짓인지 알겠어요.따라서 getArgs가 래퍼 템플릿에서 호출되고 해당 래퍼가 옵션에 나열됩니다.래퍼는 상위 인수만 로드하므로 클라이언트 모듈에서 새 인수를 요청할 때마다 프레임 인수의 조회를 저장합니다.그리고 상위 프레임이 옵션에 나열되지 않은 경우.래퍼: 사용자가 #wraps를 통해 클라이언트 모듈을 직접 호출하는 것으로 가정합니다.추가하기에 유용한 기능인 것 같습니다.한 가지 궁금한 것이 있습니다. options.frameOnly가 설정되어 있으면 frame을 호출하지 않는 것이 코드를 너무 복잡하게 만들까요? getParent()?getParent가 전화하는 데 얼마나 비싼 프레임인지는 잘 모르겠습니다만, 굳이 전화하지 않아도 된다면 전화하지 않는 것이 말이 될 것 같습니다. (그러나 다시 말씀드리지만, frameOnly는 제 경험상 옵션으로 그렇게 많이 사용되지 않습니다.) - Stradivarius♪ talk ♪ 00:57, 6 (Reply]
- @스트라디바리우스 씨:래퍼는 Template:와 같이 모듈을 호출하는 템플릿입니다.정보 상자는 모듈의 래퍼입니다.정보 상자 및 템플릿:보호된 편집이 모듈의 래퍼입니다.보호된 편집 요청입니다.그것은 영(0) 문제와 관련이 없습니다. 어쨌든 코드의 그 부분을 수정해야 했기 때문에 저는 그것을 동시에 수정했습니다.기본 시간 getParent()가 0인 것은 getParent()를 이미 한 번 호출한 경우이지만, 다른 시간은 콘솔을 통해 실제 프레임이 있는 모듈을 호출한 경우입니다.현지인들을 같은 라인으로 고정시켰습니다.테이블이 아닌 다른 테이블에 오류를 던지는 대신 모듈에 래퍼가 하나만 있는 (매우) 일반적인 경우를 처리하기 위해 테이블로 만들었습니다.New diff is Special:Diff/604718144/611678252.Jackmcbarn (대화) 13:31, 2014년 6월 5일 (UTC) [
- @Jackmcbarn:저는 "부모가 포장지라면"이라는 말이 무슨 뜻인지 잘 이해하지 못합니다.어떤 종류의 포장지를 말하는 건가요?프레임:getParent()를 인덱스하지 않는 것이 타당하다는 것을 알 수 있습니다. 만약 프레임이 때때로 0으로 반환된다면, 이 현상을 볼 수 있는 유일한 시간은 현재 프레임에서 frame:getParent()를 호출한 다음 Args를 가져오기 위해 부모 프레임을 전달하는 것입니다.한편, 아마도 제가 놓치고 있는 것이 있을 것입니다. 그리고 저는 이 포장지 사업에 머리를 굴리면 모든 것이 정리될 것이라고 생각합니다.일반적인 코드 검토에 대해서는,
2014년 7월 5일에 보호된 편집 요청
이 편집 요청에 응답했습니다.설정 answered=또는 ans=요청을 다시 활성화하려면 매개 변수를 no로 지정합니다. |
이러한 변경을 수행하십시오.이를 통해 래퍼는 이러한 동작이 명시적으로 요청된 경우에도 두 경우 모두에서 인수 집합을 제공하는 동시에 다른 경우에서는 이중 조회를 방지할 수 있습니다.Jackmcbarn (대화) 2014년 7월 5일 03:30 (UTC)
완료 문서도 업데이트해 주시면 감사하겠습니다.Stradivarius♪ talk ♪ 씨, 2014년 7월 5일 03:54 (UTC) [
Lua와 통합
이 모듈을 Scribunto에 통합하려고 합니다. 모듈과 같은 방식으로:HtmlBuilder가 있었지만 그러기 위해서는 다른 라이센스로 릴리스되어야 합니다.@스트라디바리우스 씨:@아노미:두 분 모두 GNU General Public License v2 이상(GPL v2+)에 따라 이 모듈에 대한 기여를 공개하는 데 동의하십니까?Jackmcbarn (대화) 14:58, 2014년 9월 3일 (UTC) [
- 네. Anomie⚔ 2014년 9월 3일 15:07, 2014년 9월 3일 (UTC) [
- 네, 괜찮아요.스트라디바리우스♪ talk ♪ 씨, 2014년 9월 3일 21:50 (UTC)
- 스크리분토에 이것을 추가할 gerrit:158323을 제출했습니다.이 모듈과 제출한 내용의 다음 차이점에 유의하십시오.
- 프레임과 옵션 테이블을 사용하는 대신 이제 옵션 테이블만 사용합니다.
frame옵션 중 하나입니다.이렇게 하면 표준 명명된 인수 함수가 됩니다. - 래퍼를 사용하지 않을 때는 마치
frameOnly기본적으로 설정되었습니다.부모가 무엇인지 모르는 상태에서 프레임과 부모의 주장을 무분별하게 섞는 것은 과거에 미묘한 버그를 야기했고, 정당한 사용 사례가 없는 것으로 보입니다. - 부모 인수만 원하는 경우 전달
frame:getParent()대신에frame그것을 부를 때는.그parentOnly옵션이 제거되었습니다. - 래퍼를 사용할 때 호출자가 상위 인수 외에 프레임 인수를 특별히 요청하는 경우(를 통해)
wrappersUseFrame), 상위 인수는 항상 우선 순위를 가집니다.
- 프레임과 옵션 테이블을 사용하는 대신 이제 옵션 테이블만 사용합니다.
- @미스터 스트라디바리우스: 핑.Jackmcbarn (대화) 2014년 9월 4일 21:09 (UTC) [
- 스크리분토에 이것을 추가할 gerrit:158323을 제출했습니다.이 모듈과 제출한 내용의 다음 차이점에 유의하십시오.
i18n 구현
이 모듈은 i18n을 구현해야 합니까?예를 들어 두 번째 매개 변수(부울)를 허용하면 하위 모듈에서 이름 맵을 로드하려고 합니다.예: 바나나는
args = getArgs(프레임, 참)['firstname']
바나나/i18n_de에는
{vorname = 'firstname'}을(를) 반환합니다. (반대 방향의 매핑이 더 직관적이라는 것은 인정하지만, 이를 통해 여러 매개 변수 이름을 동일한 루아 매개 변수에 매핑할 수 있습니다.)Poul G (talk) 09:40, 2014년 11월 1일 (UTC) [
- 이 아이디어의 위험은 모든 사람이 표준 이름을 사용하지 않는 한 다른 언어로 모듈을 사용하는 것이 더 어려워진다는 것입니다.예를 들어, "스페셜:"Beobachtungslist"는 데위키에 갔지만 여기나 대부분의 다른 언어 위키가 없는 경우에 작동합니다.감시 목록"은 모든 곳에서 작동합니다.Anomie⚔ 2014년 11월 1일 14:38, 2014년 11월 1일 (UTC) [
- Spzial에 소프트 리다이렉트가 있는 이유:Beobachung 리스트?Anomie⚔ 2014년 11월 1일 14:45 () [회신
- 영어가 아닌 언어의 사용자 편집자는 모국어로 된 템플릿에 액세스할 수 있어야 합니다.그러나 동시에 루아 모듈에서 논리를 공유하는 것은 큰 이점이 될 것입니다.즉, 번역이 필요합니다. 템플릿에 있을 수 있습니다.
{{#Person:name firstname={{{vorname }}} ...}}또는 모듈 구성 내 i18n에 숨겨져 있습니다.(아마 번역이 필요 없는 사이트에서 이것을 연 것이 실수였을 것입니다.)Poul G (talk) 12:45, 2014년 11월 3일 (UTC) [
이 모듈에서 다음과 같은 유니코드 이름을 가진 명명된 매개 변수를 처리할 수 있습니까?
{{my_messename_1 пааеръ = 123 named_2 = ... 등.}}--Pl71 (talk) 15:32, 2016년 2월 24일 (UTC) [
쌍벌레
방금 이 모듈의 페어 코드에서 버그를 발견했습니다.args 테이블의 값을 0으로 설정하여 삭제해도 쌍을 사용하여 args 테이블에 액세스한 경우 값이 그대로 유지되는 것으로 나타났습니다.제 샌드박스에 버그에 대한 데모가 있는데, 현재 실패하고 있는 테스트 사례를 두 개 추가했습니다.
이것을 고치려면, 우리는 네일을 메모할 새로운 테이블이 필요할 것 같습니다.mergeArgs를 호출할 때 인수가 명시적으로 삭제되었는지 확인해야 하지만 동시에 nilArgs의 값을 덮어쓸 수 있어야 우선 순위 공백 인수가 제대로 작동합니다.테이블 하나가 어떻게 두 가지 기능을 모두 수행할 수 있는지 모르겠습니다.
또는 모듈을 프레임 변수 또는 상위 프레임 변수만 확인하고 둘 다 확인하지 않도록 변경하면 nilArgs 테이블 하나를 사용하지 않아도 됩니다.제 기억이 맞다면, 이것이 Scribunto 내부에서 제안된 getArgs 함수가 하는 일입니다. 그래서 만약 그 솔루션이 더 나은 것 같으면, 우리는 그 함수가 배포되기를 기다렸다가 기존의 모든 모듈을 그것으로 전환할 수 있습니다.Stradivarius 씨, 2014년 12월 9일 06:59 (UTC) [
- @스트라디바리우스 씨:새로운 getArgs 함수에는 여전히 두 가지를 모두 읽을 수 있는 에지 케이스가 하나 있어서, 그것은 우리를 구할 수 없습니다.하지만 추가 테이블을 추가하지 않고 작동할 수 있는 방법을 찾았습니다.샌드박스 안에 있습니다.Jackmcbarn (대화) 15:11, 2014년 12월 9일 (UTC) 응답[
- @Jackmcbarn:네, 그것은 그것을 해결하기 위한 좋은 접근법으로 보입니다. - 확실히 다른 표를 소개하는 것보다 더 낫습니다.3차 논리를 사용하는 대신 Lua가 __mode로 수행하는 것과 유사한 상태를 나타내는 문자열을 사용하는 것은 어떻습니까?그렇게 하면 코드를 더 읽을 수 있을 것 같습니다.딱딱하고 부드러운 손톱에는 'hard'와 'soft'를 사용할 수 있고, 간결하게 말하고 싶다면 'h'와 's'만 사용할 수 있습니다.Stradivarius씨♪ talk ♪ 15:55, 2014년 12월 9일 (UTC)
- @스트라디바리우스 씨:좋아요, 됐습니다.Jackmcbarn (talk) 2014년 12월 10일 04:11 (UTC) [
- @잭맥반: 좋아 보이네요.변경할 사항이 없는 한, 메인 모듈을 지금 업데이트해도 괜찮을 것 같습니다.Stradivarius♪ talk ♪ 씨, 2014년 12월 10일 04:37 (UTC) [
- @스트라디바리우스 씨:사실 있습니다만, 아직은 할 수 없습니다.일단 저렴한 mw.title.new 변경 사항이 도착하면 이 mw.title.new를 사용하여 래퍼 이름을 정규화하고 싶습니다(모듈이 다른 네임스페이스 이름으로 Wiki로 변환될 때 깨지는 내용을 줄이기 위해).Jackmcbarn (talk) 03:57, 2014년 12월 11일 (UTC) 응답
- @Jackmcbarn:알겠습니다, 하지만 현재 버그를 수정하기 전에 그것을 기다릴 필요는 없다고 생각합니다.지금 모듈을 업데이트하겠습니다.Stradivarius♪ talk ♪ 씨, 2014년 12월 11일 04:27 (UTC) [
- 알겠습니다. Jackmcbarn (talk) 2014년 12월 11일 04:28 (UTC)
- @Jackmcbarn:알겠습니다, 하지만 현재 버그를 수정하기 전에 그것을 기다릴 필요는 없다고 생각합니다.지금 모듈을 업데이트하겠습니다.Stradivarius♪ talk ♪ 씨, 2014년 12월 11일 04:27 (UTC) [
- @스트라디바리우스 씨:사실 있습니다만, 아직은 할 수 없습니다.일단 저렴한 mw.title.new 변경 사항이 도착하면 이 mw.title.new를 사용하여 래퍼 이름을 정규화하고 싶습니다(모듈이 다른 네임스페이스 이름으로 Wiki로 변환될 때 깨지는 내용을 줄이기 위해).Jackmcbarn (talk) 03:57, 2014년 12월 11일 (UTC) 응답
- @잭맥반: 좋아 보이네요.변경할 사항이 없는 한, 메인 모듈을 지금 업데이트해도 괜찮을 것 같습니다.Stradivarius♪ talk ♪ 씨, 2014년 12월 10일 04:37 (UTC) [
- @스트라디바리우스 씨:좋아요, 됐습니다.Jackmcbarn (talk) 2014년 12월 10일 04:11 (UTC) [
- @Jackmcbarn:네, 그것은 그것을 해결하기 위한 좋은 접근법으로 보입니다. - 확실히 다른 표를 소개하는 것보다 더 낫습니다.3차 논리를 사용하는 대신 Lua가 __mode로 수행하는 것과 유사한 상태를 나타내는 문자열을 사용하는 것은 어떻습니까?그렇게 하면 코드를 더 읽을 수 있을 것 같습니다.딱딱하고 부드러운 손톱에는 'hard'와 'soft'를 사용할 수 있고, 간결하게 말하고 싶다면 'h'와 's'만 사용할 수 있습니다.Stradivarius씨♪ talk ♪ 15:55, 2014년 12월 9일 (UTC)
아이페어 버그
@스트라디바리우스 씨:저는 인수에 ipairs()를 호출한 다음 루프를 일찍 해제하면 반복되는 인수만 아니라 불필요하게 모든 숫자 인수가 확장된다는 것을 발견했습니다.저는 이에 대한 테스트 케이스를 추가하고 샌드박스에 수정을 구현했습니다.그것을 좀 봐주실 수 있나요?좋아 보이면 메인 모듈에 (샌드박스에서 대기 중인 다른 변경사항과 함께) 추가하겠습니다.Jackmcbarn (talk) 05:32, 2014년 12월 28일 (UTC) 응답
- @잭맥반: 답장이 늦어서 죄송합니다.사실 어제와 오늘은 몸이 좀 안 좋아서 지금 코드 리뷰를 할 자신이 없어요.제가 더 높은 뇌 기능을 회복한 후에 이것을 볼 것입니다. 또는 만약 당신이 계속해서 수정을 실행하고 싶다면, 저는 괜찮습니다.Stradivarius 씨, 2014년 12월 29일 06:27 (UTC) [
문서 인수 번역 시스템
안녕 잭맥반!
이것에 대한 문서를 추가해 주시겠습니까?Helder 2015년 9월 1일 11:12 (UTC) [
- 더 낫지만 호환되지 않는 방법이 곧 사용될 것이기 때문에 지금은 사용을 권장하지 않습니다.Jackmcbarn (대화) 2015년 9월 1일 19:23 (UTC) [
- @Jackmcbarn: 그것에 대해 더 자세히 설명해 줄 수 있습니까?그 새로운 방법은 어디서 개발되고 있습니까?개최자 2015년 9월 13일 19:30 (UTC) [
- @He7d3r:이미 작성되었습니다. 승인을 기다리고 있을 뿐입니다.gerrit:158323에서 볼 수 있습니다.Jackmcbarn (대화) 20:58, 2015년 9월 13일 (UTC) [
- @Jackmcbarn: 그것에 대해 더 자세히 설명해 줄 수 있습니까?그 새로운 방법은 어디서 개발되고 있습니까?개최자 2015년 9월 13일 19:30 (UTC) [
Jackmcbarn, Helder, 이제 표 형식의 데이터 지원을 통해 글로벌 번역을 쉽게 구현할 수 있습니다.저는 이미 TNT 모듈로 시작했습니다.모듈이나 템플릿을 수정 없이 어디서나 복사할 수 있으며 모든 현지화는 Commons의 한 곳에서 수행됩니다.이는 핵심 변경 없이 매개 변수 현지화도 도입할 수 있음을 의미합니다.도움이 필요하시면 알려주세요 :) --유릭 (대화) 03:46, 2017년 1월 13일 (UTC)
- 멋지네요! 제가 계속 지켜볼게요.2017년 1월 18일 12:01 (UTC) 응답[
쌍 사용
모듈을 심각하게 사용한 적이 없습니다.모듈에서 사용되는 방법을 살펴보니 인수:팀 출연자 명단입니다. 기본 옵션에 대해 잘 모르겠습니다.ipairs모듈이 다음을 수행하면 어떻게 됩니까?
현지의 args를 얻다 = 요구하다('모듈:인수').args를 얻다 현지의 논병아리 = args를 얻다(틀) 여기서 프레임은 템플릿에서 호출됩니다. 위해서 i, v 에 짝을 짓다(논병아리) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 인쇄물(i, v) 끝. 예상대로 작동하는 것으로 알고 있습니다.{{example one two three}}(또한 각 매개 변수에서 선행/후행 공백을 잘라냅니다.)
그러나 다음에서 "하나"만 처리합니다.{{example one three}}빈 두 번째 매개 변수가 0으로 변환되고 ipairs가 종료되기 때문입니다.
즉, 모듈을 사용하는 모든 것이 다음을 의미합니다.숫자 인수의 수가 가변적인 인수는 다음과 같은 것을 사용해야 합니다.compressSparseArray모듈에서:테이블 도구(또는 매개 변수를 트리밍/제거하지 않도록 옵션 설정)?그것이 사실이라면, 저는 이 문서에 언급될 것이라고 생각했을 것입니다.모듈의 초기 버전 실행:인수는 기본적으로 빈 매개 변수를 제거하여 제공된 각 숫자 매개 변수를 쌍으로 처리합니다(그렇게 된 것으로 생각됨).Johnuniq (talk) 2016년 11월 18일 03:25 (UTC) [
더 나은 테스트 사례 작성에 도움
개발자 여러분 안녕하세요, 저는 mw와 함께 일하고 있습니다.다국어 템플릿 및 모듈과 이 모듈을 공유 모듈로 변환하려면 더 나은 MW가 필요합니다.모듈: 인수/테스트 사례.누구 좀 도와주시겠어요?@Frietjes, RexxS, Jonuniq, Mr. Stradivarius, Anomie, Xaosflux, Ans, Jackmcbarn, Jonsey95 Capankajsmilyo(Talk Infobox assistance) 2019년 5월 10:39, 22일(UTC) 회신[
인수에 "="을(를) 포함할 수 없습니까?
테스트 사례 참조:모듈:샌드박스/시자오/테스트(Module talk:Sandbox/shizhao/test, 인수에 "="가 포함된 경우 Lua 오류: 잘못된 인수 #1 ~ '일치'(문자열 예상, 0이 됨).--Shizhao (대화) 15:45, 2020년 1월 21일 (UTC)
- @Shizhao 그것은 단지 표준 절차입니다: 템플릿 또는 모듈 호출에서 다음과 같은 매개 변수.
aaa=bbb값이 있는 명명된 매개 변수로 나타납니다.bbb매개변수에 대하여aaadiff의 수정 사항을 참조하십시오.아직 어떤 모듈을 살펴보지 않았습니다.Sandbox/shizhao/test를 위한 것이지만 서명에 구애받지 마십시오. 단순하게 유지하는 것이 가장 좋으며 편집자가 개인적인 목적으로 모듈을 필요로 하지 않아야 합니다.Johnuniq (대화) 2020년 1월 21일 22:43 (UTC) [
프레임과 parentFrame 동시 사용
래퍼 템플릿 템플릿이 있습니다.다음을 사용하는 권한 제어(예술){{#invoke:Authority control show=arts}}
그리고 기사에, 저는 사용하고 싶습니다.{{Authority control (arts) show=CZ,ES}}더 보여드리기 위해서.
이 두 값을 쉼표로 구분된 목록으로 연결하려고 합니다.show = arts,CZ,ES}이것이 이 모듈로 가능한 것입니까?마틴 (MSGJ · talk) 2023년 1월 20일 (UTC) :17답변 [
- @MSGJ: 아니요 - 이 모듈은 프레임과 상위 프레임 모두에서 값을 가져올 수 있지만 한 쪽이 우선 순위를 차지하고 다른 쪽을 덮어씁니다.원하는 작업을 수행하려면 사용자 정의 논리가 필요합니다.스트라디바리우스♪ talk ♪ 씨, 2023년 1월 20일 13:56 (UTC) [
대소문자를 구분하지 않는 인수
Module:의 클라이언트 모듈에서 대소문자를 구분하지 않는 인수 이름을 요청했습니다.enWS(enWP에서 가져오는)에 대한 인수입니다.요청된 구체적인 사례는 치료였습니다. Volume=와 동등하게 volume=(enWS의 기고자들이 효과를 기대하는 역사적인 이유가 있습니다.)처음에는 클라이언트 모듈에서 구현하기에 매우 지저분하게 보이는 것과 동시에 1) 옵션으로 구현하는 것이 가장 좋습니다(ala). trim=또는 removeBlanks=) 모듈:인수 및 2)는 일반적으로 모듈의 다른 클라이언트에 유용합니다.논쟁들.너무 깊이 파고들지 않고는 정말로 "규례적인 케이스"가 될 것이라고 생각합니다. 즉, 옵션이 설정되었을 때 제공된 모든 인수 이름을 내부적으로 낮게 대소문자로 구분하는 것입니다.
