모듈:텍스트/샌드박스
Module| 모듈 샌드박스 페이지는 다음과 같습니다.텍스트(diff). 테스트 케이스에 대해서는, 부속의 서브 페이지도 참조해 주세요(실행). |
| 이 Lua 모듈은 약 1,530,000페이지(전체 페이지의 약 3%)에서 사용됩니다. 중대한 중단과 서버 로드를 방지하려면 모듈의 /sandbox 또는 /testcase 서브페이지 또는 자체 모듈 샌드박스에서 변경을 테스트해야 합니다.테스트한 변경은 한 번의 편집으로 이 페이지에 추가할 수 있습니다.변경을 실장하기 전에 토크 페이지에서 변경에 대해 논의해 주십시오. |
Text – 텍스트, Wikimarkup 및 일부 HTML 조작 방법을 포함하는 모듈.
템플릿의 함수
모든 메서드에는 텍스트를 포함하는 이름 없는 매개 변수가 있습니다.
파라미터가 조건을 충족하지 못할 경우 반환값은 빈 문자열이 됩니다.조건이 일치하거나 일부 결과가 정상적으로 검출되면 적어도1 문자의 문자열이 반환됩니다.
- 차
- 문자 코드 목록에서 문자열을 만듭니다.
- 1
- 공백으로 구분된 문자 코드 목록
- *
- 파라미터 1의 리스트 반복 횟수(디폴트 1)
- 에러
0– 무음 오류
- 콘캣패럼
- 임의의 수의 요소를 목록으로 결합할 수 있습니다.
table.concat()루아에서. - 템플릿에서:
- 1
- 첫 번째 요소. 누락된 요소와 비어 있는 요소는 무시됩니다.
- 2 3 4 5 6 …
- 추가 목록 요소
- 루아에서
- args
- 원소의 표(순서)
- 적용합니다.
- 요소 구분 기호(기본값)
- 적응하다
- 각 요소에 적용되는 선택적 형식 지정. 다음을 포함해야 합니다.
%s.
- 포함하다CJK
- 입력 문자열에 CJK 문자가 포함되어 있는지 여부를 반환합니다.
- CJK 문자가 없으면 아무것도 반환하지 않습니다.
- remove Delimited(지연)
- 구분자 자체를 포함하여 구분자 사이의 모든 텍스트를 제거합니다.
- 겟플레인
- Wikimarkup 삭제(템플릿 제외): 주석, 태그, 굵은 글씨, 기울임꼴, nbsp
- isLatinRange
- 문자열에 일반적으로 라틴어 텍스트에서 찾을 수 없는 문자가 포함되지 않는 한 일부 내용을 반환합니다.
- 라틴어 이외의 문자열이 있으면 아무것도 반환하지 않습니다.
- 견적서
- 전달된 매개 변수가 단일 문자이고 해당 문자가 따옴표인 경우 다음과 같은 일부 내용을 반환합니다.
'.- 여러 문자에 대해 아무것도 반환하지 않거나 전달된 문자가 따옴표가 아닌 경우.
- list To
- 형식은 mw.text.listToText()와 유사하게 요소를 나열합니다.
- 요소는 쉼표와 공백으로 구분되며 첫 번째와 마지막 사이에 "and"라는 단어가 표시됩니다.
- 이름 없는 매개 변수가 목록 항목이 됩니다.
- 옵션 파라미터
#invoke:format– 모든 목록 요소는 먼저 이 형식 문자열로 포맷됩니다.이 문자열의 구성 방법에 대해서는 여기를 참조하십시오.문자열에 하나 이상의 항목이 포함되어야 합니다.%s순서.template=1– 리스트 요소는 호출 템플릿에서 가져와야 합니다.
- 결과 문자열을 반환합니다.
- 견적을 내다
- 문자열을 따옴표로 묶습니다.따옴표는 특정 언어에 대해 선택할 수 있습니다.
- 따옴표 없음
- 문자열을 따옴표로 묶습니다.따옴표는 특정 언어에 대해 선택할 수 있습니다.빈 문자열을 따옴표로 묶지 않으며, (트림된) 문자열의 시작 또는 끝에 따옴표가 있는 경우 따옴표로 묶지 않습니다.
- remove Diacritics(분음 부호 제거)
- 입력에서 발음을 해제하는 마크를 모두 삭제합니다.
- 1
- 입력 텍스트
- 문장 종료됨
- 이 문장은 끝나요?CJK와 협력해야 하며, 인용부호가 뒤따를 수 있습니다.
- 문장이 종료되지 않은 경우 아무것도 반환하지 않습니다.
- ucfirst All(모든 것)
- 인식되는 모든 단어의 첫 글자는 대문자로 변환됩니다.이는 파서 함수 {{ucfirst:}}: 전달된 전체 문자열의 첫 문자만 변경합니다.
- 몇 개의 공통 HTML 엔티티가 보호되고 있으며, 이를 구현하면 숫자 엔티티가 통과되었음을 의미할 수 있습니다(예:
&)로 변환되다&형태 - 직립 노라틴어
- 문자열을 사용합니다.이탤릭체로 표기된 비라틴 문자는 그리스 문자가 아닌 한 비이탈릭으로 표기됩니다.
- 지퍼
- 목록 튜플을 컨볼루션별로 결합합니다.이것은 예를 들어 설명하기가 가장 쉽습니다.list1 = "a b c" 및 list2 = "1 2 3"의 두 가지 목록이 주어지면,
zip(liste1, liste2, sep = " ", isep = "-", osep = "/")
출력a-1/b-2/c-3- 1, 2, 3, …– 조합하는 리스트
sep– 목록 분할에 사용되는 구분 기호(Lua regex 형식).공백일 경우 목록이 개별 문자로 분할됩니다.sep1,sep2,sep3, … – 목록마다 다른 구분 기호를 사용할 수 있습니다.isep– 출력 구분자: 목록에서 동일한 인덱스에 있는 요소 사이에 배치됩니다.osep– 출력 분리기, 서로 다른 원래 지수를 가진 요소 사이에 배치, 즉 연결된 그룹 사이에 배치isep
예시 및 테스트 페이지
실제로 이를 설명하기 위한 테스트(독일어)가 있습니다.
다른 Lua 모듈에서 사용
위의 모든 함수는 다른 Lua 모듈에서 호출할 수 있습니다.사용하다require(); 다음 코드는 로드 오류를 체크합니다.
현지의 행운의, 본문 = pcall( 요구하다, "모듈:텍스트" ) 한다면 유형( 본문 ) == "테이블" 그리고나서 본문 = 본문.본문() 또 다른 -- 에러가 발생하면, 텍스트는 에러 메세지가 됩니다. 돌아가다 "<span 클래스=\"에러\">" .. 본문 .. "</span>" 끝. 그러면 다음 연락처로 문의해 주세요.
- Text.char(적용, 다시 적용, 수락)
- Text.concatParams(args, 구분자, 형식)
- Text. containsCJK ( s )
- Text.remove Delimited ( s )
- Text.getPlain ( s )
- Text.isLatinRange ( s )
- Text.is Quote ( c )
- Text.listToText ( 테이블, 형식)
- Text.quote ( s, lang, mode )
- Text.quoteUnquoted ( s, lang, mode )
- Text.remove Diacritics ( s )
- Text.sententTerminated ( s )
- Text.ucfirstAll ( s )
- Text.upright Nonlatin ( s )
Text.zip(…)- Text.test ( s )
사용.
이곳은 일반 도서관이니 아무데나 이용하세요.
의존 관계
없음.
「 」를 참조해 주세요.
현지의 네, 아니요 = 요구하다("모듈:네, 아니요.) 현지의 본문 = { 시리얼 = "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 ] 그리고나서 공간 = " " 또 다른 공간 = "" 끝. 따옴표 = 따옴표[ 발전 ] 한다면 따옴표 그리고나서 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[^>*>), "" ) :서브( "'''", "" ) :서브( "''", "" ) :서브( " ", " " ) 돌아가다 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