모듈:유니코드 데이터/스크립트/make

Module

현지의 p = {}  현지의 배열 = 요구하다 '모듈:배열'  현지의 기능. 패턴_지문양(스트르)  돌아가다 (스트르:gsub('%p', '%%%1')) 끝.  기능. p.make_script_name_to_code(페이지_이름)  현지의 속성_value_value_value = 주장하다(주장하다(mw.제목.신규(페이지_이름)):콘텐츠 가져오기())   현지의 script_module = 속성_value_value_value:경기(   패턴_지문양 스크립트(sc)'   .. '%s+(.)%s+'   .. 패턴_지문양 스크립트_확장(scx)')   현지의 script_name_to_code = {}    위해서 코드, 이름.  script_module:성냥 'sc%s+;%s+(%a+)%s+;%s+([%a_]+)' 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다   script_name_to_code[이름.] = 코드  끝.    돌아가다 script_name_to_code 끝.  기능. p.make_script_data(scripts_txt, 속성_value_value_txt)  현지의 script_data = 주장하다(주장하다(mw.제목.신규(scripts_txt)):콘텐츠 가져오기())    현지의 script_name_to_code = p.make_script_name_to_code(속성_value_value_txt)  상을 차리다(script_name_to_code, { __index = 기능. (자신, k)   오류(('%s에 대한 코드 없음'):서식을(k))  끝. })    현지의 script_module = 배열()    현지의 prev_codepoint, prev_script_name, prev_script_range  위해서 코드 포인트 1, 코드 포인트 2, script_name  script_data:성냥 '%f[^\n%z](%x+)%?%?(%x*)%s+;%s*([%w_]+)" 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다   코드 포인트 1, 코드 포인트 2 = 수에 달하여(코드 포인트 1, 16), 수에 달하여(코드 포인트 2, 16)   현지의 script_range   한다면 prev_script_range 그리고. script_name == prev_script_name 그리고. 코드 포인트 1 - prev_codepoint == 1 그리고나서    prev_script_range[2] = 코드 포인트 2 또는 코드 포인트 1   또 다른    script_range = { 코드 포인트 1, 코드 포인트 2 또는 코드 포인트 1, script_name_to_code[script_name] }    script_module:삽입하다(script_range)   끝.   prev_codepoint, prev_script_name, prev_script_range =    코드 포인트 2 또는 코드 포인트 1, script_name, script_range 또는 prev_script_range  끝.    현지의 독신자들 = {}  현지의 i = 1    하는 동안에 script_module[i] 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다   현지의 저급의, 높은, script_code = 짐을 풀다(script_module[i])   한다면 저급의 == 높은 그리고나서    독신자들[저급의] = script_code    script_module:제거한다.(i)   또 다른    i = i + 1   끝.  끝.    script_module:종류(   기능. (범위 1, 범위 2)    돌아가다 범위 1[1] < 범위 2[1]   끝.)    현지의 템플릿 = [[ 로컬 데이터 = { 싱글 = { ... },   범위 = { ... }, 대본.txt는 전체 이름을 제공합니다. 여기서는 공간을 절약하기 위해 별칭으로 간주합니다. 별칭 = { ... }, } ]]    현지의 인쇄물_인쇄물 = 배열()  위해서 _, 범위  짝을 짓다(script_module) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다   현지의 저급의, 높은, script_code = 짐을 풀다(범위)   인쇄물_인쇄물:삽입하다(('\t\t0x%05X, 0x%05X, "%s","):서식을(저급의, 높은, script_code))  끝.    현지의 인쇄물_인쇄물 = 배열()  위해서 코드 포인트, script_code  요구하다 '모듈:테이블 도구'.정렬된 쌍(독신자들) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다   인쇄물_인쇄물:삽입하다(('\t\t[0x%05X] = "%s",):서식을(코드 포인트, script_code))  끝.    현지의 printed_script_name_to_code = 배열()  위해서 이름., 코드  요구하다 '모듈:테이블 도구'.정렬된 쌍(script_name_to_code,    기능.(name1, name2)     돌아가다 script_name_to_code[name1] < script_name_to_code[name2]    끝.) 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다   printed_script_name_to_code:삽입하다(('\t\t%s = "%s",):서식을(코드, 이름.:gsub('_', ' ')))  끝.    현지의 데이터. = 템플릿   :gsub('%.%.%.', 인쇄물_인쇄물:을 속이는('\n'), 1)   :gsub('%.%.%.', 인쇄물_인쇄물:을 속이는('\n'), 1)   :gsub('%.%.%.', printed_script_name_to_code:을 속이는('\n'), 1)    돌아가다 데이터. 끝.  기능. p.하이라이트(lua_code)  돌아가다 mw.현재 프레임 가져오기():확장 태그{   이름. = "강조 강조 표시",   내용물 = lua_code,   논병아리 = { 랑그 = "루아" }  } 끝.  기능. p.주된()  현지의 디르 = '사용자:Erutuon/Unicode'  현지의 scripts_txt = 디르 .. '/스크립트'입니다.txt'  현지의 속성_value_value_txt = 디르 ..'/PropertyValueAliases'입니다.txt'    돌아가다 p.하이라이트(p.make_script_data(scripts_txt, 속성_value_value_txt)) 끝.  돌아가다 p