Permanently protected module

모듈:멀티 치환

Module

p = {}  현지의 기능. 멀티 치환(args)  현지의 입력 = args[1] 또는 "{{{1}}}"  현지의 평지 = args.평지 == "네"   현지의 i = 1  현지의 변경 리스트 = {}  하는 동안에 args[i * 2] 하다   현지의 바꾸다 = {양식 = args[i * 2], 리플리케이트 = args[i * 2 + 1]}   한다면 것은 아니다. 바꾸다.리플리케이트 그리고나서    돌아가다 요구하다('모듈:에러').에러{     '멀티 치환:페어링되지 않은 인수: <code>' .. (i * 2) .. ' = ' .. 바꾸다.양식 .. '/code>'    }   끝.   변경 리스트[i] = 바꾸다   i = i + 1  끝.    현지의 match List(일치 리스트) = {}  현지의 포스 = 1  현지의 렌 = 음.스트링.렌(입력)  현지의 결과 = ""  하는 동안에 포스 <=> 렌 하다   현지의 베스트 스타트 = 렌 + 1   현지의 최적의 정지 = 렌   현지의 최적의 변경   위해서 _, 바꾸다 에 아이페어(변경 리스트) 하다    현지의 개시하다, 이제 그만 = 음.스트링.발견하다(입력, 바꾸다.양식, 포스, 평지)    한다면 개시하다 그리고. (개시하다 < > 베스트 스타트) 그리고나서     베스트 스타트 = 개시하다     최적의 정지 = 이제 그만     최적의 변경 = 바꾸다    끝.   끝.   결과 = 결과 .. 음.스트링.후보선수(입력, 포스, 베스트 스타트 - 1)   한다면 최적의 변경 그리고나서    현지의 파편 = 음.스트링.후보선수(입력, 베스트 스타트, 최적의 정지)    결과 = 결과 .. (평지 그리고. 최적의 변경.리플리케이트 또는     음.스트링.서브(파편, 최적의 변경.양식, 최적의 변경.리플리케이트, 1))   끝.   포스 = 최적의 정지 + 1  끝.  돌아가다 결과 끝.  기능. p.주된(틀, ...)  현지의 args =   유형(틀) ~= '테이블' 그리고. {틀, ...} 또는   유형(틀.args) ~= '테이블' 그리고. 틀 또는   틀.args[1] 그리고. 틀.args 또는   틀:부모 취득().args  돌아가다 멀티 치환(args) 끝.  돌아가다 p