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