모듈:유니코드 데이터
Module| 이 Lua 모듈은 약 1,370,000페이지(전체 페이지의 약 2%)에서 사용됩니다. 중대한 중단과 서버 로드를 방지하려면 모듈의 /sandbox 또는 /testcase 서브페이지 또는 자체 모듈 샌드박스에서 변경을 테스트해야 합니다.테스트한 변경은 한 번의 편집으로 이 페이지에 추가할 수 있습니다.변경을 실장하기 전에 토크 페이지에서 변경에 대해 논의해 주십시오. |
사용.
이 모듈에서는 Unicode 코드 포인트의 정보에 액세스하는 기능을 제공합니다.정보는 Unicode 문자 데이터베이스에서 생성된 데이터 모듈 또는 Unicode 사양에 지정된 규칙에 따라 취득됩니다.영어 Wiktionary에서 복사되어 변경된 서브모듈입니다.자세한 내용은 여기를 참조하십시오.
파라미터 및 함수
코드 포인트
코드 포인트는 16진수 값으로 입력됩니다.예를 들어 U+00A9 © Copyright SIGN:
- A9hex
- 0xA9hex
- 0x00A9hex
- 0x00a9hex
{{#invoke:Unicode data lookup name 0x00A9}}→ 저작권 표시
잘못된 결과 또는 의도하지 않은 결과:
- 169dec:
{{#invoke:Unicode data lookup name 169}}→ TILDE 포함 라틴어 작은 글자 U
- "U+00A9"©예상되지만hex 00A9(즉 361)로dec 읽힙니다. - U+00A9
{{#invoke:Unicode data lookup name U+00A9}}
: "U+" 프리픽스는 사용하지 않습니다. - غ
{{#invoke:Unicode data lookup name غ}}
: 코드 포인트로 문자를 입력할 수 없습니다.
"syslog" 및 "is" 함수
lookup, is- 템플릿 호출이 불가능한 함수로, 다음 함수에 액세스할 수 있습니다.
lookup그리고.is.대부분의 함수는 16진수 베이스의 코드 포인트를 다음 파라미터로 추가합니다.위해서is" Latin,is rtl,그리고.is valid_pagename, 문자열을 추가합니다.텍스트 내의 HTML 문자 참조는 모듈에 의해 코드 포인트로 디코딩됩니다. - 예를들면,
{{#invoke:Unicode data is Latin àzàhàr̃iyyā̀}}→ 참입니다.
- 모듈 내부에서는 다음 함수의 이름이 언더스코어를 사용하여 지정됩니다.
lookup_name code point←lookup_name - 위해서
&A9;©:{{#invoke:Unicode data lookup name A9}}→ 저작권 표시
기능의 개요
- 코드 포인트: U+0061이 아닌 0x0061 또는 61과 같은 16진수 값을 입력합니다.
| 주제 | 기능. | 파라미터 타입 (string=문자별, c.p. 0xHex 값별) | 예 | 돌아온다 | 성격 |
|---|---|---|---|---|---|
| 유니코드 문자 이름 | lookup name | 코드 포인트 |
|
|
|
| 스크립트 | lookup script | 코드 포인트 | {{#invoke:Unicode data lookup script A061}} | Yiii |
|
| 블록 | lookup block | 코드 포인트 | {{#invoke:Unicode data lookup block A061}} | 이음절 |
|
| 평면 | lookup plane | 코드 포인트 |
|
|
|
| 일반 카테고리 | lookup category | 코드 포인트 |
|
|
|
| 컨트롤 | is control | 코드 포인트 |
|
|
|
| 라틴 문자 | is Latin | 스트링 |
|
| |
| WP: 기사 제목 (WP: NCTR) | is valid_pagename | 스트링 |
|
| |
| 양방향성, 오른쪽에서 왼쪽으로 스크립트 | is rtl | 스트링 |
|
|
|
| 문자 결합 | is combining | 코드 포인트 |
|
|
|
| 캐릭터 할당 | is assigned | 코드 포인트 |
|
|
|
| 인쇄 가능 | is printable | 코드 포인트 |
|
|
|
| 공백 문자 unicode Unicode | is whitespace | 코드 포인트 |
|
|
|
| 한글 | Hangul | [어플리케이션 불명] |
| ||
| 에일리어스명 | aliases | [어플리케이션 불명] |
| ||
| 결합 클래스 | | [어플리케이션 불명] |
| ||
| 나이 | | [어플리케이션 불명] | |||
| get_best_script | get_best_script | [어플리케이션 불명] |
데이터 모듈
이 모듈의 함수가 사용하는 데이터는 서브모듈에 있습니다.일부는 User: 에 표시된 AWK 스크립트에 의해 생성됩니다.Kephir/Unicode on English Wiktionary, 기타 Lua 스크립트의/make서브모듈의 서브페이지.
- 모듈:유니코드 데이터/연령:문자의 '연령', 즉 버전 소개 번호.
- 모듈:유니코드데이터/에일리어스:문자의정식이름에일리어스(NameAliases에서).txt)
- 모듈:유니코드 데이터/블록: 유니코드 블록 목록(블록에서).txt)
- 모듈: Unicode 데이터/카테고리: 일반 카테고리에 데이터 매핑 문자(Derived General Category.txt에서)
- 모듈: Unicode data/combining: 데이터 문자를 Combining 클래스에 매핑합니다(DerivedCombiningClass.txt에서).
- 모듈: Unicode data/control: 구분자 및 기타 일반 카테고리에 속하는 문자를 식별하기 위한 데이터(Derived General Category.txt에서)
- 모듈: 유니코드 데이터/파생 코어 속성:
- 모듈:유니코드 데이터/한글: 한글 음절 이름을 생성하는 데 사용되는 데이터(Jamo에서).txt)
- 모듈: 유니코드 데이터/이름/*(000h, .., 0E0hh; 예: ../names/000): 이름
- 모듈: Unicode 데이터/스크립트: 데이터를 Unicode 스크립트 속성에 매핑합니다(Scripts.txt).
이름 데이터 모듈(모듈:Unicode 데이터/이름/)xxx를 Unicode Data에서 컴파일했습니다.txt. 각각의 코드 포인트에는 최대 U+xx000 ~ U+xxFF가 포함됩니다.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 00x | U+0000- U+0FF | U+1000 – U+1FF | U+2000- U+2FF | U+3000- U+3FF | U+4000- U+4FF | U+A000- U+AFF | U+D000- U+DFFF | U+F000- U+FFFF | ||||||||
| 01x | U+10000 – U+10FF | U+11000- U+11FF | U+12000- U+12FF | U+13000- U+13FF | U+14000- U+14FF | U+16000- U+16FF | U+18000- U+18FF | U+1A000- U+1AFF | U+1B000- U+1BFFF | U+1C000- U+1CFFF | U+1D000- U+1 DFFF | U+1E000- U+1EFF | U+1F000- U+1FFF | |||
| 0Ex | U+E0000- U+E0FF |
저작권
Unicode 데이터베이스는 Unicode Inc.에서 다음 조건으로 릴리즈됩니다.
저작권 © 1991-2018 Unicode, Inc.무단 전재 금지.https://www.unicode.org/copyright.html의 이용약관에 따라 배포됩니다.
이에 따라 Unicode 데이터 파일 및 관련 문서(이하 "데이터 파일") 또는 Unicode 소프트웨어 및 관련 문서(이하 "소프트웨어")의 사본을 입수하는 모든 개인에게 무료로 데이터 파일 또는 소프트웨어를 사용, 복사, 수정할 수 있는 권한을 포함하여 제한 없이 취급할 수 있는 권한이 부여됩니다.(a) 이 저작권 및 허가 통지가 데이터 파일 또는 소프트웨어의 모든 복사본과 함께 나타나는 경우 데이터 파일 또는 소프트웨어의 복사본을 병합, 게시, 배포 및/또는 판매한다.또는 (b) 이 저작권 및 허가 통지는 관련 문서에 기재되어 있습니다.
데이터 파일 및 소프트웨어는 "있는 그대로" 제공되며 상품성, 특정 목적에 대한 적합성 및 제3자 권리의 비침해를 포함하되 이에 한정되지 않습니다.어떠한 경우에도, 본 통지에 포함되는 저작권자 또는 저작권자는 어떠한 클레임, 특별한 간접적 또는 결과적 손해 또는 사용, 데이터 또는 이익의 상실에 기인하는 손해에 대해 어떠한 행위나 계약상 과실 여부에 관계없이 책임을 지지 않습니다.데이터 파일 또는 소프트웨어의 사용 또는 퍼포먼스에 기인하거나 이와 관련하여 발생합니다.
이 공지에 기재되어 있는 경우를 제외하고 저작권자의 사전 서면 승인 없이 저작권자의 이름을 광고 또는 데이터 파일 또는 소프트웨어의 판매, 사용 또는 기타 거래를 촉진하기 위해 사용할 수 없습니다.
이미 알려진 문제
- 다음과 같은 데이터 읽기
Module:Unicode data/aliases제공되거나 문서화되어 있지 않다 - 테스트 실패:
lookup_categoryU+FFFF(<noncharacter-FFFF>)가 필요합니다.Cn 。
{{#invoke:Unicode data lookup category 0xFFFF}}→ [NIL]
「 」를 참조해 주세요.
- 이름 있는 엔티티: 예를 들어 U+22C1 µN-ARY LOGAL OR:
{{#invoke:LoadData Numcr2namecr 0x22C1}}→ &bigve;, ⋁, &xve;
현지의 p = {} 현지의 바닥. = math.floor 현지의 기능. 에러(수평, ...) 한다면 유형(수평) == "숫자" 그리고나서 돌아가다 에러(string.format(...), 수평 + 1) 또 다른 -- level은 실제로는 포맷 문자열입니다. 돌아가다 에러(string.format(수평, ...), 2) 끝. 끝. 현지의 기능. binary_range_search(코드 포인트, 범위) 현지의 낮다, 중앙의, 높은 낮다, 높은 = 1, 범위.길이 또는 요구하다 "모듈:테이블 도구".길이(범위) 하는 동안에 낮다 <=> 높은 하다 중앙의 = 바닥.((낮다 + 높은) / 2) 현지의 범위 = 범위[중앙의] 한다면 코드 포인트 < > 범위[1] 그리고나서 높은 = 중앙의 - 1 그렇지 않으면 코드 포인트 <=> 범위[2] 그리고나서 돌아가다 범위, 중앙의 또 다른 낮다 = 중앙의 + 1 끝. 끝. 돌아가다 제로, 중앙의 끝. p.binary_range_search = binary_range_search --[[ local 함수 linear_range_search(코드포인트, 범위) i의 경우 ipairs(표준) do의 범위 range[1] <= 코드포인트 및 코드포인트 <= 범위[2]인 경우 리턴 레인지 끝. 끝. 끝. --]] -- "loader"에서 모듈 이름을 뺀 값을 인덱싱하여 모듈을 로드합니다. -- "모듈:유니코드 데이터/" 부분.예를 들어 로더.반환 블록 -- [[모듈:Unicode 데이터/블록] ] 。모듈을 로드할 수 없는 경우 false는 --가 돌아왔다. 현지의 로더 = 설정 가능한({}, { __인덱스 = 기능. (자신, 열쇠) 현지의 성공., 데이터. = pcall(음.로드 데이터, "모듈:Unicode 데이터/" .. 열쇠) 한다면 것은 아니다. 성공. 그리고나서 데이터. = 거짓의 끝. 자신[열쇠] = 데이터. 돌아가다 데이터. 끝. }) -- 한글 이름 생성에 사용되는 알고리즘의 경우, -- 의 섹션 3.12 의 "한글 음절 이름 생성"을 참조하십시오. -- Unicode 사양: -- https://www.unicode.org/versions/Unicode11.0.0/ch03.pdf 현지의 name_module = { { 0x00, 0x1F, "< control - %04X >" }, -- C0 제어 문자 { 0x7F, 0x9F, "< control - %04X >" }, -- DEL 및 C1 제어 문자 { 0x3400, 0x4DBF, "CJK 통합 IDEORGATH-%04X" }, -- CJK 한자 내선번호 A { 0x4E00, 0x9FFF, "CJK 통합 IDEORGATH-%04X" }, -- CJK 한자 { 0xAC00, 0xD7A3, 기능. (코드 포인트) -- 한글 음절 현지의 한글_데이터 = 로더.한글 현지의 음절_색인 = 코드 포인트 - 0xAC00 돌아가다 ("한글 음절 %s%s%s"):포맷( 한글_데이터.리드[바닥.(음절_색인 / 한글_데이터.final_count(최종 카운트))], 한글_데이터.모음.[바닥.((음절_색인 % 한글_데이터.final_count(최종 카운트)) / 한글_데이터.trail_count(트레일 수))], 한글_데이터.흔적[음절_색인 % 한글_데이터.trail_count(트레일 수)] ) 끝. }, - 높은 대리인, 높은 개인사용 대리인, 낮은 대리인 { 0xD800, 0xDFFF, "<대리-%04X>" }, { 0xE000, 0xF8FF, "<프라이빗 사용-%04X>" }, --개인용도 --CJK 호환성 한자 { 0xF900, 0xFA6D, "CJK 호환성 IDEORGATH-%04X" }, { 0xFA70, 0xFAD9, "CJK 호환성 IDEORGATH-%04X" }, { 0x17000, 0x187F7, "TANGUT IDEORGATH-%04X" }, -- 탕구트어 문자 { 0x18800, 0x18AFF, 기능. (코드 포인트) 돌아가다 ("탱굿 구성 요소-%03d"):포맷(코드 포인트 - 0x187FF) 끝. }, { 0x18D00, 0x18D08, "TANGUT IDEORGATH-%04X" }, -- 탕구트 한자 보충서 { 0x1B170, 0x1B2FB, "NUSHU CARTER-%04X" }, - 누슈 { 0x20000, 0x2A6DF, "CJK 통합 IDEORGATH-%04X" }, -- CJK 한자 확장 B { 0x2A700, 0x2B739, "CJK 통합 IDEORGATH-%04X" }, -- CJK 한자 확장 C { 0x2B740, 0x2B81D, "CJK 통합 IDEORGATH-%04X" }, -- CJK 한자 확장 D { 0x2B820, 0x2CEA1, "CJK 통합 IDEORGATH-%04X" }, -- CJK 한자 확장 E { 0x2CEB0, 0x2EBE0, "CJK 통합 IDEORGATH-%04X" }, --CJK 한자 확장 F --CJK 호환성 한자 보충판(보조 한자 평면) { 0x2F800, 0x2FA1D, "CJK 호환성 IDEORGATH-%04X" }, { 0xE0100, 0xE01EF, 기능. (코드 포인트) -- 바리에이션 실렉터 보충 돌아가다 ("변동 선택기-%d"):포맷(코드 포인트 - 0xE0100 + 17) 끝.}, { 0x30000, 0x3134A, "CJK 통합 IDEORGATH-%04X" }, --CJK 한자 확장 G { 0x31350, 0x323AF, "CJK 통합 IDEORGATH-%04X" }, --CJK 한자 확장자 H { 0xF0000, 0xFFFFD, "<프라이빗 사용-%04X>" }, -- 플레인 15 전용 { 0x100000, 0x10FFFD, "<프라이빗 사용-%04X>" } -- 플레인 16 개인 용도 } name_module.길이 = #name_module 현지의 name_range_cache 현지의 기능. generate_name(데이터., 코드 포인트) 한다면 유형(데이터.) == "문자열' 그리고나서 돌아가다 데이터.:포맷(코드 포인트) 또 다른 돌아가다 데이터.(코드 포인트) 끝. 끝. --[[ -- 코드 포인트가 숫자이며 범위 내에 있는지 확인합니다. -- 코드 포인트가 정수인지 여부를 확인하지 않습니다. -- 미사용 로컬 함수 check_codepoint(funcName, argIdx, val) libraryUtil.checkType(funcName, argIdx, val, 'number')이 필요합니다. 코드 포인트 < 0 또는 0x10인 경우FFFF < 코드 포인트 errorf("코드포인트 %04X가 범위를 벗어남", 코드포인트) 끝. 끝. --]] -- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, 섹션 4.8 기능. p.lookup_name(코드 포인트) -- U+FDD0-U+FFEF 및 FFFE 또는 FFF로 끝나는 모든 코드 포인트는 할당 해제됩니다. -- (Cn) 및 특히 비문자: -- https://www.unicode.org/faq/private_use.html#nonchar4 한다면 0xFDD0 <=> 코드 포인트 그리고. (코드 포인트 <=> 0xFDEF 또는 바닥.(코드 포인트 % 0x10000) >= 0xFFFE) 그리고나서 돌아가다 ("<비문자-%04X>"):포맷(코드 포인트) 끝. 한다면 name_range_cache -- 이전에 사용한 "이름 후크"가 이 코드 포인트에 적용되는지 확인합니다. 그리고. 코드 포인트 >= name_range_cache[1] 그리고. 코드 포인트 <=> name_range_cache[2] 그리고나서 돌아가다 generate_name(name_range_cache[3], 코드 포인트) 끝. 현지의 범위 = binary_range_search(코드 포인트, name_module) 한다면 범위 그리고나서 name_range_cache = 범위 돌아가다 generate_name(범위[3], 코드 포인트) 끝. 현지의 데이터. = 로더[('이름/%03X'):포맷(코드 포인트 / 0x1000)] 한다면 데이터. 그리고. 데이터.[코드 포인트] 그리고나서 돌아가다 데이터.[코드 포인트] -- Unassigned ( Cn )는 비문자와 예약된 문자로 구성됩니다. --캐릭터가 비캐릭터가 되지 않도록 설정되어 있습니다. -- 할당되어 있으면, 그 이름은 이미 취득되어 있을 것입니다. --그래서 예약해야 합니다. 또 다른 돌아가다 ("<reserved-%04X>"):포맷(코드 포인트) 끝. 끝. --[[ Wikipedia에는 아직 이미지 데이터 모듈이 없습니다. 함수 p.syslog_image(코드포인트) 로컬 데이터 = 로더[('images/%03X'): format(코드포인트/0x1000)] 데이터라면 데이터[코드포인트]를 반환하다 끝. 끝. --]] 현지의 평면 = { [ 0] = "기본 다국어 평면"; [ 1] = "보충 다국어 영역"; [ 2] = "보조 표의 평면"; [ 3] = "테리어 표의 평면"; [14] = "보조 특수 목적 비행기"; [15] = "보충 사적 용도 영역 A"; [16] = "보충 전용 영역 B"; } -- 로드 [[모듈:필요한 경우 Unicode data/blocks]를 클릭하여 이 변수에 할당합니다. 현지의 블록 현지의 기능. 차단_반복하다(블록, i) i = i + 1 현지의 데이터. = 블록[i] 한다면 데이터. 그리고나서 -- mw.loadData 로딩된 테이블에서는 언팩이 작동하지 않습니다. 돌아가다 i, 데이터.[1], 데이터.[2], 데이터.[3] 끝. 끝. -- 블록 목록용 ipairs 유형 반복 생성기. 기능. p.enum_blocks() 현지의 블록 = 로더.블록 돌아가다 차단_반복하다, 블록, 0 끝. 기능. p.lookup_plane(코드 포인트) 현지의 i = 바닥.(코드 포인트 / 0x10000) 돌아가다 평면[i] 또는 ("플레인 %u"):포맷(i) 끝. 기능. p.lookup_block(코드 포인트) 현지의 블록 = 로더.블록 현지의 범위 = binary_range_search(코드 포인트, 블록) 한다면 범위 그리고나서 돌아가다 범위[3] 또 다른 돌아가다 "블록 없음" 끝. 끝. 기능. p.get_block_info(이름.) 위해서 i, 블록 에 아이페어(로더.블록) 하다 한다면 블록[3] == 이름. 그리고나서 돌아가다 블록 끝. 끝. 끝. 기능. p.is_valid_pagename(pagename) 현지의 has_nonws = 거짓의 위해서 cp 에 음.스트링.코드 포인트(pagename) 하다 한다면 (cp == 0x0023) -- # 또는 (cp == 0x005B) -- [ 또는 (cp == 0x005D) -- ] 또는 (cp == 0x007B) -- { 또는 (cp == 0x007C) -- 또는 (cp == 0x007D) -- } 또는 (cp == 0x180E) -- 몽골어 모음 구분자 또는 ((cp >= 0x2000) 그리고. (cp <=> 0x200A)) -- 일반 구두점 블록의 공백 또는 (cp == 0xFFFD) -- 치환 문자 그리고나서 돌아가다 거짓의 끝. 현지의 인쇄 가능한, 결과 = p.인쇄 가능(cp) 한다면 것은 아니다. 인쇄 가능한 그리고나서 돌아가다 거짓의 끝. 한다면 결과 ~= "공간 절약" 그리고나서 has_nonws = 진실의 끝. 끝. 돌아가다 has_nonws 끝. 현지의 기능. 수동_실행(뭐, 부터) 한다면 뭐[부터 + 1] == 제로 그리고나서 돌아가다 뭐[부터] 끝. 현지의 결과 = {} 부터 = 부터 또는 1 위해서 i, 아이템 에 아이페어(뭐) 하다 한다면 i >= 부터 그리고나서 table.insert(결과, 아이템) 끝. 끝. 돌아가다 개봉하다(결과) 끝. 현지의 기능. compare_displays(비교_비교)(범위 1, 범위 2) 돌아가다 범위 1[1] < > 범위 2[1] 끝. -- "싱글"(a)을 포함하는 모듈에서 데이터를 검색하는 함수를 만듭니다. -- code point-to-data map) 및 "code" (다음 어레이를 포함하는 어레이) -- 범위의 낮은 코드 포인트와 높은 코드 포인트 및 그와 관련된 데이터 --range). -- "syslog" 테이블은 "syslog" 테이블과 "syslog" 테이블을 로드하여 반환합니다. -- "match_func"는 코드 포인트와 데이터 또는 "func" 중 하나를 통과합니다. -- 함수의 최종 결과를 생성합니다. -- vararargs ('도트')는 존재하지 않을 경우 반환되는 기본 데이터를 나타냅니다. --성냥. -- 함수가 여러 번 사용되는 경우 "cache"는 다음 값을 가진 범위를 저장합니다. -- 일치하는 데이터가 이미 발견되었거나 데이터가 기본인 범위가 있는 경우 --는 상대가 되지 않았다. 현지의 기능. 메모_메모(data_subpage, match_func, ...) 현지의 도트 = { ... } 현지의 캐시 = {} 현지의 싱글, 범위 돌아가다 기능. (코드 포인트) 한다면 것은 아니다. 싱글 그리고나서 현지의 data_module = 로더[data_subpage] 싱글, 범위 = data_module.싱글, data_module.범위 끝. 한다면 싱글[코드 포인트] 그리고나서 돌아가다 match_func(코드 포인트, 싱글[코드 포인트]) 끝. 현지의 범위 = binary_range_search(코드 포인트, 캐시) 한다면 범위 그리고나서 돌아가다 match_func(코드 포인트, 수동_실행(범위, 3)) 끝. 현지의 범위, 색인 = binary_range_search(코드 포인트, 범위) 한다면 범위 그리고나서 table.insert(캐시, 범위) table.displaces(캐시, compare_displays(비교_비교)) 돌아가다 match_func(코드 포인트, 수동_실행(범위, 3)) 끝. 한다면 범위[색인] 그리고나서 현지의 도트_범위 한다면 코드 포인트 > 범위[색인][2] 그리고나서 도트_범위 = { 범위[색인][2] + 1, 범위[색인 + 1] 그리고. 범위[색인 + 1][1] - 1 또는 0x10FFFF, 개봉하다(도트) } 또 다른 -- 코드 포인트< range [ index ][ 1 ] 도트_범위 = { 범위[색인 - 1] 그리고. 범위[색인 - 1][2] + 1 또는 0, 범위[색인][1] - 1, 개봉하다(도트) } 끝. table.displaces(캐시, compare_displays(비교_비교)) 끝. 돌아가다 match_func(코드 포인트) 끝. 끝. -- [Module]에서 코드 포인트의 결합 클래스 값을 가져옵니다.Unicode 데이터/결합]), -- 이 값이 0이 아닌지 여부를 반환합니다.0이 기본값으로 할당되어 있습니다. -- 이 데이터 모듈에서 결합 클래스 값을 찾을 수 없는 경우. -- 즉, 문자가 결합되어 있으면 true를 반환하고, 결합되어 있지 않으면 false를 반환합니다. -- https://www.unicode.org/reports/tr44/ #Canonical_Combining_Class_Values 를 참조해 주세요. --자세한 것은 이쪽입니다. p.is_filename(이것들) = 메모_메모( "실패", 기능. (코드 포인트, combining_class(결합 클래스)) 돌아가다 combining_class(결합 클래스) 그리고. combining_class(결합 클래스) ~= 0 또는 거짓의 끝., 0) 기능. p.add_module_module(스트레이트) 돌아가다 (음.스트링.서브(스트레이트, ".", 기능.(차) 한다면 p.is_filename(이것들)(음.스트링.코드 포인트(차)) 그리고나서 돌아가다 '◌' .. 차 끝. 끝.)) 끝. 현지의 lookup_control(조회_제어) = 메모_메모( "제어", 기능. (코드 포인트, ccc) 돌아가다 ccc 또는 "실패" 끝., "실패") p.lookup_control(조회_제어) = lookup_control(조회_제어) 기능. p.is_filename(이것들)(코드 포인트) 돌아가다 lookup_control(조회_제어)(코드 포인트) ~= "설계 완료" 끝. 기능. p.인쇄 가능(코드 포인트) 현지의 결과 = lookup_control(조회_제어)(코드 포인트) 돌아가다 (결과 == "실패") 또는 (결과 == "공간 절약"), 결과 끝. 기능. p.is_space(코드 포인트) 현지의 결과 = lookup_control(조회_제어)(코드 포인트) 돌아가다 (결과 == "공간 절약"), 결과 끝. p.lookup_category(카테고리) = 메모_메모( "카테고리", 기능. (코드 포인트, 카테고리) 돌아가다 카테고리 끝., "Cn") 현지의 lookup_script = 메모_메모( "실패", 기능. (코드 포인트, 스크립트_코드) 돌아가다 스크립트_코드 또는 '쯔쯔' 끝., "ZZZ") p.lookup_script = lookup_script 기능. p.get_best_script(스트레이트) -- 인수 유형을 확인합니다.mw.text.decode는 숫자를 문자열로 강제하기 때문입니다. 요구하다 "라이브러리 유틸".체크 타입("get_best_script", 1, 스트레이트, "문자열') -- HTML 문자 참조 변환(이름 있는 문자 참조 포함) -- 또는 문자 엔티티)에서 문자로 이동합니다. 스트레이트 = 음.본문.해독하다(스트레이트, 진실의) 현지의 스크립트 = {} 위해서 코드 포인트 에 음.스트링.코드 포인트(스트레이트) 하다 현지의 대본 = lookup_script(코드 포인트) -- "상속됨", "미결정" 또는 "코드화되지 않음" 스크립트를 무시합니다. 한다면 것은 아니다. (대본 == "Zyy" 또는 대본 == '진' 또는 대본 == "ZZZ") 그리고나서 스크립트[대본] = 진실의 끝. 끝. -- 스크립트에 2개 이상의 키가 포함되어 있지 않은 경우, -- 테이블 내의 첫 번째 키(스크립트 코드)를 반환합니다. 한다면 것은 아니다. 다음 분.(스크립트, 다음 분.(스크립트)) 그리고나서 돌아가다 다음 분.(스크립트) 끝. --그렇지 않으면 과반수 스크립트를 반환하고, 그렇지 않으면 "Zzz"를 반환한다. 끝. 기능. p.is_라틴어(스트레이트) 요구하다 "라이브러리 유틸".체크 타입("get_best_script", 1, 스트레이트, "문자열') 스트레이트 = 음.본문.해독하다(스트레이트, 진실의) -- UTF-8 인코딩을 도입하는 선두 바이트를 검색합니다. -- 코드 포인트 U+0340-U+10FFF.찾을 수 없고 적어도 다음 항목이 있는 경우 -- 1개의 라틴 스크립트문자, 문자열은 라틴어로 카운트됩니다.나머지는 -- 문자 중 Zyy, Zinh 및 Zzz만 사용할 수 있습니다. -- U+0370 아래에 있는 유일한 스크립트(그리스어 첫 번째 코드 포인트) -- 및 콥트 블록)은 Latn, Zyy, Zinh 및 Zzz입니다. -- [ UTF - 8 ]기사의 코드 페이지를 참조해 주세요. 한다면 것은 아니다. 스트레이트:발견하다 "[\205-\244]" 그리고나서 위해서 코드 포인트 에 음.스트링.코드 포인트(스트레이트) 하다 한다면 lookup_script(코드 포인트) == "라틴" 그리고나서 돌아가다 진실의 끝. 끝. 끝. 현지의 라튼 = 거짓의 위해서 코드 포인트 에 음.스트링.코드 포인트(스트레이트) 하다 현지의 대본 = lookup_script(코드 포인트) 한다면 대본 == "라틴" 그리고나서 라튼 = 진실의 그렇지 않으면 것은 아니다. (대본 == "Zyy" 또는 대본 == '진' 또는 대본 == "ZZZ") 그리고나서 돌아가다 거짓의 끝. 끝. 돌아가다 라튼 끝. -- 문자열에 오른쪽에서 왼쪽으로 속하는 문자만 포함되어 있는지 확인합니다. -- 스크립트 또는 무시할 수 없는 스크립트의 문자. 기능. p.is_rtl(스트레이트) 요구하다 "라이브러리 유틸".체크 타입("get_best_script", 1, 스트레이트, "문자열') 스트레이트 = 음.본문.해독하다(스트레이트, 진실의) -- UTF-8 인코딩을 도입하는 선두 바이트를 검색합니다. -- 코드 포인트 U+0580-U+10FFF.찾을 수 없는 경우 문자열은 -- 첫 번째 코드 포인트는 왼쪽에서 오른쪽 스크립트의 문자를 사용합니다. -- 오른쪽에서 왼쪽으로 스크립트는 히브리어 블록의 U+0591입니다. 한다면 것은 아니다. 스트레이트:발견하다 "[\214-\244]" 그리고나서 돌아가다 거짓의 끝. 현지의 결과 = 거짓의 현지의 rtl = 로더.스크립트.rtl 위해서 코드 포인트 에 음.스트링.코드 포인트(스트레이트) 하다 현지의 대본 = lookup_script(코드 포인트) 한다면 rtl[대본] 그리고나서 결과 = 진실의 그렇지 않으면 것은 아니다. (대본 == "Zyy" 또는 대본 == '진' 또는 대본 == "ZZZ") 그리고나서 돌아가다 거짓의 끝. 끝. 돌아가다 결과 끝. 현지의 기능. get_codepoint(args, arg) 현지의 코드 포인트_문자열 = args[arg] 또는 에러(2, "%s 매개 변수가 필요합니다.", 스트링(arg)) 현지의 코드 포인트 = 톤수(코드 포인트_문자열, 16) 또는 에러(2, "%s 매개 변수는 16진수 기준의 코드 포인트가 아닙니다.", 스트링(arg)) 한다면 것은 아니다. (0 <=> 코드 포인트 그리고. 코드 포인트 <=> 0x10FFFF) 그리고나서 에러(2, "%s 매개 변수의 코드 포인트가 범위를 벗어남", 스트링(arg)) 끝. 돌아가다 코드 포인트 끝. 현지의 기능. get_func(args, arg, 접두사) 현지의 접미사 = args[arg] 또는 에러(2, "%s 매개 변수가 필요합니다.", 스트링(arg)) 접미사 = 음.본문.다듬다(접미사) 현지의 펑크명 = 접두사 .. 접미사 현지의 기능하다 = p[펑크명] 또는 에러(2, "%s 함수는 없습니다", 펑크명) 돌아가다 기능하다 끝. -- 이 함수는, 임의의 「검색」함수를 호출할 수 있습니다.첫 번째 -- parameter는 "parameter_" 뒤에 있는 단어입니다.두 번째 파라미터는 코드 포인트입니다. -- 16진수 베이스로 지정합니다. 기능. p.찾다(틀) 현지의 기능하다 = get_func(틀.args, 1, "실행_") 현지의 코드 포인트 = get_codepoint(틀.args, 2) 현지의 결과 = 기능하다(코드 포인트) 한다면 기능하다 == p.lookup_name 그리고나서 --<control-0000>등의 코드 포인트라벨이 표시되지 않도록 합니다. -- HTML 태그로 해석됩니다. 결과 = 결과:서브("<", "<") 끝. 돌아가다 결과 끝. 기능. p.이(틀) 현지의 기능하다 = get_func(틀.args, 1, "그것은…") -- is_Latin 및 is_valid_pagename 문자열 취득. 한다면 기능하다 == p.is_라틴어 또는 기능하다 == p.is_valid_pagename 또는 기능하다 == p.is_rtl 그리고나서 돌아가다 (기능하다(틀.args[2])) 또 다른 나머지는 코드 포인트를 받는다. 현지의 코드 포인트 = get_codepoint(틀.args, 2) 돌아가다 (기능하다(코드 포인트)) -- 1개의 결과에 맞추어 조정합니다. 끝. 끝. 돌아가다 p