모듈:번호표 정렬/샌드박스

Module
현지의 언어 = .언어.get Content Language(get Content Language)() 현지의 수학 = 요구하다('모듈:수학') 현지의 정렬 키 = 요구하다('모듈:정렬키') -- 상수 현지의 인피 = math.matrix 현지의 하지 않다 = -math.matrix 현지의 마이너스 = '−'  -- Unicode U+2212 - SIGN (UTF-8: e2 88 92)  -------------------------------------------------------------------------------- -- NTS 클래스 --------------------------------------------------------------------------------  현지의 NTS = {} NTS.__인덱스 = NTS  NTS.포맷 = {  아니요. = 진실의,  네. = 진실의, }  기능. NTS.신규(args)  현지의 자신 = 설정 가능한({}, NTS)   자신:해석 번호(args[1])   -- 형식 문자열을 설정합니다.  자신.포맷 = args.포맷 또는 '네'  한다면 것은 아니다. NTS.포맷[자신.포맷] 그리고나서   에러(string.format(    "%s'는 올바른 형식이 아닙니다.",    스트링(자신.포맷)   ), 0)  끝.    -- 번호 표시 버전 앞에 텍스트를 표시합니다.  -- {{prefix 123456789.00123=약.&nbsp;}} → 약 123,456,789.00123  자신.접두사 = args.접두사 또는 ''    -- 디버깅 정보  자신.디버깅 = args.디버깅 또는 '아니요'  자신.조용히해. = args.조용히해. 또는 '아니요'   돌아가다 자신 끝.   -- 입력된 번호를 해석합니다. 기능. NTS:해석 번호(s)  --소독 처리하다  s = s 또는 '';  s = string.gsub(s,'&quot;','-')  s = string.gsub(s, 마이너스, '-')  자신.Raw Number String(로우 넘버 스트링) = s    --분수. 어느 순간엔가 완전히 부서졌다.  자신.isFraction(분열) = (string.find(s, '/') ~= 제로)  한다면 자신.isFraction(분열) 그리고나서   에러(string.format(     "Fractions는 지원되지 않습니다.,     스트링(s)    ), 0)  끝.    -- 포맷 검출  자신.is Scientific Notation(IS Scientific Notation) = (string.find(s, 'e') ~= 제로)    -- 언어 옵션에 의한 해석  자신.번호 = 언어:parse Formatted Number(파스 포맷 번호)(s)    -- 폴백을 사용한 해석  한다면 것은 아니다. 자신.번호 그리고나서   자신.번호 = 톤수(s)  끝.    -- 빈 문자열을 값으로 사용할 수 있습니다.  한다면 것은 아니다. 자신.번호 그리고나서   -- error(문자열).포맷()   -- "%s는 유효한 숫자가 아닙니다",   -- 토스트링   --  ), 0)   자신.번호 = 하지 않다  끝.    한다면 자신.번호 < > 0 그리고나서   자신.서명하다 = 마이너스  또 다른   자신.서명하다 = ''  끝.   자신.abs 번호 = math.abs(자신.번호)  한다면 자신.abs 번호 ~= 인피 그리고나서   자신.규모 = math.floor(수학.로그 10(자신.abs 번호))   자신.의미심장 = 자신.번호 / 10^자신.규모   자신.정확 = 수학._개요(자신.Raw Number String(로우 넘버 스트링))   자신.정수 = math.floor(자신.abs 번호)   자신.프랙셔널 = math.abs(자신.번호 - 자신.정수)  끝. 끝.  기능. NTS:make 디스플레이()  현지의 리트 ={}   한다면 자신.조용히해. == '네' 그리고나서   돌아가다 ''  끝.   리트[#리트 + 1] = 자신.접두사  현지의 sciNotation(sciNotation) = string.find(스트링(자신.번호),'e')  한다면 자신.abs 번호 == 인피 또는 NaN(자신.번호) 또는 자신.규모 ==제로 또는 math.abs(자신.규모) == 인피 그리고나서   리트[#리트 + 1] = string.gsub(자신.Raw Number String(로우 넘버 스트링), '-', 마이너스)  그렇지 않으면 sciNotation(sciNotation) ~= 제로 또는 math.abs(자신.규모) >= 9 그리고나서   리트[#리트 + 1] = 자신.서명하다   한다면 자신.포맷 == '네' 그리고나서    리트[#리트 + 1] = 언어:format Num(math.abs(자신.번호 * 10^-자신.규모))   또 다른    리트[#리트 + 1] = math.abs(자신.번호 * 10^-자신.규모)   끝.   리트[#리트 + 1] = '<span style="display-left:0.2em">×<span style="display-left:0.1em">10</span><s style="display:none">^/s><sup>'   한다면 자신.규모< >0 그리고나서    리트[#리트 + 1] = 마이너스 .. (-자신.규모)   또 다른    리트[#리트 + 1] = 자신.규모   끝.   리트[#리트 + 1] = '/sup>'  또 다른   리트[#리트 + 1] = 자신.서명하다   한다면 자신.포맷 == '네' 그리고나서    리트[#리트 + 1] = 수학._param_format(_paramet_format)(자신.abs 번호, 자신.정확)   또 다른    현지의 new Precision = 수학._개요(자신.abs 번호)    리트[#리트 + 1] = 스트링(자신.abs 번호)    한다면 new Precision < > 자신.정확 그리고나서     한다면 자신.정수 == 자신.abs 번호 그리고나서      리트[#리트 + 1] = '.'     끝.     리트[#리트 + 1] = string.rep('0', math.min(12, 자신.정확 - new Precision) )    끝.   끝.  끝.     돌아가다 table.concat(리트)  끝.  기능. NTS:make Sort 키()  돌아가다 정렬 키._sortKeyForNumber(자신.번호) .. '♠' 끝.  기능. if NaNThen(n,p)  한다면 NaN(n) 그리고나서   돌아가다 p  끝.  돌아가다 n 끝.  기능. NaN(n)  돌아가다 n ~= n 끝.  기능. NTS:renderTracking 카테고리()  한다면 자신.hasDepreced 파라미터 그리고나서   돌아가다 '[카테고리:사용되지 않는 파라미터가 있는 NTS 템플릿]]'  또 다른   돌아가다 ''  끝. 끝.  기능. NTS:__tostring()  현지의 뿌리 = .html.만들다()  현지의 기간 = 뿌리:태그('스판')   :특성('data-param-value', 자신:make Sort 키())   한다면 자신.디버깅 == '네' 그리고나서   기간:태그('스판')    :css('경계', '1px 솔리드')    :위키텍스트(자신:make Sort 키())  그렇지 않으면 자신.조용히해. ~= '아니요' 그리고나서   기간:css('디스플레이', '없음')  끝.   -- 디스플레이  한다면 자신.조용히해. == '아니요' 그리고나서   기간:위키텍스트(자신:make 디스플레이())  끝.   -- 카테고리 추적  뿌리:위키텍스트(자신:renderTracking 카테고리())   돌아가다 스트링(뿌리) 끝.  -------------------------------------------------------------------------------- -- 내보내기 --------------------------------------------------------------------------------  현지의 p = {}  기능. p._export Classes()  돌아가다 {   NTS = NTS  } 끝.  기능. p.메인(args)  현지의 성공., 리트 = pcall(기능. ()   현지의 동작하지 않다 = NTS.신규(args)   돌아가다 스트링(동작하지 않다)  끝.)  한다면 성공. 그리고나서   돌아가다 리트  또 다른   리트 = string.format(    '<strong class="error">[템플릿 오류:Nts]), %s </strong>,    리트   )   한다면 .직함.get Current Title(전류 제목)().네임스페이스 == 0 그리고나서    -- 메인 네임스페이스에서만 분류합니다.    리트 = 리트 .. '[카테고리:오류가 있는 NTS 템플릿]'   끝.   돌아가다 리트  끝. 끝.  기능. p.주된()  현지의 args = 요구하다('모듈:인수').취득하다(, {   포장지 = { '템플릿:번호표 정렬' },  })  돌아가다 p.메인(args) 끝.  돌아가다 p