모듈:유니코드 데이터/테스트 사례

Module
현지의 p = 요구하다 "모듈:유닛 테스트" 현지의 유니코드_data = 요구하다(mw.제목.현재 제목 가져오기().하위 페이지텍스트 == "스캐너덜너덜  그리고. "모듈:유니코드 데이터/샌드박스" 또는 "모듈:유니코드 데이터")  현지의 U = mw.ustring. 현지의 get_codepoint = mw.ustring.코드 포인트 현지의 기능. (코드 포인트)  한다면 유니코드_data.is_printable(코드 포인트) 그리고나서   현지의 printed_코드 포인트 = U(코드 포인트)   한다면 mw.ustring.NFC로(printed_코드 포인트) ~= printed_코드 포인트 그리고나서    printed_코드 포인트 = ("&#x%X;"):서식을(코드 포인트)   끝.   한다면 유니코드_data.is_message(코드 포인트) 그리고나서    printed_코드 포인트 = "◌" .. printed_코드 포인트   끝.   돌아가다 ("U+%04X: %s"):서식을(코드 포인트, printed_코드 포인트)  또 다른   돌아가다 ("U+%04X"):서식을(코드 포인트)  끝. 끝.  현지의 기능. show_codepoint_and_name(코드 포인트)  돌아가다 (%s(%s)"):서식을((코드 포인트),   유니코드_data.lookup_name(코드 포인트)) 끝.  기능. p:test_message_name()  현지의  = {   {   0x0000, "<control-0000>" },   {   0x007F, "<control-007F>" },   {   0x00C1, "예시가 있는 라틴 대문자 A" },   {   0x0300, "그레이브 액센트의 조합" },   {   0x0378, "<304-0378> },   {   0x1B44, "BALINESE ADEG" },   {   0x1F71, "옥시아가 있는 그리스어 작은 알파벳 알파" },   {   0x3555, "CJK 통합 IDEOGRAPH-3555" },   {   0xAC01, "한글 음절 개그" },   {   0xD5FF, "한글 음절 HEH" },   {   0xDC00, "<대리인-DC00>", },   {   0xEEEE, "<private-use-EEEEE>" },   {   0xFDD1, "<비문자-FDD1>", },   {   0xFFFD, "교체 문자" },   {   0xFFFF, "<비문자-FFFF>" },   {  0x1F4A9, "똥 더미" },   {  0xE0000, "<예약 완료-E0000>" },   {  0xF0F0F, "<private-use-F0F0F>" },   { 0x10FFFF, "<비문자-10FFFF>" },  }    자신:반복적인(,   기능. (자신, 코드 포인트, 이름.)    자신:동등한((코드 포인트),     유니코드_data.lookup_name(코드 포인트), 이름.)   끝.) 끝.  기능. p:test_sla_age()  현지의  = {   {   0x0061, "1.1" },   {   0x0378, "NA" },   {   0x1B44, "5.0" },   {   0x3555, "3.0" },   {   0xAC01, "2.0" },   {   0xDC00, "2.0", },   {   0xEEEE, "1.1" },   {   0xFDD1, "3.1", },   {  0x1F4A9, "6.0" },   {  0xE0000, "NA" },   {  0xF0F0F, "2.0" },   { 0x10FFFF, "2.0" },  }    자신:반복적인(,   기능. (자신, 코드 포인트, 나이)    이 기능이 모듈에 추가되면 pcall을 제거합니다.유니코드 데이터]].    pcall(기능. ()     자신:동등한((코드 포인트),      유니코드_data.lookup_age(코드 포인트), 나이)    끝.)   끝.) 끝.  기능. p:test_is_message()  현지의  = {   { 0x0300, 진실의 },   { 0x0060, 거짓의 },  }    자신:반복적인(,   기능. (자신, 코드 포인트, 기대됩니다)    자신:동등한(     show_codepoint_and_name(코드 포인트),     유니코드_data.is_message(코드 포인트),     기대됩니다)   끝.) 끝.  기능. p:test_is_default_configurable()  현지의  = {   { 0x0061, 거짓의 },   { 0x00AD, 진실의 },  }    자신:반복적인(,   기능. (자신, 코드 포인트, 기대됩니다)    이 기능이 모듈에 추가되면 pcall을 제거합니다.유니코드 데이터]].    pcall(기능. ()     자신:동등한(      show_codepoint_and_name(코드 포인트),      유니코드_data.is_default_detailable(코드 포인트),      기대됩니다)    끝.)   끝.) 끝.  기능. p:test_messages_script()  현지의  = {   { 0x0061, "라튼" },   { 0x002F, "Zyyy" },   { 0x0300, "진" },   { 0x0378, "Zzz" },   { 0x0398, "그렉" },   { 0x03E2, "콥트" },   { 0x2014, "Zyyy" },  }    자신:반복적인(,   기능. (자신, 코드 포인트, 기대됩니다)    자신:동등한(     show_codepoint_and_name(코드 포인트),     유니코드_data.lookup_script(코드 포인트),     기대됩니다)   끝.) 끝.  기능. p:test_messages_messages()  현지의  = {   { get_codepoint "\t", "cc" },   { get_codepoint " ",  "Zs" },   { get_codepoint "[",  "Ps" },   { get_codepoint "]",  "페" },   { get_codepoint "^",  "SK" },   { get_codepoint "A",  "루" },   { 0x00AD,             "Cf" },   { get_codepoint "¾",  "아니오" },   { get_codepoint "«",  "파이" },   { get_codepoint "»",  "Pf" },   { 0x0300,             "Mn" },   { 0x0488,             "나" },   { get_codepoint "٣",  "Nd" },   { get_codepoint "子", "Lo" },   { get_codepoint "비공식",  "유한공사" },   { 0x1B44,             "맥" },   { get_codepoint "∈",  "Sm" },   { get_codepoint "‿",  "Pc" },   { get_codepoint "↹",  "그래서" },   { get_codepoint "⸗",  "Pd" },   { get_codepoint "Ⅷ", "Nl" },   { 0x2028,              "Zl" },   { 0x2029,              "Zp" },   { get_codepoint "ゞ",  "Lm" },   { 0xD800,              "Cs" },   { get_codepoint "£",  "Sc" },   { 0xFFFF,              "Cn" },   { 0x100000,            "Co" },  }    자신:반복적인(,   기능. (자신, 코드 포인트, 기대됩니다)    자신:동등한(     show_codepoint_and_name(코드 포인트),     유니코드_data.lookup_lookup(코드 포인트),     기대됩니다)   끝.) 끝.  현지의 재밌어요 = 요구하다 "모듈:재미" 현지의 m_테이블 = 요구하다 "모듈:테이블 도구"  현지의 스크립트_to_count_mt = {  __index = 기능. (자신, 열쇠)   자신[열쇠] = 0   돌아가다 0  끝.,  __통화 = 기능. (자신, ...)   돌아가다 상을 차리다({}, 자신)  끝. } 상을 차리다(스크립트_to_count_mt, 스크립트_to_count_mt)  현지의 script_module = 상을 차리다({}, {  __index = 기능. (자신, 스트르)   한다면 유형(스트르) ~= "문자열" 그리고나서 돌아가다 영의 끝.      현지의 스크립트_to_count = 스크립트_to_count_mt()      위해서 코드 포인트  mw.ustring.코드 포인트(스트르) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다    현지의 대본 = 유니코드_data.lookup_script(코드 포인트)    스크립트_to_count[대본] = 스크립트_to_count[대본] + 1   끝.      현지의 인쇄된 = 테이블.콘캣(    재밌어요.mapIter(     기능. (세어보세요, 대본)      돌아가다 (%s(%d)"):서식을(대본, 세어보세요)     끝.,     m_테이블.정렬된 쌍(      스크립트_to_count,      기능. (스크립트1, 대본2)       돌아가다 스크립트_to_count[스크립트1] > 스크립트_to_count[대본2]      끝.)),    ", ")      자신[스트르] = 인쇄된      돌아가다 인쇄된  끝., })  현지의 script_module = {  "is_Latin"이 Zyyy 및 Zinh 문자열을 처리하지 않음을 증명합니다.  라틴어의 등장인물들.    이 예제는 U+0340 이하의 문자만 포함하므로,  lookup_script를 호출할 필요가 없습니다.  { "%!?́", 영의 },  { ""†‰‡‽⁕·ʼ‰†‽"", 영의 },  { "col·legi", "라튼" },  "HTML 문자 참조",  { "𐘀", "리나" },  { "&#x10600;", "리나" },  { "–", 영의 },  { "&ndash;", 영의 },  템플릿 토크의 예:Lang#할코메렘의 이탤릭체화]  "할코렘",  { "lá:nbhp", "라튼" },  { "xʷməkʷy̓m", 영의 }, 그리스 문자 한 개  { ə̓̓min̓mə", "라튼" },  "견적",   s:it:디비나 코메디아/인페르노/칸토 I]  { 탄트아마라체포코에피 모르테; 마퍼 트라타 델 벤치비트로바이, dirò de l'altre cose ch'i'v' hoscorte.],   "라튼"     },  {   나바호의 축복입니다.   --[[사용자 대화:Stephen G. Brown/text8] 디 케쉬미쉬 비이야시쉬드리이고우베니키호지들리 둘레우.  니히에치나áááháhígíbiiiʼiʼiǫ íhodejél, 이호지슈, 아요우요우요우니 bee nikʼihojidlli doleeu.ʼáá sahdiigiʼátʼégo baaa hózǫgo 니히하나홀즈히히히히히비이이이이이이이이이이이이이이이이이이이이이이이이이이이이호즈히이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이이.,   "라튼"  },  { 일리아드의 개막 ([s:el:el:ιιάςλα/ς/α]]), 마크롱 및   단모음 α, γ, γ의 길이를 표시하기 위해 추가된 브레스: [[Μῆνῐν ᾰ̓́ειδε, θεᾱ́, Πηληῐ̈ᾰ́δεω Ᾰ̓χῐλῆος γμομος, γμος, γμος, γμος, γμος, πολλᾱ̀ς δ᾽ ῐ̓φθῑ́μους ψῡχᾱ̀ς Ἄῐ̈δῐ προῐ̈́ᾰψεν ἡρώων, αὐτοὺς δὲ ἑλώρῐᾰ τεῦχε κῠ́νεσσιν οωνοῐτοπῐσᾶέδς·ήδοὸ᾽ἐτλείευλτ·],   "그렉"  },  { 카라마조프 형제:Братья Карамазовы (Достоевский)/Книга первая]] [[Вот если вы не согласитесь с этим последним тезисом и ответите: «Не так» или «не всегда так», то я, пожалуй, и ободрюсь духом насчет значения героя моего Алексея Федоровича.Ибо не только чудак «не всегда» частность и обособление, а напротив, бывает так, что он-то, пожалуй, и носит в себе иной раз сердцевину целого, а остальные люди его эпохи — все, каким-нибудь наплывным  ветром, на время почему-то от него оторвались…]],   "Cyrl"  },  { 리그 베다: [https://sa.wikisource.org/wiki/ 는_http.http://field포탈. [[ॐ अग्निमीळे पुरोहितं यज्ञस्य देवमृत्विजम् । होतारं रत्नधातमम् ॥१॥ अग्निः पूर्वेभिरृषिभिरीड्यो नूतनैरुत । स देवाँ एह वक्षति ॥२॥ अग्निना रयिमश्नवत् पोषमेव दिवेदिवे । यशसं वीरवत्तमम् ॥३॥ अग्ने यं यज्ञमध्वरं विश्वतः परिभूरसि । स इद्देवेषु गच्छति ॥४॥ अग्निर्होता कविक्रतुः सत्यश्चित्रश्रवस्तमः । देवो देवेभिरा गमत् ॥५॥ यदङ्ग दाशुषे त्वमग्ने भद्रं करिष्यसि । तवेत् तत् सत्यमङ्गिरः ॥६॥ उप त्वाग्ने दिवेदिवे दोषावस्तर्धिया वयम् । नमो भरन्त एमसि ॥७॥ राजन्तमध्वराणां गोपामृतस्य दीदिविम् । वर्धमानं स्वे दमे ॥८॥ स नः पितेव सूनवेऽग्ने सूपायनो भव । सचस्वा नः स्वस्तये ॥९॥]],   "데바"  }, }  현지의 ends_in_ufficiation = 상을 차리다({}, {  __index = 기능. (자신, 열쇠)   현지의  = mw.ustring.경기(mw.ustring.후보선수(열쇠, -1), "%p") ~= 영의   자신[열쇠] =    돌아가다   끝., }) 현지의 기능. show_script_message(script_module)  현지의 구분자 = ": "    마지막 문자가 구두점인 경우 스크립트 수를 자체 줄에 배치  Unicode_data.lookup_category를 사용할 수 있지만 메모리 사용량이 더 많습니다.  한다면 ends_in_ufficiation[script_module] 그리고나서   구분자 = "<br>&bull;"  끝.    돌아가다 script_module:gsub('\n', '<br>') .. 구분자   .. script_module[script_module] 끝.  기능. p:test_get_best_script()  자신:반복적인(script_module,   기능. (자신, 스트르, 기대됩니다)    자신:동등한(     show_script_message(스트르),     유니코드_data.get_best_script(스트르),     기대됩니다)   끝.) 끝.  기능. p:test_is_Latin()  자신:반복적인(script_module,   기능. (자신, 스트르, best_script, is_라틴어)    자신:동등한(show_script_message(스트르), 유니코드_data.is_라틴어(스트르),     is_라틴어 또는 best_script == "라튼")   끝.) 끝.  기능. p:test_message_block()  현지의  = {   {   0x0064, "기본 라틴어"                      },   {   0x030B, "진단 부호 조합"      },   {   0x03A3, "그리스어와 콥트어"                 },   {   0x0411, "키릴 문자"                         },   {   0x10E6, "조지아어"                         },   {   0x3175, "한글호환성 자모        },   {   0xAC01, "한글 음절                 },   {   0x4E0A, "CJK 통합 한자"           },   {  0x1F608, "에모티콘"                        },   {  0x30000, "CJK 통합 한자 확장 G"},   { 0x10FFFF, "개인용 보조 사용 구역-B" },  }    자신:반복적인(,   기능. (자신, 코드 포인트, 블록_이름)    자신:동등한(     (코드 포인트),     유니코드_data.lookup_block(코드 포인트),     블록_이름)   끝.) 끝.  기능. p:test_is_rtl()  현지의  = {   { "أبو عبد الله محمد بن عبد الله اللواتي الطنجي بن بطوطة", 진실의 }, 이븐 바투타의 이름   { 아답 알카지, 거짓의 }, 잘못된 입력의 예   { "ܛܘܒܲܘܠܢܐܹܝܢܕܹܲܝܢܒܟܠ݂܄ܕܢܿܗܘܸܢܢ܂ܠܸܐܵܐܢܗܿܵܠܲܘ", 진실의 }, 시리아어, 육복음 (마태복음 5:8)   { "בְּרֵאשִׁית, בָּרָא אֱלֹהִים, אֵת הַשָּׁמַיִם, וְאֵת הָאָרֶץ.", 진실의 }, 히브리어:창세기 1:1   { "𞤀𞤣𞤤𞤢𞤥 𞤆𞤵𞤤𞤢𞤪", 진실의 }, 아담: 알파벳 이름   {    아베스탄:하오마에게 보내는 찬송가: 야스나 10.8 ([위트:𐬀𐬉𐬴𐬨𐬀]])    "𐬬𐬍𐬯𐬞𐬈 ⸱ 𐬰𐬍 ⸱ 𐬀𐬥𐬌𐬌𐬉 ⸱ 𐬨𐬀𐬜𐬃𐬢𐬵𐬋 ⸱ 𐬀𐬉𐬴𐬨𐬀 ⸱ 𐬵𐬀𐬗𐬌𐬧𐬙𐬈 ⸱ 𐬑𐬭𐬎𐬎𐬍𐬨 ⸱ 𐬛𐬭𐬎𐬎𐬋 ⸱ 𐬁𐬀𐬝 ⸱ 𐬵𐬋 ⸱ 𐬫𐬋 ⸱ 𐬵𐬀𐬊𐬨𐬀𐬵𐬈 ⸱ 𐬨𐬀𐬜𐬋 ⸱ 𐬀𐬴𐬀 ⸱ 𐬵𐬀𐬗𐬀𐬌𐬙𐬈",    진실의   },   { " ިވެހިދ"ި", 진실의 }, 타나 문자로 쓰여진 히베히라는 단어   { "𐤀𐤓𐤍𐤟𐤆𐤐𐤏𐤋𐤟𐤀𐤕𐤁𐤏𐤋𐤟𐤁𐤍𐤀𐤇𐤓𐤌𐤟𐤌𐤋𐤊𐤂𐤁𐤋𐤟𐤋𐤀𐤇𐤓𐤌𐤟𐤀𐤁𐤄", 진실의 }, 페니키아어:에이히람 석관 ([위트:𐤀𐤓𐤍]])   { " ࡍࡃࡀࡖࡌࡀࡉࡉࡄࡀ", 진실의 }, 만다이크: 만다 ḏ하이제 ("삶의 지식"; wikt:ࡌࡀࡍࡃࡀ ࡖࡄࡉࡉࡀ]])   { " ࠓࠂࠝࠄࠓࠉࠌࠜࠆࠉࠜ", 진실의 }, 사마리아인의 히브리어: īargerēzēm ("게리짐 산")게리짐 산])   { "%$!^&", 거짓의 },  }    자신:반복적인(,   기능. (자신, 스트르, 기대됩니다)    자신:동등한(스트르, 유니코드_data.is_rtl(스트르), 기대됩니다)   끝.) 끝.  함수 이름을 테스트 사례 테이블에 대해 보다 읽기 쉬운 헤더로 변경합니다. 위해서 k, v  m_테이블.정렬된 쌍(p) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다  한다면 유형(k) == "문자열" 그리고나서   현지의 new_k = k:gsub("^test_(.+)$", "<code>%1에 대한 테스트 사례")   한다면 new_k ~= k 그리고나서    p[k] = 영의    p[new_k] = v   끝.  끝. 끝.  돌아가다 p