모듈:포맷 번호
Module이 모듈은 숫자 형식 지정 기능을 제공합니다.이 기능은 #invoke 또는 다른 Lua 모듈에서 사용할 수 있습니다.
다른 Lua 모듈에서 사용
일반 Wiki 페이지에서 모듈을 사용하려면 특별한 준비가 필요하지 않습니다.다른 Lua 모듈의 모듈을 사용하는 경우 다음과 같이 먼저 모듈을 로드해야 합니다.
현지의 mf = 요구하다('모듈:포맷 번호') (the.mfvariable은 Module Formatnum의 약자입니다.필요에 따라서, 보다 알기 쉬운 것을 선택할 수 있습니다).
모듈의 대부분의 함수에는 Lua용 버전과 #invoke용 버전이 있습니다.다른 Lua 모듈에서 #invoke 함수를 사용할 수 있지만 Lua 함수를 사용하면 Lua 프레임개체에 액세스할 필요가 없다는 장점이 있습니다.Lua 함수는 다음과 같습니다._단, #syslog 함수는 그렇지 않습니다.
주된
{{#제외:Formatnum main x lang=prec=sep=} mf.format Num(x, 언어, 사전, 세프) 「 」를 참조해 주세요.
-- 이 모듈은 템플릿의 기능을 대체하는 것을 목적으로 합니다.Formatnum 및 관련 템플릿. 현지의 p = {} 기능. p.주된(틀) 현지의 args = 틀:부모 취득().args 현지의 사전 = args.사전 또는 '' 현지의 세프 = args.세프 또는 '' 현지의 번호 = args[1] 또는 args.번호 또는 '' 현지의 언어 = args[2] 또는 args.언어 또는 '' -- 미디어 내의 언어 파라미터를 확인합니다.Wiki 발신자 프레임 한다면 언어 == "대화-대화" 그리고나서 --백호환성('arabic-indic'은 Supported Language가 아닙니다)에 한합니다. 언어 = "fa" -- "ks"보다 더 나은 지원 그렇지 않으면 언어 == '' 또는 것은 아니다. 음.언어.is Supported Language(지원 언어)(언어) 그리고나서 -- 「 Supported Languages 」는 반드시 「BuiltinValidCodes」는 아니기 때문에, 반드시 「BuiltinValidCodes」는 아닙니다. -- 'KnownLanguages' (최소한 로컬 Wiki의 기본 현지화에서 정의된 언어 이름) -- 단, 모두 유효한 언어 코드(Wiki 서브페이지 또는 식별자로 적합: 슬래시, 콜론, HTML 태그 또는 엔티티 없음)입니다. 또한 페이지 제목에 고유하기 위해 대문자를 포함하지 않는다(BCP47에는 제한이 없다). -- 단, MediaWiki의 특정 요구에 대한 BCP47 언어 태그의 표준 형식을 위반할 수 있습니다. -- 빈 언어, 지정되지 않은 언어 및 지원되지 않는 언어는 사용자의 언어를 사용하여 이곳 커먼스에서 취급됩니다. -- Wiki의 로컬 'ContentLanguage' 대신. 언어 = 틀:callParser 기능( "int", "실패" ) --사용자가 선택한 언어를 가져옵니다. 끝. 돌아가다 p.format Num(번호, 언어, 사전, 세프 ~= '') 끝. 현지의 숫자 = { -- MediaWiki의 핵심 Lua 라이브러리에서 mw.language: formatNum()에서 지원되지 않는 언어의 십진수 치환 ["ml-old"] = { '൦', '൧', '൨', '൩', '൪', '൫', '൬', '൭', '൮', '൯' }, ["mn"] = { '᠐', '᠑', '᠒', '᠓', '᠔', '᠕', '᠖', '᠗', '᠘', '᠙'}, ['타'] = { '௦', '௧', '௨', '௩', '௪', '௫', '௬', '௭', '௮', '௯'}, ["te"] = { '౦', '౧', '౨', '౩', '౪', '౫', '౬', '౭', '౮', '౯'}, ["th"] = { '๐', '๑', '๒', '๓', '๔', '๕', '๖', '๗', '๘', '๙'} } 기능. p.format Num(번호, 언어, 사전, 작은) -- 지정한 값이 유효한 숫자가 아닌 경우 변경하지 않고 그대로 반환합니다. 현지의 가치 = 톤수(번호) 한다면 가치 == 제로 그리고나서 돌아가다 번호 끝. -- ASCII만의 기본 포맷(패딩 없음) 번호 = 스트링(가치) -- 지수(mw.language에서 올바르게 관리되지 않음)가 존재하는지 확인합니다.FormatNum() 및 내부 버그(힌디어 등) 때문에 잊어버린 경우도 있습니다. 현지의 지수 현지의 포스 = string.find(번호, '[이]') 한다면 포스 ~= 제로 그리고나서 지수 = 스트링.서브(번호, 포스 + 1, string.len을 클릭합니다.(번호)) 번호 = 스트링.서브(번호, 1, 포스 - 1) 또 다른 지수 = '' 끝. -- 의뢰한 최소 정밀도 확인 사전 = 톤수(사전) -- 참된 숫자로 지정되지 않은 경우 null 한다면 사전 ~= 제로 그리고나서 사전 = math.floor(사전) 한다면 사전 < > 0 그리고나서 사전 = 제로 --정수가 아닌 잘못된 정밀도를 폐기합니다. 그렇지 않으면 사전 > 14 그리고나서 사전 = 14 -- torstring(숫자)에 의해 지원되는 최대 정밀도 끝. 끝. -- ASCII 문자열의 최소 정밀도를 사전 처리합니다. 현지의 점 한다면 (사전 또는 0) > 0 그리고나서 포스 = string.find(번호, '.', 1, 진실의) -- 플레인 검색, regexp 없음 한다면 포스 ~= 제로 그리고나서 사전 = 포스 + 사전 - string.len을 클릭합니다.(번호) -- 추가 또는 삭제할 후행 소수점의 유효 수 점 = '' -- 이미 존재합니다. 또 다른 점 = '.' -- 추가해야 합니다. 끝. 또 다른 점 = '' -- 점 추가 안 함 사전 = 0 -- 정밀도는 변경하지 않습니다. 끝. 한다면 언어 ~= 제로 그리고. 음.언어.isKnownLanguageTag(언어) == 진실의 그리고나서 -- 번호를 현지화된 숫자, 소수 구분자 및 그룹 구분자로 변환합니다. 현지의 언어 = 음.get Language(언어) 한다면 작은 그리고나서 번호 = 언어:format Num(톤수(번호), { 통신 없음 = 'y' }) --경고: 최대 20개 언어의 현지화된 리소스를 로드할 수 있습니다. 또 다른 번호 = 언어:format Num(톤수(번호)) --경고: 최대 20개 언어의 현지화된 리소스를 로드할 수 있습니다. 끝. -- 정밀도 후처리 한다면 사전 > 0 그리고나서 현지의 영 = 언어:format Num(0) 번호 = 번호 .. 점 .. 음.스트링.대표자(영, 사전) 그렇지 않으면 사전 < > 0 그리고나서 -- TODO: 마지막 소수점 반올림. 여기서는 소수점만 초과하여 잘라냅니다. 번호 = 음.스트링.후보선수(번호, 1, 음.스트링.렌(번호) + 사전) 끝. -- 구분 기호를 그룹화하지 않고 현지화된 base-10 지수를 추가합니다(현지화된 선행 기호 'E'를 검출하는 신뢰할 수 있는 방법은 없습니다). 한다면 지수 ~= '' 그리고나서 번호 = 번호 .. 'E' .. 언어:format Num(톤수(지수),{통신 없음=진실의}) 끝. 또 다른 -- 현지화되지 않고 ASCII만 -- 정밀도 후처리 한다면 사전 > 0 그리고나서 번호 = 번호 .. 점 .. 음.스트링.대표자('0', 사전) 그렇지 않으면 사전 < > 0 그리고나서 -- TODO: 마지막 소수점 반올림. 여기서는 소수점만 초과하여 잘라냅니다. 번호 = 음.스트링.후보선수(번호, 1, 음.스트링.렌(번호) + 사전) 끝. -- base-10 지수를 추가합니다. 한다면 지수 ~= '' 그리고나서 번호 = 번호 .. 'E' .. 지수 끝. 끝. -- ASCII 번호 치환의 특수한 경우(일부 언어의 경우 Lua 코어 라이브러리에서 지원되지 않음) 한다면 숫자[언어] 그리고나서 위해서 i, v 에 아이페어(숫자[언어]) 하다 번호 = 음.스트링.서브(번호, 스트링(i - 1), v) 끝. 끝. 돌아가다 번호 끝. 돌아가다 p