Permanently protected module

모듈:ISO 날짜

Module
--[[   이 모듈은 날짜 문자열 처리를 목적으로 합니다.  모듈에서 변경 사항을 먼저 적용하지 않고 이 코드를 수정하지 마십시오.ISO 날짜/샌드박스 및 테스트 모듈:ISO 날짜/샌드박스/테스트 케이스 및 모듈 토크:ISO 날짜/샌드박스/테스트 케이스.  작성자 및 유지관리자: * 사용자:Parent5446 - 함수 모방 템플릿의 원래 버전:ISO 날짜 * 사용자: Jarekt - 템플릿을 모방한 함수의 원래 버전:날짜 및 템플릿:ISO년  ]]    현지의 p = {}  -- ======================================= -- === 종속성 ====================== -- ======================================= 현지의 D = 요구하다('모듈:날짜 18n') -- c:Module의 enwp 버전:날짜.  --[[ ISO년   이 함수는 날짜 문자열의 연도 부분을 반환합니다.   사용방법: {{#제외:ISOdate ISO year target_string}   파라미터 1: 날짜 문자열   오류 처리: 문자열에 연도가 포함되어 있지 않은 경우 함수는 아무것도 반환하지 않습니다. 이는 템플릿에 대해 권장되는 처리입니다.호출하는 기본(유일한?) 템플릿인 생성자. ]] 기능. p.ISO년(  )   돌아가다 p._ISO년( .args[1] ) 끝.  기능. p._ISO년( 입력 )  한다면 것은 아니다. 입력 그리고나서   돌아가다 ''  끝.  입력 = .본문.다듬다( 입력 )       -- 빈 문자열일 경우 반환한다.  한다면 입력 == "" 그리고나서   돌아가다 입력  끝.       -- 번호가 있으면 반환한다.  한다면 톤수( 입력 ) 그리고나서   돌아가다 .스트링.포맷( '%04i', 입력 )  끝.       --그렇지 않으면 정규 표현 일치를 사용합니다.  입력 = .스트링.경기( 입력, '^+?(-?%d%d?%d?%d?%d?-' )  한다면 입력 그리고. 톤수( 입력 ) 그리고나서   돌아가다 .스트링.포맷( '%04i', 입력 )  또 다른   돌아가다 ''  끝. 끝.  --[[ ISO 날짜   이 함수는 ISOdate 템플릿의 핵심 부분입니다.    사용방법: {{#제외:ISOdate ISOdate target_string lang=}   파라미터: 1: 날짜 문자열 lang: 표시할 언어 형식: 일부 언어의 언어 형식(유전자 등) class: <time> 노드의 CSS 클래스  오류 처리: 문자열에 적절한 ISO 날짜가 포함되어 있지 않은 경우 이 함수는 원래 문자열을 반환합니다.     이는 템플릿에 대해 권장되는 처리입니다.그것을 호출하는 정보(및 유사한 템플릿). ]] 기능. p.ISO 날짜()  현지의 데이터, 성공했다  현지의 args = .args  한다면 것은 아니다. (args.언어 그리고. .언어.is Supported Language(지원 언어)(args.언어)) 그리고나서    args.언어 = :callParser 기능( "int", "실패" ) --사용자가 선택한 언어를 가져옵니다.  끝.  데이터, 성공했다 = p._ISOdate(   .본문.다듬다(args[1]),   args.언어,                  --언어   args.사례.  또는 '',           -- 해당 언어를 사용하는 언어의 해당 달의 문법 대소문자를 지정합니다.   args.학급 또는 '시작하지 않음,    -- 날짜가 포함된 시간 노드의 html 클래스를 설정합니다.    args.트리밍_년 또는 '100-999' -- 디폴트로는 1 및2 자리수의 연수는 4 자리수의 길이이며, 3 자리수의 연수는 그대로입니다.  )  돌아가다 데이터 끝.  기능. p._ISOdate(데이터, 언어, 사례., 학급, 트리밍_년)   -- pattern: regexp - 테스트할 정규 표현, dlen - 날짜 요소 수, tail = "꼬리" 요소인 경우  -- regexp 힌트:  -- 1) "^"로 시작하여 "$"로 끝나는 문자열은 문자열 전체가 일치함을 나타냅니다.  -- 2) 옵션의 테일 부분이 그대로 복사되어 해석된 날짜의 주요 부분에 이어 공백으로 날짜로부터 분리되어야 합니다.따라서 (\s.+)?"  현지의 패턴 = {   -- YYY-MM-DD HH로 시작하는 문자열:MM:SS. 4번째 자리(지난 100년 이내 초수를 알 수 있는 경우), 나머지 1-2 자리   -- 날짜와 시간은 공백 또는 "T"로 구분할 수 있으며, 끝에 "Zulu" 시간대를 나타내는 "Z"가 있을 수 있습니다.   {일람=6, 꼬리=7, regexp=^+?(%d%d%d%d)-(%d%d?)-(%d%d?)[T](%d%d?):(%d%d?):(%d%d?)Z?(%s.*)"},    {일람=6, 꼬리=0, regexp=^+?(%d%d%d%d)-(%d%d?)-(%d%d?)[T](%d%d?):(%d%d?):(%d%d?)Z?$"},    -- YYY-MM-DD HH:MM으로 시작하는 문자열. 4년째 자리, 나머지 1-2 자리   --(아마 1000년이 지난 후보다 시간과 분을 더 잘 알고 있다면)   {일람=5, 꼬리=6, regexp=^+?(%d%d%d%d)-(%d%d?)-(%d%d?)[T](%d%d?):(%d%d?)(%s.+)"},   {일람=5, 꼬리=0, regexp=^+?(%d%d%d%d)-(%d%d?)-(%d%d?)[T](%d%d?):(%d%d?)$"},   -- YYY-MM-DD로 시작하는 문자열.1~4번째 자리, 나머지 1-2 자리   {일람=3, 꼬리=4, regexp=^+?(%d%d?%d?%d?)-(%d%d?)-(%d%d?)(%s.+)},   {일람=3, 꼬리=0, regexp=^+?(%d%d?%d?%d?)-(%d%d?)-(%d%d?)-(%d%d?)$"},   -- YYY-MM으로 시작하는 문자열. 년도 3~4자리, 월 2자리   -- (10-5=5와 같은 날짜 문자열로 변환하는 것을 희망합니다)   {일람=2, 꼬리=3, regexp=^+?(%d%d%d%d?)-(%d%d)(%s.+)},    -- 문자열 전체가 YYY-MM 형식인 경우: 1 ~4 자리수의 경우, 1 ~2 자리수의 달   {일람=2, 꼬리=0, regexp=^+?(%d%d?%d?%d?%d?)-(%d%d?)$"},    -- string은 숫자로 시작합니다.-> 3자리 또는4자리 길이로 해야 1년이 됩니다.   {일람=1, 꼬리=2, regexp="^+?" (%d%d%d%d? (%s.+)"},     -- 문자열 전체가 숫자(1-4자리 길이)일 경우 년으로 해석됩니다.   {일람=1, 꼬리=0, regexp="^+? (%d%d?%d?%d?%d?%d?)$"},  }    -- 제공된 변수를 기준으로 날짜 벡을 만듭니다.  현지의 날짜, 꼬리, format Num  날짜, 꼬리, format Num = p.test_date_module(데이터 또는 '', 패턴)  한다면 날짜[1]=='' 또는 날짜[1]==제로 그리고나서   -- datestr가 날짜로 보이지 않는 경우(템플릿일 수 있음) 빠르게 반환   돌아가다 데이터, 거짓의  끝.   -- p 에 콜 합니다.날짜 문자열 형식을 지정하는 날짜 함수  현지의 성공했다, 데이터 2  성공했다, 데이터 2 = pcall( D._날짜, 날짜, 언어, 사례., 학급, 트리밍_년)  한다면 성공했다 그리고. 데이터 2~='' 그리고나서   돌아가다 .본문.다듬다( 데이터 2 .. 꼬리), 진실의  또 다른 -- 에러가 발생했을 경우, 원래의 문자열을 반환합니다.   돌아가다 데이터, 거짓의  끝.  끝.  기능. p.ISOdate_extended()  -- pattern: regexp - 테스트할 정규 표현, dlen - 날짜 요소 수, tail = "꼬리" 요소인 경우  -- regexp 힌트:  -- 1) "^"로 시작하여 "$"로 끝나는 문자열은 문자열 전체가 일치함을 나타냅니다.  -- 2) 옵션의 테일 부분이 그대로 복사되어 해석된 날짜의 주요 부분에 이어 공백으로 날짜로부터 분리되어야 합니다.따라서 (\s.+)?"   현지의 데이터, 성공했다  현지의 args = .args  한다면 것은 아니다. (args.언어 그리고. .언어.is Supported Language(지원 언어)(args.언어)) 그리고나서    args.언어 = :callParser 기능( "int", "실패" ) --사용자가 선택한 언어를 가져옵니다.  끝.  데이터, 성공했다 = p._ISOdate(   .본문.다듬다(args[1]),   args.언어,                  --언어   args.사례.  또는 '',           -- 해당 언어를 사용하는 언어의 해당 달의 문법 대소문자를 지정합니다.   args.학급 또는 '시작하지 않음,    -- 날짜가 포함된 시간 노드의 html 클래스를 설정합니다.    args.트리밍_년 또는 '100-999' -- 디폴트로는 1 및2 자리수의 연수는 4 자리수의 길이이며, 3 자리수의 연수는 그대로입니다.  )  한다면 성공했다 그리고나서   돌아가다 데이터  끝.   현지의 패턴 = {   -- MM/DD/YYY와 같은 확장된 형식의 집합   {일람=3, 꼬리=4, regexp=^(%d%d?)[-/](%d%d?)[-/](%d%d%d%d%d)(%s.+)},   {일람=3, 꼬리=0, regexp="^(%d%d?)[-/](%d%d?)[-/](%d%d%d%d%d)$"},   {일람=3, 꼬리=0, regexp="^(%d%d?)%s(%w+)%s(%d%d%d%d%d)$"},   {일람=3, 꼬리=0, regexp="^(%w+)%s(%d%d?),%s(%d%d%d%d)$"},  }    현지의 날짜, 꼬리, format Num, 카테고리 = ''  날짜, 꼬리, format Num = p.test_date_module(.args[1], 패턴)  한다면 format Num==1 또는 format Num==2 그리고나서   VEC = 날짜;   한다면 톤수(날짜[1])>12 그리고나서    .args[1] = string.format('%04i-%02i-%02i', 날짜[3], 날짜[2], 날짜[1] )    카테고리 = '[카테고리:DD/MM/YYY 형식의 날짜]'    돌아가다 .본문.다듬다( p.ISO 날짜() .. 꼬리);   그렇지 않으면 톤수(날짜[2])>12 그리고나서    .args[1] = string.format('%04i-%02i-%02i', 날짜[3], 날짜[1], 날짜[2] )    카테고리 = '[카테고리:날짜(MM/DD/YYY 형식)]'    돌아가다 .본문.다듬다( p.ISO 날짜() .. 꼬리);   끝.  그렇지 않으면 (format Num==3 또는 format Num==4) 그리고. (날짜[3]=='' 또는 날짜[3]~=제로) 그리고나서   현지의 스트레이트 = .get Current Frame(전류 프레임)():callParser 기능( "#시간", { 'Y-m-d', 데이터} )   현지의 VEC = {스트레이트:경기( ^(%d%d?%d?%d?)-(%d%d?)-(%d%d?)-(%d%d?)$" )}   한다면 VEC 그리고. VEC[1]~=제로 그리고나서    .args[1] = string.format('%04i-%02i-%02i', VEC[1], VEC[2], VEC[3] )    카테고리 = '[카테고리:워드 형식의 날짜]'    돌아가다 p.ISO 날짜();   끝.  끝.   돌아가다 데이터 끝.  기능. p.test_date_module(데이터, 패턴)  -- pattern: regexp - 테스트할 정규 표현, dlen - 날짜 요소 수, tail = "꼬리" 요소인 경우   현지의 날짜 = {'','','','','',''}  현지의 꼬리 = ''  현지의 VEC, 쓰다듬다  현지의 format Num = 0  위해서 i, 쓰다듬다  아이페어( 패턴 ) 하다   VEC = {데이터:경기( 쓰다듬다.regexp )}   한다면 VEC 그리고. VEC[1]~=제로 그리고나서    위해서 j=1,쓰다듬다.일람 하다     날짜[j] = VEC[j]    끝.    한다면 쓰다듬다.꼬리>0 그리고. VEC[쓰다듬다.꼬리]~=제로 그리고나서     꼬리 = .스트링.서브(' ' .. VEC[쓰다듬다.꼬리], ' +', ' ')    끝.    format Num = i    브레이크.   끝.  끝.  돌아가다 날짜, 꼬리, format Num 끝.  돌아가다 p