모듈:전환/메이크업

Module:Convert/makeunits

-- 이 모듈은 모듈에서 필요한 Wikitext를 생성하며,변환/데이터 -- 단위 마스터 목록의 Wikitext를 읽고 처리함 - (페이지 제목은 conversion_data 참조). -- -- 스크립트 방법: -- * "== 변환 ==" 이전의 모든 것을 무시하고 행을 읽으십시오. -- * 다음 라인을 처리하십시오. -- * "=== 길이====="와 같은 다음 레벨 3 제목을 찾으십시오. -- * "로 시작하는 각 다음 행을 구문 분석하십시오. - (그러나 " -" 또는 " }"으로 시작하는 줄은 무시하십시오. - * 이러한 선을 필드(delimiter " " ")로 나누고 트리밍하십시오. -- 각 분야에서 공백을 선도/확대 -- 두 번째 필드(심볼) 앞에 있는 "colspan"을 제거하십시오. -- * 스케일 필드에서 수천 개의 구분자(콤마) 제거 -- 척도가 숫자일 경우 변경하지 마십시오. - 그렇지 않으면, "5/9"와 같은 표현이어야 한다. - 표현값으로 대체되는 경우. -- * 링크 필드에서 wiki 형식 '[...]'을 제거하십시오. -- * 장치에서 중복 필드를 제거하여 데이터 테이블 크기를 줄이십시오. - * 별칭 또는 조합과 같은 장치의 대체 형식을 만드십시오. -- * 텍스트 끝 또는 줄 시작 시 처리 중지 -- 레벨 2 제목("==")이 아닌 "==="가 있는 경우 -- * pready_data()에 나열된 각 제목에 대해 위 과정을 반복하십시오. -- * 단위 테이블의 Lua 소스를 출력하십시오. -- -- -- 출력은 다음과 같은 형태를 가지고 있다. -- local all_lights = { -- ["단위코드"] = { -- 표준 형식 -- name1 = "message name", -- 중복인 경우 생략 -- name1_us = "sp=us", -- 중복인 경우 생략 -- name2 = "message name", -- 중복인 경우 생략 -- name2_us = "sp=us", -- 중복인 경우 생략 - 기호 = "잘못", -- sym_us = "symp sp=us", -- 중복인 경우 생략 -- usename = 1, -- 비어 있는 경우 생략 -- utype = "unit type", -- 레벨 3 머리글부터 -- 척도 = 1, -- 표현식 평가에서 필요한 경우 값 -- segments = {"ft" = {5280, default = "km" }, ["yd" = {1760 } -- -- composite input; 비어 있는 경우 생략 -- link = "wikilink용 기사 모음", -- 비어 있거나 중복된 경우 생략 -- ... -- 기타 값 --     }, -- ["단위코드"] = { -- 별칭을 생성하는 대체 형식 -- target = "단위 코드", -- ... -- 대상의 값을 재정의하는 선택적 값 --     }, -- ["unitcode"] = { -- $/acre 또는 BTU/h와 같은 "per" 단위를 생성하는 대체 형식 -- per = {u1, u2}, -- 번호가 매겨진 단위 코드 테이블(u1은 통화 기호일 수 있음) -- ... -- 선택적 값 --     }, -- ["unitcode"] = { -- 오류 메시지를 생성하는 대체 형식 - shouldbe = "일부 다른 단위 코드를 사용해야 함", --     }, -- ["unitcode"] = { -- 조합 출력에 대한 대체 형식(예: 'm ft') -- 조합 = {u1, u2, ...}, -- 번호가 매겨진 단위 코드 테이블 -- utype = "단위 유형" -- 표준 형식과 같이 --     }, -- ["unitcode"] = { -- 출력 배수의 대체 형식(예: 'ftin') -- 조합 = {u1, u2, ...}, -- 번호가 매겨진 단위 코드 테이블 -- 다중 = {f1, f2, ...}, -- 번호가 매겨진 정수 인자 표 -- utype = "단위 유형" -- 표준 형식과 같이 --     }, --     ... -- }  국부적 얼러버무리다 = mw.우스트링.더 낮게 국부적 usub = mw.우스트링.후보선수 국부적 text_code  국부적 특별 요리 = {  -- 이 표는 다음과 같은 일부 단위를 정의할 때 추가 필드를 추가하는 데 사용된다.  -- 정상적인 처리를 위해 예외를 요구한다.  -- 각 키는 로컬 언어로 되어 있는 반면, 각 값은 고정 텍스트로 되어 있다.  - 단, 이 스크립트는 편집해서는 안 된다.  -- 대신 모듈의 translation_table:변환/텍스트 편집 가능,  - 이 스크립트는 다음 섹션을 지역화된 것으로 대체함  -- 모듈의 정의:지정된 경우 변환/텍스트  -- [[:en:]에서 도움을 요청하십시오.모듈 토크:변환]]]]]  -- 나중에 : 이것을 변환 데이터에서 정의한다면 더 좋을 것이다.  부티프 = {   - ["로컬 언어의 단위 유형"] = "name_used_in_this_script"   ["연료 효율"] = "type_fuel_효율성",   ["길이"] = "type_length",   ["온도"] = "타입_온도",   ["볼륨"] = "type_volume",  },  우코드 = {   예외적인 = {    - ["로컬 언어의 단위 코드"] = "name_used_in_in_in_filency"    ["ft"] = "integer_more__",    ["인"] = "subunit_more_properties",    ["lb"] = "integer_more__",   },   등온도 = {    -- 일반적인 온도 척도(keVT 또는 MK가 아님)    -- ["로컬 언어의 단위 코드"] = true    ["C"] = 진실의,    ["F"] = 진실의,    ["K"] = 진실의,    ["R"] = 진실의,   },   ussymbol = {    --abbr이 지정되지 않은 경우 이름이 아닌 단위 기호를 사용하십시오.    - ["로컬 언어의 단위 코드"] = 1    ["C"] = 1,    ["F"] = 1,    ["K"] = 1,    ["R"] = 1,    ["C-변경"] = 1,    ["F-변경"] = 1,    ["K체인지"] = 1,   },   알타입의 = {    -- 유닛은 유효한 변환인 대체 유형을 가지고 있다.    - ["로컬 언어의 단위 코드"] = "로컬 언어의 일반 유형"    ["Nm"] = "에너지",    ["ftlb"] = "torque",    ["ftlb-f"] = "torque",    ["ftlbf"] = "torque",    ["inlb"] = "torque",    ["inlb-f"] = "torque",    ["inlbf"] = "torque",    ["inoz-f"] = "torque",    ["이노즈프"] = "torque",   },  }, }  -- 로컬 언어에 대한 모듈 텍스트(로컬라이제이션) -- enwiki에 대한 기본 텍스트 테이블이 여기에 제공된다. -- 다른 위키에 필요한 경우 테이블에서 원하는 섹션은 -- 모듈의 translation_table에 복사됨:변환/텍스트. -- 예를 들어 제목만 복사하고 수정하면 다음과 같은 효과를 얻을 수 있다. -- -- 로컬 번역_테이블 = { -- ... -- 기타 항목 -- mtext = { -- 제목 = { -- -- name_used_in_this_script = '페이지 제목' -- conversion_data = 'Modul:변환/문서화/변환 데이터/dok', --           }, --       }, --   } 국부적 엠텍스트 = {  section_names = {   -- name_used_in_this_script = '변환 데이터에 사용된 섹션 제목'   재지정하다    = '오버레이디스',   전환  = '전환',   배수를 초과하다 = '출력배수',   조합 = '결합',   곱절로  = '입력배수',   채무 불이행     = '기본값',   링크스        = '링크스',   과오를 범하다     = '단위당 자동',   배너명     = '변수 이름',  },  직함 = {   -- name_used_in_this_script = '페이지 제목'   conversion_data = '모듈:변환/문서화/변환 데이터',  },  메시지 = {   -- name_used_in_this_script = '오류 메시지($1 = 첫 번째 매개 변수, $2 = 초)'   m_als_bad   = 'Alias는 $1 필드에 유효하지 않은 텍스트를 가지고 있다.',   m_als_dup   = '알리아 "$1"은 이미 정의되어 있다.',   m_als_link  = 'alias "1"은 symlink 텍스트에 wikilink("[...]]"를 포함해야 한다.,   m_als_mul   = 'Alias "1"은 숫자가 아닌 "$2"의 곱을 가지고 있다.,   m_als_message  = '$2'라는 별칭은 목표값과 같기 때문에 "1$1"을 생략해야 한다.',   m_als_type  = '$1' 별칭의 대상이 잘못된 유형을 가지고 있다.',   m_als_undef = '일차 단위는 별칭 "=$1"보다 먼저 정의해야 함,   m_cmb_miss  = '조합에 대한 단위 코드가 누락됨.',   m_cmb_mb_mb_message  = '$1 조합에 대해 지정된 단위 없음',   m_cmb_one   = '$1 조합에 대해 지정된 단위는 하나',   m_cmb_type  = $2 조합의 '$1' 단위의 유형이 잘못됨',   m_cmb_undef = $2 조합의 '$1 단위'가 정의되지 않음.,   m_cmp_def   = 'composite "$1"은 기본 단위 코드를 지정해야 한다.',   m_cmp_int   = '$1 복합체'에는 척도비가 정수가 아닌 성분이 있다.',   m_cmp_inval = '$1'의 성분에는 잘못된 척도인 $2가 있다.,   m_cmp_multi  = '합성물 $1'에는 필드가 너무 많다.,   m_cmp_miss  = '합성물의 단위 코드 누락',   m_cmp_order = '$1'의 성분 순서가 잘못되었거나 척도가 잘못된 성분이다.',   m_cmp_scale = 복합 재료 "$2"의 '$1' 대체 단위는 잘못된 척도를 가지고 있다.,   m_cmp_2   = '합성물 "1달러"는 정확히 두 개의 단위 코드를 지정해야 한다.',   m_cmp_type  = 복합 재료 "$2"의 '$1' 단위의 유형이 잘못됨.,   m_cmp_undef = 복합 "$2"의 '$1 단위'가 정의되지 않음.,   m_def_초  = '$2' 단위에 대한 '$1'의 유효하지 않은 조건.,   m_def_fmt   = '$2' 단위에 대한 '$1' 기본 출력에는 2 또는 3이 있어야 한다.,   m_def_rpt   = '$2 단위'의 기본 출력 '$1'이 반복된다.,   m_def_dives  = '$1 단위의 기본 출력은 동일한 단위'이다.,   m_def_type  = $2 단위에 대한 '$1' 기본 출력 유형이 잘못됨',   m_def_undef = '$2 단위'에 대한 '$1' 기본 출력이 정의되지 않음',   m_dfs_code  = '기본값 섹션: 단위 코드가 지정되지 않음',   m_dfs_dup   = '기본값 섹션: $1 단위'가 이미 지정되었다.',   m_dfs_nfs_nfs  = '기본값 섹션: $1 단위'에 기본값이 지정되지 않음.',   m_dfs_nfs_nfs   = '기본값 섹션: $1 단위에는 기호가 있어야 한다.',   m_dfs_2   = '기본값 섹션: $1 단위'에는 두 개의 필드만 있어야 한다.',   m_dfs_undef = '기본값 섹션: $1 단위가 정의되지 않음',   m_dup_code  = '단위 코드 "1달러"는 이미 정의되었다.',   m_dv     = '오류:.',   m_ftl_read  = 'wikitxt는 "[$1]"에서 읽을 수 없다.',   m_ftl_table = '[$1]은(는) "$2" 테이블을 내보내야 한다.,   m_ftl_type  = '치명 오류: "1달러"에 대한 알 수 없는 데이터 유형,   m_hdg_snm2  = 'Level 2 제목 "1"을 찾을 수 없음.',   m_hdg_sn3  = '이전에는 레벨 3 머리글 없음: $1',   m_line_num  = '(1달러 선).,   m_lnk_message = '1달러 링크'에 잘못된 괄호 수가 있다.,   m_lnk_dup   = '링크 예외 "$1"은 이미 정의되어 있다.',   m_lnk_miss  = '링크에 대한 단위 코드가 누락됨.',   m_lnk_message  = '$1 단위에 대해 정의된 링크가 없음.',   m_lnk_message   = 링크의 '$1 단위 코드'에는 기호가 있어야 한다.',   m_lnk_2   = '1달러 단위' 링크에 대한 행은 두 개의 필드만 가져야 한다.,   m_lnk_type  = '링크 예외 "$1"의 유형이 잘못됨.',   m_lnk_undef = 링크에 대한 '$1 단위 코드'가 정의되지 않음.',   m_miss_code = '단위 코드 누락.',   m_miss_miss_message  = '누락 기호.',   m_miss_type = '누락 장치 유형.',   m_mul_int   = '다중 '$1'에는 척도비가 정수가 아닌 성분이 있다.,   m_mul_miss  = '다수의 단위 코드 누락',   m_mul_mule  = '$1 여러 개의 단위가 지정되지 않음',   m_mul_one   = '$1 여러 개의 "$1"에 대해 하나의 단위만 지정됨',   m_mul_order = '여러 '$1'에는 잘못된 순서 또는 잘못된 눈금이 있는 성분이 있다.',   m_mul_scale = '여러 '$1'에는 잘못된 척도 '$2'의 성분이 있다.,   m_mul_std   = 복수 "$2"의 '$1 단위'는 표준 단위여야 한다.,   m_mul_type  = 복수 "$2"의 '$1' 단위의 유형이 잘못됨.,   m_mul_undef = '$1 단위'는 여러 "$2"로 정의되지 않았다.,   m_no_message  = '단위 정의가 있는 페이지 제목 필요.',   m_ovr_dup   = '오버라이드 "$1"은 이미 정의되어 있다.',   m_ovr_miss  = 오버라이드에 대한 장치 코드가 누락됨.,   m_per_dup   = '$1 단위 당 이미 정의됨.',   m_per_message = '$1 단위'는 'per'에 빈 필드가 있다.,   m_per_연료  = '$1 유닛'에 연료 효율을 위한 유닛 유형이 잘못됨',   m_per_message   = 'per'에 대한 유효하지 않은 필드.',   m_per_2   = '$1 단위'에는 "per"에 정확히 2개의 필드가 없다.,   m_per_undef = '$1 단위'는 "per"에 정의되지 않은 단위 코드 "$2"를 가지고 있다.,   m_퍼센트_s = '$1 필드'에는 "%s"를 포함할 수 없다.,   m_badx_bad   = '알 수 없는 접두사: $1.',   m_svx_name  = '접두사 집합이 있는 단위는 이름을 포함해야 한다.',   m_scl_bad   = '척도 식이 유효하지 않음: "1.",   m_scl_miss  = '음계 누락.',   m_scl_oflow = '척도 식이 잘못된 값을 제공함: "1.",   m_var_valt   = '변수 이름 섹션: 각 행에는 구성된 열 수가 있어야 한다.',   m_var_dup   = '$1 단위'는 이미 가변 이름을 가지고 있다.',   m_var_miss  = '변수 이름의 필드 누락',   m_var_undef = 변수 이름의 '$1 단위'는 정의되지 않았다.,   m_경고   = '경고:',   m_wrn_more  = ' (그리고 더 많이 표시되지 않음)',   m_wrn_nbsp  = '1호선은 깨지지 않는 공간을 포함하고 있다.',   m_wrn_nodef = '다음 장치 코드가 있는 유니트는 기본 출력이 없다.',   m_wrn_ucode = '  $1',  }, }  국부적 기능을 하다 메세지(핵심을, ...)  -- 지역화할 수 있는 메시지 테이블에서 메시지 반환  - '$1', '$2', ...는 첫 번째, 두 번째, ... 매개 변수로 대체된다.  -- 각각 문자열 또는 숫자여야 함.  -- 글로벌 변수는 테스트 프로그램에 의해 다음과 같이 설정될 수 있다.  -- 이 프로그램에서 생성된 메시지를 확인하십시오.  국부적 대변을 보다 = {}  을 위해 i, v  아이페어({...}) 하다   대변을 보다['
                
.. i] = v 종지부를 찍다 핵심을 = 핵심을 또는 '???' 국부적 여분의 만일 is_test_run 그리고 핵심을 ~= 'm_line_num' 그때 여분의 = 핵심을 .. ': ' 다른 여분의 = '' 종지부를 찍다 돌아오다 여분의 .. 끈.gsub(엠텍스트.메시지[핵심을] 또는 핵심을, '$%d+', 대변을 보다) 종지부를 찍다 국부적 기능을 하다 그만두다(핵심을, ...) -- 오류()를 사용하여 오류 메시지를 주변 pcall()에 전달하십시오. 착오(메세지(핵심을, ...), 0) 종지부를 찍다 국부적 기능을 하다 quit_no_message() -- 오류를 던지다. -- 이것은 메시지의 오류를 발생시킬 수 있는 일부 기능에서 사용된다. - 하지만 실제로 메시지가 표시되지 않는 곳은 호출로 인해 -- 함수는 오류를 포착하기 위해 pcall을 사용하며, 모든 메시지는 무시된다. -- 이 기능을 사용하면 (이 기능이 유용할 수 있음) 메시지가 문서화됨 -- 일부 다른 애플리케이션)은 결코 나타나지 않는 것처럼 번역이 필요하지 않다. 착오('이 메시지는 표시되지 않음', 0) 종지부를 찍다 국부적 기능을 하다 수집() -- 품목을 보관할 테이블을 반환하십시오. 돌아오다 { n = 0, 덧셈을 = 기능을 하다 (자아의, 항목) 자아의.n = 자아의.n + 1 자아의[자아의.n] = 항목 종지부를 찍다, 펑펑 터지다 = 기능을 하다 (자아의, 항목) 만일 자아의.n > 0 그때 국부적 맨 위의 = 자아의[자아의.n] 자아의.n = 자아의.n - 1 돌아오다 맨 위의 종지부를 찍다 종지부를 찍다, 합류하다 = 기능을 하다 (자아의, 9월을 보내다) 돌아오다 table.classat(자아의, 9월을 보내다 또는 '\n') 종지부를 찍다, } 종지부를 찍다 국부적 경고. = 수집() 국부적 기능을 하다 add_warning(핵심을, ...) -- 최종 결과 이전에 삽입할 경고 추가. 경고.:덧셈을(메세지(핵심을, ...)) 종지부를 찍다 ---표현을 평가하기 위한 시작 코드------------------------------------------------ -- 이것은 Lua의 부하 문자열()이 스크리번토에서 사용할 수 없기 때문에 필요하다. - 그리고 각 척도 값은 "5/9"와 같은 표현으로 지정할 수 있다. -- 괄호 사용 등 보다 복잡한 표현이 지원됨 - 및 이진 연산자: + - * / ^ 국부적 운영자 = { ['+'] = { 우선권을 주다 = 1, 연상성 = 1, 펑크 = 기능을 하다 (a, b) 돌아오다 a + b 종지부를 찍다 }, ['-'] = { 우선권을 주다 = 1, 연상성 = 1, 펑크 = 기능을 하다 (a, b) 돌아오다 a - b 종지부를 찍다 }, ['*'] = { 우선권을 주다 = 2, 연상성 = 1, 펑크 = 기능을 하다 (a, b) 돌아오다 a * b 종지부를 찍다 }, ['/'] = { 우선권을 주다 = 2, 연상성 = 1, 펑크 = 기능을 하다 (a, b) 돌아오다 a / b 종지부를 찍다 }, ['^'] = { 우선권을 주다 = 3, 연상성 = 2, 펑크 = 기능을 하다 (a, b) 돌아오다 a ^ b 종지부를 찍다 }, ['('] = '(', [')'] = ')', } 국부적 기능을 하다 토큰화자(문자 메시지를 보내다) -- 함수 '다음'은 다음 토큰 중 하나를 반환한다. -- 숫자 -- 테이블(테이블) -- 문자열(' 또는 '') -- nil (텍스트 끝) -- 유효하지 않으면 오류가 발생함. -- 번호가 서명되지 않음(단일 연산자는 지원되지 않음). 돌아오다 { 양치류 = 1, 최대치 = #문자 메시지를 보내다, 문자 메시지를 보내다 = 문자 메시지를 보내다, 다음에 = 기능을 하다(자아의) 만일 자아의.양치류 <= 자아의.최대치 그때 국부적 p1, p2, 때리다 = 자아의.문자 메시지를 보내다:찾아내다('^%s*([+%-*/^())])', 자아의.양치류) 만일 때리다 그때 자아의.양치류 = p2 + 1 돌아오다 운영자[때리다] 종지부를 찍다 p1, p2, 때리다 = 자아의.문자 메시지를 보내다:찾아내다('^%s*(%d*%)'?%d*[eE][+-]?%d*), 자아의.양치류) 만일 아닌 때리다 그때 p1, p2, 때리다 = 자아의.문자 메시지를 보내다:찾아내다('^%s*(%d*%)'?%d*), 자아의.양치류) 종지부를 찍다 국부적 가치를 매기다 = 톤넘버(때리다) 만일 가치를 매기다 그때 자아의.양치류 = p2 + 1 돌아오다 가치를 매기다 종지부를 찍다 quit_no_message('수'는 ' .. 자아의.문자 메시지를 보내다:후보선수(자아의.양치류) .. '"') 종지부를 찍다 종지부를 찍다 } 종지부를 찍다 국부적 기능을 하다 평가_평가(토큰, 양부모) -- 토큰화된 식을 평가하여 값을 반환하거나 오류를 발생시키십시오. 국부적 옴폭, opstack = 수집(), 수집() 국부적 기능을 하다 perform_ops(우선권을 주다, 연상성) 하는 동안에 opstack.n > 0 그리고 (opstack[opstack.n].우선권을 주다 > 우선권을 주다 또는 (opstack[opstack.n].우선권을 주다 == 우선권을 주다 그리고 연상성 == 1)) 하다 국부적 rhs. = 옴폭:펑펑 터지다() 국부적 lhs = 옴폭:펑펑 터지다() 만일 아닌 (rhs. 그리고 lhs) 그때 quit_no_message('입력번호') 종지부를 찍다 국부적 op = opstack:펑펑 터지다() 옴폭:덧셈을(op.펑크(lhs, rhs.)) 종지부를 찍다 종지부를 찍다 국부적 token_last 국부적 기능을 하다 set_state(token_type) 만일 token_last == token_type 그때 국부적 행방불명의 = (token_type == '숫자') 그리고 'operator' 또는 '숫자' quit_no_message('missing' .. 행방불명의) 종지부를 찍다 token_last = token_type 종지부를 찍다 하는 동안에 진실의 하다 국부적 토큰 = 토큰:다음에() 만일 타자를 치다(토큰) == '숫자' 그때 set_state('숫자') 옴폭:덧셈을(토큰) 그렇지 않으면 타자를 치다(토큰) == '테이블' 그때 set_state('operator') perform_ops(토큰.우선권을 주다, 토큰.연상성) opstack:덧셈을(토큰) 그렇지 않으면 토큰 == '(' 그때 set_state('숫자') 옴폭:덧셈을(평가_평가(토큰, 진실의)) 그렇지 않으면 토큰 == ')' 그때 만일 양부모 그때 부숴뜨리다 종지부를 찍다 quit_no_message('상호 괄호') 다른 부숴뜨리다 종지부를 찍다 종지부를 찍다 perform_ops(0) 만일 옴폭.n > 1 그때 quit_no_message('오퍼레이터') 종지부를 찍다 만일 옴폭.n < 1 그때 quit_no_message('입력번호') 종지부를 찍다 돌아오다 옴폭:펑펑 터지다() 종지부를 찍다 국부적 기능을 하다 평가하다(표현) -- 식( 문자열) 평가에서 값(숫자) 반환, - 또는 유효하지 않을 경우 오류를 발생시키십시오. -- 이것은 방탄복은 아니지만, 사용된 표현을 뒷받침해야 한다. 돌아오다 평가_평가(토큰화자(표현)) 종지부를 찍다 ---표현 평가 코드------------------------------------------------------------------ - --모듈에서 조정된 코드:변환-------------------------------------------- 국부적 복수형_수평형 = 's -- 번역에서 변경될 수 있음.아래 복수형_수평형 국부적 기능을 하다 얄팍한_복사본(t) -- t의 얕은 사본을 반환하십시오. -- Scrippunto에서 제공하는 mw.clone()의 기능과 오버헤드가 필요하지 않음. 국부적 결과 = {} 을 위해 k, v 쌍들(t) 하다 결과[k] = v 종지부를 찍다 돌아오다 결과 종지부를 찍다 국부적 기능을 하다 갈라지다(문자 메시지를 보내다, 구분 기호) -- 텍스트를 분할할 때 필드가 있는 번호표를 반환하십시오. -- 구분 기호는 탈출하지 않고 regex에서 사용된다(예: '.'는 실패함). -- 각 분야에는 선행/계곡 공백이 제거되어 있다. 국부적 t = {} 문자 메시지를 보내다 = 문자 메시지를 보내다 .. 구분 기호 - 마지막 아이템을 받으려면 을 위해 항목 문자 메시지를 보내다:gmatch('%s*(-)%s*' .. 구분 기호) 하다 table.insert(t, 항목) 종지부를 찍다 돌아오다 t 종지부를 찍다 국부적 단위_mt = { -- SI 접두사를 허용하지 않는 단위에 대한 결측값을 가져오기에 적합함. -- 경고:누락된 필드에 대해 부울 값 'false'가 반환됨 -- 따라서 __index는 특정 단위의 동일한 필드에 대해 두 번 호출되지 않는다. __index = 기능을 하다 (자아의, 핵심을) 국부적 가치를 매기다 만일 핵심을 == 'name1' 또는 핵심을 == 'sym_us' 그때 가치를 매기다 = 자아의.심볼 그렇지 않으면 핵심을 == 'name2' 그때 가치를 매기다 = 자아의.이름1 .. 복수형_수평형 그렇지 않으면 핵심을 == 'name1_us' 그때 가치를 매기다 = 자아의.이름1 만일 아닌 날것(자아의, 'name2_us') 그때 -- name1_us가 'foot'인 경우 dombarm_suffix를 추가하여 name2_us를 만들지 마십시오. 자아의.name2_us = 자아의.이름2 종지부를 찍다 그렇지 않으면 핵심을 == 'name2_us' 그때 국부적 원시1_us = 날것(자아의, 'name1_us') 만일 원시1_us 그때 가치를 매기다 = 원시1_us .. 복수형_수평형 다른 가치를 매기다 = 자아의.이름2 종지부를 찍다 그렇지 않으면 핵심을 == '링크' 그때 가치를 매기다 = 자아의.이름1 다른 가치를 매기다 = 거짓의 종지부를 찍다 날염(자아의, 핵심을, 가치를 매기다) 돌아오다 가치를 매기다 종지부를 찍다 } 국부적 기능을 하다 접두사_이름(구성 단위, 이름을 붙이다, 색인을 달다) -- 올바른 위치에 SI 접두사가 삽입된 반환 단위 이름. -- 인덱스 = 1 (name1), 2 (name2), 3 (name1_us), 4 (name2_us) -- 위치는 (문자가 아닌) 바이트 색인이므로, 루아의 서브()를 사용한다. 국부적 양치류 = 날것(구성 단위, 'prefix_position') 만일 타자를 치다(양치류) == '끈' 그때 양치류 = 톤넘버(갈라지다(양치류, ',')[색인을 달다]) 종지부를 찍다 만일 양치류 그때 돌아오다 이름을 붙이다:후보선수(1, 양치류 - 1) .. 구성 단위.si_name .. 이름을 붙이다:후보선수(양치류) 종지부를 찍다 돌아오다 구성 단위.si_name .. 이름을 붙이다 종지부를 찍다 국부적 unit_prefixed_mt = { -- SI 접두사를 수락하는 단위에 대한 결측값을 가져오는 데 적합. -- 사용하기 전에 si_name, si_prefix 필드를 정의해야 한다. -- 유닛은 _symbol, _name1 및 _name1을 정의해야 한다. -- _bask_us, _name1_us, _name2_us를 정의할 수 있음 -- (_su_us, _name2_us는 sp=us를 사용하는 언어에 대해 정의될 수 있다. - 미국 단위와 무관한 변종을 지칭하는 것). __index = 기능을 하다 (자아의, 핵심을) 국부적 가치를 매기다 만일 핵심을 == 'symbol' 그때 가치를 매기다 = 자아의.si_si .. 자아의._beakes 그렇지 않으면 핵심을 == 'sym_us' 그때 가치를 매기다 = 날것(자아의, '_sym_us') 만일 가치를 매기다 그때 가치를 매기다 = 자아의.si_si .. 가치를 매기다 다른 가치를 매기다 = 자아의.심볼 종지부를 찍다 그렇지 않으면 핵심을 == 'name1' 그때 가치를 매기다 = 접두사_이름(자아의, 자아의._name1, 1) 그렇지 않으면 핵심을 == 'name2' 그때 가치를 매기다 = 날것(자아의, '_name2') 만일 가치를 매기다 그때 가치를 매기다 = 접두사_이름(자아의, 가치를 매기다, 2) 다른 가치를 매기다 = 자아의.이름1 .. 복수형_수평형 종지부를 찍다 그렇지 않으면 핵심을 == 'name1_us' 그때 가치를 매기다 = 날것(자아의, '_name1_us') 만일 가치를 매기다 그때 가치를 매기다 = 접두사_이름(자아의, 가치를 매기다, 3) 다른 가치를 매기다 = 자아의.이름1 종지부를 찍다 그렇지 않으면 핵심을 == 'name2_us' 그때 가치를 매기다 = 날것(자아의, '_name2_us') 만일 가치를 매기다 그때 가치를 매기다 = 접두사_이름(자아의, 가치를 매기다, 4) 그렇지 않으면 날것(자아의, '_name1_us') 그때 가치를 매기다 = 자아의.name1_us .. 복수형_수평형 다른 가치를 매기다 = 자아의.이름2 종지부를 찍다 그렇지 않으면 핵심을 == '링크' 그때 가치를 매기다 = 자아의.이름1 다른 가치를 매기다 = 거짓의 종지부를 찍다 날염(자아의, 핵심을, 가치를 매기다) 돌아오다 가치를 매기다 종지부를 찍다 } 국부적 기능을 하다 찾다(단위, 단위 코드, sp, 무엇) - 장치 사본을 찾은 경우 반환하거나 0을 반환하십시오. -- 이 컷다운 코드에서 sp는 항상 영(0)이며, 무시되는 것. 국부적 t = 단위[단위 코드] 만일 t 그때 만일 t.그래야 한다 그때 돌아오다 못을 박다 종지부를 찍다 국부적 결과 = 얄팍한_복사본(t) 만일 결과.접두사 그때 결과.si_name = '' 결과.si_si = '' 돌아오다 설정 가능한(결과, unit_prefixed_mt) 종지부를 찍다 돌아오다 설정 가능한(결과, 단위_mt) 종지부를 찍다 국부적 SI 접두사 = text_code.SI 접두사 을 위해 터벅터벅 걷다 = SI 접두사[1] 또는 2, 1, -1 하다 -- SI 접두사를 찾으십시오. 별칭과 함께 발생해서는 안 된다. -- 긴 접두사('dam' is decametre)를 먼저 확인하십시오. -- SIprefixes[1] = 접두사 최대 #charactors(mw.ustring.sub) 국부적 접두사를 붙이다 = usub(단위 코드, 1, 터벅터벅 걷다) 국부적 si = SI 접두사[접두사를 붙이다] 만일 si 그때 국부적 t = 단위[usub(단위 코드, 터벅터벅 걷다+1)] 만일 t 그리고 t.접두사 그때 국부적 결과 = 얄팍한_복사본(t) 만일 (sp == '우리' 또는 t.sp_us) 그리고 si.name_us 그때 결과.si_name = si.name_us 다른 결과.si_name = si.이름을 붙이다 종지부를 찍다 결과.si_si = si.접두사를 붙이다 또는 접두사를 붙이다 -- 이 스크립트에서 각 척도는 문자열이다. 결과.저울 = 토스트링(톤넘버(t.저울) * 10 ^ (si.지수를 나타남 * t.접두사)) 결과.접두사 = 못을 박다 -- 접두사 단위가 더 이상 접두사를 사용하지 않음(이 스크립트에서는 반환된 단위를 단위 목록에 추가할 수 있음) 돌아오다 설정 가능한(결과, unit_prefixed_mt) 종지부를 찍다 종지부를 찍다 종지부를 찍다 국부적 지수를 나타남, 기저 단위 = 단위 코드:짝을 맞추다('^e(%d+)(.*)) 만일 지수를 나타남 그때 국부적 덩치를 넣다 = text_code.eng_ng[지수를 나타남] 만일 덩치를 넣다 그때 국부적 결과 = 찾다(단위, 기저 단위, sp, 'no_message') 만일 아닌 결과 그때 돌아오다 못을 박다 종지부를 찍다 만일 아닌 (결과.상쇄하다 또는 결과.빌트인 또는 결과.덩치를 넣다) 그때 결과.말대꾸를 하다 = 단위 코드 -- 기본 예외를 조회하는 키 결과.덩치를 넣다 = 덩치를 넣다 -- result.scale은 설정되지 않은 단위에 대해 호출되므로 설정하지 마십시오. 돌아오다 결과 종지부를 찍다 종지부를 찍다 종지부를 찍다 돌아오다 못을 박다 종지부를 찍다 국부적 기능을 하다 평가_조건(가치를 매기다, 조건) -- 값에 조건부 식을 적용하여 true 또는 false - 또는 유효하지 않을 경우 오류를 발생시키십시오. -- 매우 제한된 표현식 집합이 지원됨: -- v < 9 -- v * 9 < 9 -- 어디에 - 'v'가 값으로 대체됨 - 9는 임의의 숫자(Lua tonumber로 정의됨 - '<'는 '<=' 또는 ''' 또는 '>='일 수도 있다. -- 또한 다음과 같은 양식이 지원된다. - LHS와 RHS -- 어디에 -- LHS, RHS = 위의 표현 중 하나. 국부적 기능을 하다 비교하다(가치를 매기다, 문자 메시지를 보내다) 국부적 아리탑, 요소, 콤플렉스를 하다, 한도를 정하다 = 문자 메시지를 보내다:짝을 맞추다('^%s*v%s*([*])*(?)(<<]=?)
$$SIDE_BOTTOM$$
    $$BOTTOM$$