모듈:IPAddress/샌드박스
Module| 모듈 샌드박스 페이지는 다음과 같습니다.IPAddress(diff). 테스트 케이스에 대해서는, 부속의 서브 페이지도 참조해 주세요(실행). |
| 이 Lua 모듈은 MediaWiki에서 사용됩니다.새로운 기사 텍스트 및 미디어 위키:차단 텍스트 이를 변경하면 Wikipedia 사용자 인터페이스가 즉시 변경될 수 있습니다. 중대한 중단을 방지하려면 모듈의 /sandbox 또는 /testcase 서브페이지 또는 자체 모듈 샌드박스에서 변경 사항을 테스트해야 합니다.테스트한 변경은 한 번의 편집으로 이 페이지에 추가할 수 있습니다.토크 페이지에서 변경 사항을 논의한 후 구현하십시오. |
함수는 "로컬"이 아니기 때문에 다른 모듈이 이 모듈을 필요로 하고 직접 호출할 수 있습니다.템플릿에서도 함수를 호출할 수 있도록 3개의 작은 스터브 함수를 가진 객체를 반환하여 실제 함수를 호출합니다.
IPv4 의 닷이 있는 10 진표기만 지원됩니다.닷이 있는 16진수, 닷이 있는 8진수 또는 단일 번호 형식은 지원하지 않습니다(IPv4#Address_representations 참조).
모듈에서의 유닛 테스트:IPAddress/테스트 케이스
현지의 p = {} 기능. p._isIpV6(s) 현지의 dcolon, 무리 한다면 유형(s) ~= "문자열' 또는 s:렌() == 0 또는 s:발견하다([^:%x]) -- 콜론과 16진수만 유효한 문자입니다. 또는 s:발견하다("^:[^:]") -- :: 로 시작하거나 종료할 수 있지만, single: 로는 할 수 없습니다. 또는 s:발견하다("[^:]:$") 또는 s:발견하다(":::") 그리고나서 돌아가다 거짓의 끝. s, dcolon = s:서브("::", ":") 한다면 dcolon > 1 그리고나서 돌아가다 거짓의 끝. -- 최대 1 : : s = s:서브("^:?", ":") -- prepend : 필요한 경우 상위 s, 무리 = s:서브(":%x%x?%x?%x?", "") -- 유효한 그룹을 삭제하고 카운트합니다. 돌아가다 ( (dcolon == 1 그리고. 무리 < > 8) 또는 (dcolon == 0 그리고. 무리 == 8) ) 그리고. ( s:렌() == 0 또는 (dcolon == 1 그리고. s == ":") ) --는, 1개의 행잉이 되는 경우가 있습니다.원래의 행잉이 :::로 끝나는 경우. 끝. 기능. p._isIpV4(s) 현지의 기능. 합법적인(n) 돌아가다 (톤수(n) 또는 256) < > 256 그리고. 것은 아니다. n:경기("^0%d") 끝. 한다면 유형(s) ~= "문자열' 그리고나서 돌아가다 거짓의 끝. 현지의 p1, p2, p3, p4 = s:경기("^(%d+)%(%d+)%(%d+)%(%d+)%(%d+)$") 돌아가다 합법적인(p1) 그리고. 합법적인(p2) 그리고. 합법적인(p3) 그리고. 합법적인(p4) 끝. 기능. p._isIp(s) 돌아가다 p._isIpV4(s) 그리고. "4" 또는 p._isIpV6(s) 그리고. "6" 끝. 기능. p._isIpOrRange(s) 현지의 모뎀 = 요구하다('모듈:IP') 현지의 성공., 아이피 = pcall(모뎀.IP 주소.신규, s) 한다면 성공. 그리고나서 돌아가다 'ip' 끝. 성공., 아이피 = pcall(모뎀.서브넷.신규, s) 한다면 성공. 그리고나서 돌아가다 '범위' 끝. 돌아가다 '' 끝. 현지의 기능. 입력(틀) -- 다음 방향 마커 중 하나를 교체한 후 입력 파라미터를 반환합니다. -- LRM : 왼쪽에서 오른쪽으로 마크(U+200E): 16진수 e2 80 8e = 226 128 142 -- LRE : 왼쪽에서 오른쪽으로 삽입 (U+202A): 16진수 e2 80 aa = 226 128 170 -- PDF : POP Directional Formating (U+202C): 16진수 e2 80 ac = 226 128 172 --MediaWiki의 경우는, 다음의 조작이 필요합니다.차단된 텍스트 메시지. 돌아가다 (틀.args[1] 또는 ''):서브('\226\128[\142\170\172]', ' ') -- LRM, LRE, PDF를 공백 구분 기호로 바꿉니다. 끝. 기능. p.IsIpV6(틀) 돌아가다 p._isIpV6(입력(틀)) 그리고. "1" 또는 "0" 끝. 기능. p.ISIpV4(틀) 돌아가다 p._isIpV4(입력(틀)) 그리고. "1" 또는 "0" 끝. 기능. p.아이피(틀) 돌아가다 p._isIp(입력(틀)) 또는 "" 끝. 기능. p.isIpOrRange(틀) -- {{#parames:}IPAddress isIpOrRange x} → 'ip'(IPv4/IPv6) 또는 'range'(CIDR IPv4/IPv6) 또는 ''(표준) 돌아가다 p._isIpOrRange(입력(틀)) 끝. 돌아가다 p