모듈:텍스트/샌드박스

Module
현지의 네, 아니요 = 요구하다("모듈:네, 아니요.) 현지의 본문 = { 시리얼 = "2017-11-01",                스위트  = "텍스트" } --[=[ 텍스트 유틸리티 ]=]    -- 지역 대회 현지의 패턴CJK        = 거짓의 현지의 패턴 조합   = 거짓의 현지의 패턴라틴어      = 거짓의 현지의 패턴 종단 = 거짓의 현지의 견적 랑         = 거짓의 현지의 견적 유형         = 거짓의 현지의 범위 라틴어       = 거짓의 현지의 시크 견적서         = 거짓의  현지의 기능. initLatinData(라틴 데이터)()     한다면 것은 아니다. 범위 라틴어 그리고나서         범위 라틴어 = { {    7,  687 },                         { 7531, 7578 },                         { 7680, 7935 },                         { 8194, 8250 } }     끝.     한다면 것은 아니다. 패턴라틴어 그리고나서         현지의 범위         패턴라틴어 = "^["         위해서 i = 1, #범위 라틴어 하다             범위 = 범위 라틴어[ i ]             패턴라틴어 = 패턴라틴어 ..                            .스트링.( 범위[ 1 ], 45, 범위[ 2 ] )         끝.    -- i의 경우         패턴라틴어 = 패턴라틴어 .. "]*$"     끝. 끝.  현지의 기능. init Quote Data(init Quote Data)()     -- 견적 정의 작성     한다면 것은 아니다. 견적 랑 그리고나서      견적 랑 =               { af        = "bd",                   ar        = "라",                   있다        = "랩드",                   bg        = "bd",                   ca        = "라",                   cs        = "bd",                           = "bd",                           = "bd",                   dsb       = "bd",                   et        = "bd",                           = "lald",                   에다.        = "ld",                   es        = "라",                   eu        = "라",             -- fa = "la",                   fi        = "rd",                   프루        = "lasSPC",                           = "ld",                           = "ldla",                   시간        = "bd",                   hsb       = "bd",                           = "bd",                   hy        = "랩드",                   아이디        = "rd",                           = "bd",                   그것        = "ld",                   네.        = "x300C",                           = "bd",                           = "ld",                   그것        = "bd",                   LV        = "bd",                   nl        = "ld",                   하지 않다        = "라",                   아니요.        = "라",                   pl        = "bdla",                   pt        = "lald",                           = "bdla",                           = "랩드",                   스케이        = "bd",                   sl        = "bd",                   평방        = "라",                   시루        = "bx",                   sv        = "rd",                           = "ld",                   tr        = "ld",                   uk        = "라",                   zh        = "ld",                   [디치] = "라",                   ["en-gb"] = "lsld",                   ["en-us"] = "ld",                   ["fr-ch"] = "라",                   ['잇치'] = "라",                   ['pt-br'] = "ldla",                   ["zh-tw"] = "x300C",                   ["zh-cn"] = "ld" }     끝.     한다면 것은 아니다. 견적 유형 그리고나서      견적 유형 =               { bd    = { { 8222, 8220 },  { 8218, 8217 } },                   bdla  = { { 8222, 8220 },  {  171,  187 } },                   bx    = { { 8222, 8221 },  { 8218, 8217 } },                       = { {  171,  187 },  { 8249, 8250 } },                   laSPC = { {  171,  187 },  { 8249, 8250 },  진실의 },                     = { {  171,  187 },  { 8222, 8220 } },                   밧데리  = { {  171,  187 },  { 8220, 8221 } },                   ld    = { { 8220, 8221 },  { 8216, 8217 } },                   ldla  = { { 8220, 8221 },  {  171,  187 } },                   인식하다  = { { 8216, 8217 },  { 8220, 8221 } },                   rd    = { { 8221, 8221 },  { 8217, 8217 } },                   x300C = { { 0x300C, 0x300D },                             { 0x300E, 0x300F } } }     끝. 끝. --initQuoteData()    현지의 기능. 견적서( 적용합니다., 외계인, 발전 )     -- 따옴표 텍스트     -- 파라미터:     -- apply -- 문자열, 텍스트 포함     -- alien -- 문자열, 언어 코드 포함     -- advanced -- 레벨1 또는 레벨2의 번호     현지의 r = 적용합니다. 그리고. 스트링(적용합니다.) 또는 ""     외계인 = 외계인 또는 "en"     발전 = 톤수(발전) 또는 0     현지의 스위트     init Quote Data(init Quote Data)()     현지의 속어. = 외계인:경기( "^(%l+)" )     스위트 = 견적 랑[외계인] 또는 속어. 그리고. 견적 랑[속어.] 또는 견적 랑["en"]     한다면 스위트 그리고나서         현지의 따옴표 = 견적 유형[ 스위트 ]         한다면 따옴표 그리고나서             현지의 공간             한다면 따옴표[ 3 ] 그리고나서                 공간 = "&#160;"             또 다른                 공간 = ""             끝.             따옴표 = 따옴표[ 발전 ]             한다면 따옴표 그리고나서                 r = .스트링.포맷( %s%s%s%s%s%s,                                        .스트링.( 따옴표[ 1 ] ),                                        공간,                                        적용합니다.,                                        공간,                                        .스트링.( 따옴표[ 2 ] ) )             끝.         또 다른             .로그.( "fiat Quote()" .. 스위트 )         끝.     끝.     돌아가다 r 끝. -- fiat Quote()    본문. = 기능. ( 적용합니다., 다시., 받아들이다 )     -- 코드 포인트에서 문자열을 만듭니다.     -- 파라미터:     -- apply -- 숫자 코드 포인트가 있는 테이블(시퀀스) 또는 0     -- 다시 -- 반복 횟수 또는 0     -- accept -- 추가되는 오류 메시지가 없는 경우 true입니다.     -- 반환: 문자열     현지의 r = ""     적용합니다. = 유형(적용합니다.) == "테이블" 그리고. 적용합니다. 또는 {}     다시. = math.floor(톤수(다시.) 또는 1)     한다면 다시. < > 1 그리고나서      돌아가다 ""     끝.     현지의 나빠   = { }     현지의 코드 = { }     위해서 _, v  아이페어( 적용합니다. ) 하다      현지의 n = 톤수(v)      한다면 것은 아니다. n 또는 (n < > 32 그리고. n ~= 9 그리고. n ~= 10) 그리고나서       table.insert(나빠, 스트링(v))      또 다른       table.insert(코드, math.floor(n))   끝.     끝.      한다면 #나빠 > 0 그리고나서      한다면 것은 아니다. 받아들이다 그리고나서       r = 스트링(  .html.만들다( "스판" )                       :클래스 추가( "에러" )                       :위키텍스트( "부정한 코드 포인트: " .. table.concat( 나빠, " " )) )      끝.      돌아가다 r     끝.     한다면 #코드 > 0 그리고나서      r = .스트링.( 개봉하다( 코드 ) )      한다면 다시. > 1 그리고나서       r = r:대표자(다시.)      끝.  끝.     돌아가다 r 끝. -- Text.char()  현지의 기능. trimAndFormat(트림앤드포맷)(args, fmt)  현지의 결과 = {}  한다면 유형(args) ~= "테이블" 그리고나서   args = {args}  끝.  위해서 _, v  아이페어(args) 하다   v = .본문.다듬다(스트링(v))   한다면 v ~= "" 그리고나서    table.insert(결과,fmt 그리고. .스트링.포맷(fmt, v) 또는 v)   끝.  끝.  돌아가다 결과 끝.  본문.콘캣패럼 = 기능. ( args, 적용합니다., 적응하다 )     -- 목록 항목을 하나의 문자열로 묶습니다.     -- 파라미터:     -- args -- numKey=string을 사용하는 테이블(시퀀스)     -- apply -- 문자열(옵션); 구분자(기본값: " ")     -- adapt -- 문자열(옵션), "%s"를 포함한 형식     -- 반환: 문자열     현지의 모으다 = { }     돌아가다 table.concat(trimAndFormat(트림앤드포맷)(args,적응하다), 적용합니다. 또는 " ") 끝. -- Text . concat Params ( )    본문.포함하다CJK = 기능. ( s )     CJK 코드가 들어있나.     -- 파라미터:     -- s -- 문자열     -- 반환: CJK가 검출한 경우 true     s = s 그리고. 스트링(s) 또는 ""     한다면 것은 아니다. 패턴CJK 그리고나서         패턴CJK = .스트링.( 91,                                      4352, 45,   4607,                                     11904, 45,  42191,                                     43072, 45,  43135,                                     44032, 45,  55215,                                     63744, 45,  64255,                                     65072, 45,  65103,                                     65381, 45,  65500,                                       131072, 45, 196607,                                       93 )     끝.     돌아가다 .스트링.발견하다( s, 패턴CJK ) ~= 제로 끝. -- Text . contains CJK ( )  본문.remove Delimited(지연) = 기능. (s, 접두사, 접미사)  -- 접두사와 접미사로 구분된(포함) 내의 모든 텍스트를 삭제합니다.  -- 인수:  --s = 처리할 문자열  -- prefix = 초기 딜리미터  -- suffix = 끝 딜리미터  -- 반환: string string  s = s 그리고. 스트링(s) 또는 ""  접두사 = 접두사 그리고. 스트링(접두사) 또는 ""  접미사 = 접미사 그리고. 스트링(접미사) 또는 ""  현지의 prefixLen = .스트링.(접두사)  현지의 접미사 Len = .스트링.(접미사)  한다면 prefixLen == 0 또는 접미사 Len == 0 그리고나서   돌아가다 s  끝.  현지의 i = s:발견하다(접두사, 1, 진실의)  현지의 r = s  현지의 j  하는 동안에 i 하다   j = r:발견하다(접미사, i + prefixLen)   한다면 j 그리고나서    r = r:후보선수(1, i - 1)..r:후보선수(j+접미사 Len)   또 다른    r = r:후보선수(1, i - 1)   끝.   i = r:발견하다(접두사, 1, 진실의)  끝.  돌아가다 r 끝.  본문.겟플레인 = 기능. ( 조정한다. )     -- 템플릿 이외의 문자열에서 Wikisyntax를 삭제합니다.     -- 파라미터:     -- adjust -- 문자열     -- 반환: 문자열     현지의 r = 본문.remove Delimited(지연)(조정한다.,"<!--","-->")     r = r:서브( (<?%l[^>*>), "" )          :서브( "'''", "" )          :서브( "''", "" )          :서브( "&nbsp;", " " )     돌아가다 r 끝. -- Text . get Plain ( )  본문.isLatinRange = 기능. (s)     ·문자는 라틴어 또는 라틴어 텍스트 내의 기호로 해야 합니까?     -- 인수:     --s = 분석할 문자열     -- 반환: true(라틴에만 유효한 경우)     s = s 그리고. 스트링(s) 또는 ""  --- 입력이 항상 문자열임을 확인합니다.     initLatinData(라틴 데이터)()     돌아가다 .스트링.경기(s, 패턴라틴어) ~= 제로 끝. -- Text . is LatinRange ( )    본문.견적서 = 기능. ( s )     --이 문자는 따옴표가 있나요?     -- 파라미터:     --s = 분석할 단일 문자     -- 반환: s가 따옴표일 경우 true     s = s 그리고. 스트링(s) 또는 ""     한다면 s == "" 그리고나서      돌아가다 거짓의     끝.     한다면 것은 아니다. 시크 견적서 그리고나서         시크 견적서 = .스트링.(   34,       -- "                                        39,       -- '                                       171,       --라쿠오                                       187,       --라쿠오                                      8216,       -- lsquo                                      8217,       -- rsquo                                      8218,       -- sbquo                                      8220,       -- ldquo                                      8221,       --rdquo                                      8222,       -- bdquo                                      8249,       -- lsaquo                                      8250,       -- rsaquo                                      0x300C,     - CJK                                      0x300D,     - CJK                                      0x300E,     - CJK                                      0x300F )    - CJK     끝.     돌아가다 .스트링.발견하다( 시크 견적서, s, 1, 진실의 ) ~= 제로 끝. -- Text . is Quote ( )    본문.list To = 기능. ( args, 적응하다 )     -- mw.text.listToText()와 유사한 형식의 목록 항목     -- 파라미터:     -- args -- numKey=string을 사용하는 테이블(시퀀스)     -- adapt -- 문자열(옵션), "%s"를 포함한 형식     -- 반환: 문자열     돌아가다 .본문.list To(trimAndFormat(트림앤드포맷)(args, 적응하다)) 끝. -- Text . list To Text ( 。    본문.견적을 내다 = 기능. ( 적용합니다., 외계인, 발전 )     -- 따옴표 텍스트     -- 파라미터:     -- apply -- 문자열, 텍스트 포함     -- alien -- 문자열, 언어 코드 포함 또는 0     -- advanced -- 레벨 1, 2, 또는 제로인 번호     -- 반환: 따옴표로 둘러싸인 문자열     적용합니다. = 적용합니다. 그리고. 스트링(적용합니다.) 또는 ""     현지의 모드, 속어.     한다면 유형( 외계인 ) == "문자열' 그리고나서         속어. = .본문.다듬다( 외계인 ):더 낮게()     또 다른         속어. = .직함.get Current Title(전류 제목)().페이지 언어         한다면 것은 아니다. 속어. 그리고나서             -- TODO FIXME : 2017-04년 도입 예정             속어. = .언어.get Content Language(get Content Language)():get 코드()         끝.     끝.     한다면 발전 == 2 그리고나서         모드 = 2     또 다른         모드 = 1     끝.     돌아가다 견적서( .본문.다듬다( 적용합니다. ), 속어., 모드 ) 끝. -- Text . quote ( )    본문.따옴표 없음 = 기능. ( 적용합니다., 외계인, 발전 )     -- 아직 따옴표가 없고 비어 있지 않은 경우 따옴표로 묶은 텍스트     -- 파라미터:     -- apply -- 문자열, 텍스트 포함     -- alien -- 문자열, 언어 코드 포함 또는 0     -- advanced -- 레벨 1, 2, 또는 제로인 번호     -- 반환: 문자열, 따옴표로 묶음     현지의 r = .본문.다듬다( 적용합니다. 그리고. 스트링(적용합니다.) 또는 "" )     현지의 s = .스트링.후보선수( r, 1, 1 )     한다면 s ~= ""  그리고.  것은 아니다. 본문.견적서( s, 발전 ) 그리고나서         s = .스트링.후보선수( r, -1, 1 )         한다면 것은 아니다. 본문.견적서( s ) 그리고나서             r = 본문.견적을 내다( r, 외계인, 발전 )         끝.     끝.     돌아가다 r 끝. -- Text . quote Unquoted ( )    본문.remove Diacritics(분음 부호 제거) = 기능. ( 조정한다. )     -- 모든 분음 부호를 삭제합니다.     -- 파라미터:     -- adjust -- 문자열     -- 반환: 문자열. 모든 라틴 문자는 ASC여야 합니다.II     기본 그리스어, 키릴어, 기호 등     현지의 정리하다, 분해된     한다면 것은 아니다. 패턴 조합 그리고나서         패턴 조합 = .스트링.( 91,                                             0x0300, 45, 0x036F,                                             0x1AB0, 45, 0x1AFF,                                             0x1DC0, 45, 0x1DFF,                                             0xFE20, 45, 0xFE2F,                                            93 )     끝.     분해된 = .스트링.하지 않다( 조정한다. 그리고. 스트링(조정한다.) 또는 "" )     정리하다    = .스트링.서브( 분해된, 패턴 조합, "" )     돌아가다 .스트링.토NFC( 정리하다 ) 끝. -- Text . remove Diacritics ( )    본문.문장 종료됨 = 기능. ( 분석하다 )     -- 문자열은 점, 물음표 또는 느낌표로 끝납니까?     -- 견적, 링크 종료 등이 당연합니다.     -- 파라미터:     --analyze -- 문자열     -- 반환: true(문장이 종료된 경우)     현지의 r     한다면 것은 아니다. 패턴 종단 그리고나서         패턴 종단 = .스트링.( 91,                                              12290,                                              65281,                                              65294,                                              65311 )                             .. "!%.%?…][\"'%]‹›«»‘’“”]*$"     끝.     한다면 .스트링.발견하다( 분석하다, 패턴 종단 ) 그리고나서         r = 진실의     또 다른         r = 거짓의     끝.     돌아가다 r 끝. -- Text.sentenceTerminated()    본문.ucfirst All(모든 것) = 기능. ( 조정한다.)     -- 모든 단어를 대문자로 표시     -- 인수:     -- 조정할 = 문자열을 조정합니다.     -- 반환: 첫 글자가 모두 대문자로 표시된 문자열     조정한다. = 조정한다. 그리고. 스트링(조정한다.) 또는 ""     현지의 r = .본문.해독하다(조정한다.,진실의)     현지의 i = 1     현지의 c, j, m     m = (r ~= 조정한다.)     r = " "..r     하는 동안에 i 하다         i = .스트링.발견하다( r, %W%l, i )         한다면 i 그리고나서             j = i + 1             c = .스트링.위쪽의( .스트링.후보선수( r, j, j ) )             r = string.format( %s%s%s,                                .스트링.후보선수( r, 1, i ),                                c,                                .스트링.후보선수( r, i + 2 ) )             i = j         끝.     끝. --그동안 나는     r = r:후보선수( 2 )     한다면 m 그리고나서      r = .본문.부호화(r)     끝.     돌아가다 r 끝. -- Text . ucfirstAll ( )   본문.직립 노라틴어 = 기능. ( 조정한다. )     -- 라틴어 이외의 텍스트 부분에 대해 이탈리아어가 아닌 것을 확인합니다.     -- 그리스 문자 한 통이 주어질지도 모른다.     -- 전제 조건:     -- adjust -- 문자열     -- 반환: <span>으로 둘러싸인 라틴어 이외의 부분을 포함하는 문자열     현지의 r     initLatinData(라틴 데이터)()     한다면 .스트링.경기( 조정한다., 패턴라틴어 ) 그리고나서         -- 라틴만, 수평 대시, 따옴표         r = 조정한다.     또 다른         현지의 c         현지의 j    = 거짓의         현지의 k    = 1         현지의 m    = 거짓의         현지의 n    = .스트링.( 조정한다. )         현지의 기간 = %s%s <span dir='auto' style='s-style:normal'>%s </span>         현지의 평평한 = 기능. ( a )                   -- 라틴어                   현지의 범위                   위해서 i = 1, #범위 라틴어 하다                       범위 = 범위 라틴어[ i ]                       한다면 a >= 범위[ 1 ]  그리고.  a <=> 범위[ 2 ] 그리고나서                           돌아가다 진실의                       끝.                   끝.    -- i의 경우               끝. -- 플랫()         현지의 초점 = 기능. ( a )                   -- char는 양면성이 없습니다.                   현지의 r = ( a > 64 )                   한다면 r 그리고나서                       r = ( a < > 8192  또는  a > 8212 )                   또 다른                       r = ( a == 38  또는  a == 60 )    -- '&' '<'                   끝.                   돌아가다 r               끝. --focus()         현지의 형태 = 기능. ( a )                 돌아가다 string.format( 기간,                                       r,                                       .스트링.후보선수( 조정한다., k, j - 1 ),                                       .스트링.후보선수( 조정한다., j, a ) )               끝. --폼()         r = ""         위해서 i = 1, n 하다             c = .스트링.코드 포인트( 조정한다., i, i )             한다면 초점( c ) 그리고나서                 한다면 평평한( c ) 그리고나서                     한다면 j 그리고나서                         한다면 m 그리고나서                             한다면 i == m 그리고나서                                 -- 그리스 문자만.                                 j = 거짓의                             끝.                             m = 거짓의                         끝.                         한다면 j 그리고나서                             현지의 nx = i - 1                             현지의 s  = ""                             위해서 ix = nx, 1, -1 하다                                 c = .스트링.후보선수( 조정한다., ix, ix )                                 한다면 c == " "  또는  c == "(" 그리고나서                                     nx = nx - 1                                     s  = c .. s                                 또 다른                                     브레이크. -- ix의 경우                                 끝.                             끝. -- ix의 경우                             r = 형태( nx ) .. s                             j = 거짓의                             k = i                         끝.                     끝.                 그렇지 않으면 것은 아니다. j 그리고나서                     j = i                     한다면 c >= 880  그리고.  c <=> 1023 그리고나서                         그리스 문자 하나?                         m = i + 1                     또 다른                         m = 거짓의                     끝.                 끝.             그렇지 않으면 m 그리고나서                 m = m + 1             끝.         끝.    -- i의 경우         한다면 j  그리고.  ( 것은 아니다. m  또는  m < > n ) 그리고나서             r = 형태( n )         또 다른             r = r .. .스트링.후보선수( 조정한다., k )         끝.     끝.     돌아가다 r 끝. -- Text . upright Nonlatin ( )   본문.시험 = 기능. ( 대해서 )     현지의 r     한다면 대해서 == "실패" 그리고나서         init Quote Data(init Quote Data)()         r = { }         r.견적 랑 = 견적 랑         r.견적 유형 = 견적 유형     끝.     돌아가다 r 끝. -- Text.test()    -- 내보내기 현지의 p = { }  위해서 _, 기능하다  아이페어({'오디오'CJK','is Latin Range','견적용','문장이 종료되었습니다'}) 하다  p[기능하다] = 기능. ()    돌아가다 본문[기능하다]( .args[ 1 ] 또는 "" ) 그리고. "1" 또는 ""  끝. 끝.  위해서 _, 기능하다  아이페어({'보통','분음 기호 삭제','최초 모든 것','upright Nonlatin'}) 하다  p[기능하다] = 기능. ()    돌아가다 본문[기능하다]( .args[ 1 ] 또는 "" )  끝. 끝.  기능. p.(  )     현지의 파라미터 = :부모 취득().args     현지의 이야기 = 파라미터[ 1 ]     현지의 코드, 너그럽다, 복수     한다면 것은 아니다. 이야기 그리고나서         파라미터 = .args         이야기  = 파라미터[ 1 ]     끝.     한다면 이야기 그리고나서         현지의 항목들 = .본문.분열되다( .본문.다듬다(이야기), %s+ )         한다면 #항목들 > 0 그리고나서             현지의 j             너그럽다  = (네, 아니요(파라미터.에러) == 거짓의)             코드    = { }             복수 = 톤수( 파라미터[ "*" ] )             위해서 _, v  아이페어( 항목들 ) 하다              j = 톤수((v:후보선수( 1, 1 ) == "x" 그리고. "0" 또는 "") .. v)                 table.insert( 코드,  j 또는 v )             끝.          끝.     끝.     돌아가다 본문.( 코드, 복수, 너그럽다 ) 끝.  기능. p.콘캣패럼(  )     현지의 args     현지의 템플릿 = .args.템플릿     한다면 유형( 템플릿 ) == "문자열' 그리고나서         템플릿 = .본문.다듬다( 템플릿 )         템플릿 = ( 템플릿 == "1" )     끝.     한다면 템플릿 그리고나서         args = :부모 취득().args     또 다른         args = .args     끝.     돌아가다 본문.콘캣패럼( args,                               .args.분리기,                               .args.포맷 ) 끝.   기능. p.list To Format(목록 형식)()     현지의 리스트 = {}     현지의 포맷 = .args["형식"]     현지의 세프 = .args["실패"] 또는 ";"      -- 파라미터 파센: Listen     위해서 k, v  쌍들(.args) 하다         현지의 카넘 = 톤수(k)         한다면 카넘 그리고나서 리스트[카넘] = v 끝.     끝.      -- 잘 들어라.     현지의 maxListLen = 0     위해서 i = 1, #리스트 하다         리스트[i] = .본문.분열되다(리스트[i], 세프)         한다면 #리스트[i] > maxListLen 그리고나서 maxListLen = #리스트[i] 끝.     끝.      -- Ergebnisstring generieren     현지의 결과 = ""     현지의 result_line = ""     위해서 i = 1, maxListLen 하다         result_line = 포맷         위해서 j = 1, #리스트 하다             result_line = .스트링.서브(result_line, %%s, 리스트[j][i], 1)         끝.         결과 = 결과 .. result_line     끝.      돌아가다 결과 끝.    기능. p.list To(  )     현지의 args     현지의 템플릿 = .args.템플릿     한다면 유형( 템플릿 ) == "문자열' 그리고나서         템플릿 = .본문.다듬다( 템플릿 )         템플릿 = ( 템플릿 == "1" )     끝.     한다면 템플릿 그리고나서         args = :부모 취득().args     또 다른         args = .args     끝.     돌아가다 본문.list To( args, .args.포맷 ) 끝.    기능. p.견적을 내다(  )     현지의 속어. = .args[2]     한다면 유형( 속어. ) == "문자열' 그리고나서         속어. = .본문.다듬다( 속어. )         한다면 속어. == "" 그리고나서             속어. = 거짓의         끝.     끝.     돌아가다 본문.견적을 내다( .args[ 1 ] 또는 "",                        속어.,                        톤수( .args[3] ) ) 끝.    기능. p.따옴표 없음(  )     현지의 속어. = .args[2]     한다면 유형( 속어. ) == "문자열' 그리고나서         속어. = .본문.다듬다( 속어. )         한다면 속어. == "" 그리고나서             속어. = 거짓의         끝.     끝.     돌아가다 본문.따옴표 없음( .args[ 1 ] 또는 "",                                속어.,                                톤수( .args[3] ) ) 끝.   기능. p.지퍼()     현지의 리스트 = {}     현지의 셉스 = {}     현지의 디폴트 sep = .args["실패"] 또는 ""     현지의 내장 = .args[「이프」] 또는 ""     현지의 외측부 = .args["OSEP"] 또는 ""      -- 파라미터 파센     위해서 k, v  쌍들(.args) 하다         현지의 카넘 = 톤수(k)         한다면 카넘 그리고나서 리스트[카넘] = v 또 다른             한다면 스트링.서브(k, 1, 3) == "실패" 그리고나서                 현지의 세프넘 = 톤수(스트링.서브(k, 4))                 한다면 세프넘 그리고나서 셉스[세프넘] = v 끝.             끝.         끝.     끝.     -- Sofern Keine은 Separitoen Angeben sind, den Standard separator verwenden을 설명한다.     위해서 i = 1, math.max(#셉스, #리스트) 하다         한다면 것은 아니다. 셉스[i] 그리고나서 셉스[i] = 디폴트 sep 끝.     끝.      -- 잘 들어라.     현지의 maxListLen = 0     위해서 i = 1, #리스트 하다         리스트[i] = .본문.분열되다(리스트[i], 셉스[i])         한다면 #리스트[i] > maxListLen 그리고나서 maxListLen = #리스트[i] 끝.     끝.      현지의 결과 = ""     위해서 i = 1, maxListLen 하다         한다면 i ~= 1 그리고나서 결과 = 결과 .. 외측부 끝.         위해서 j = 1, #리스트 하다             한다면 j ~= 1 그리고나서 결과 = 결과 .. 내장 끝.             결과 = 결과 .. (리스트[j][i] 또는 "")         끝.     끝.     돌아가다 결과 끝.    기능. p.페일 세이프()     돌아가다 본문.시리얼 끝.    p.본문 = 기능. ()     돌아가다 본문 끝. -- p.텍스트  돌아가다 p