모듈:자동 정렬 테이블

Module

--[[ AutoSortTable: 자동으로 정렬되는 테이블을 만듭니다.   사용방법 : (숨긴 댓글 삭제 후 사용)   {{#제외:AutoSortTable 생성   class = wikable <!-- 테이블 전체의 클래스 --> style = width: 50%; <!-- 테이블 전체에 대한 CSS --> 구분자 = -- <!-- 셀을 구분하기 위해 사용되는 구분자 문자열. 파이프( )는 유효하지 않습니다. --> order = 2, 1 <!-- 정렬 프리퍼런스의 순서는 콤마로 구분된 열 번호 목록을 취합니다. -- > 숫자 = 2 <!-- 숫자 정렬을 사용하는 열.콤마로 구분된 열 번호 목록을 사용합니다. -- > 내림차순 = 1 <!-- 정렬 순서가 내림차순이 되는 열.쉼표로 구분된 콜 번호 목록을 가져옵니다. -- > hidden = 2 <!--표시되지 않는 컬럼.쉼표로 구분된 콜 번호 목록을 가져옵니다. -- > rowheader = 1 <!-- WP에 따라 행 헤더로 출력되는 비각 행의 셀:ACCESS #데이터 테이블.보통 1개뿐이지만,는 콤마로 구분된 콜 번호 목록을 받아들입니다. -- 。 caption = 연령별 주목 인물 <!-- WP별 표 캡션:액세스 --> header = -- Name -- Age <!-- 테이블헤더 --> footer = <!-- 테이블 바닥글(통상은 헤더의 합계 행 또는 중복) --> -- Bob -- 20 <!-- 1행 --> -- Peter -- 35 <!-- 2행 --> -- John -- 35 <!-- 3행 --> -- James -- 50 <!-- 4행 --> background-color: #FFDDD --Henry --45 <!--행5(CSS 포함) --> colstyle = -- text-align:left; -- text-align:right; -- -- -- <!-- CSS는 각 컬럼의 콘텐츠에 사용됩니다.여기서 첫 번째와 두 번째 -->  }} ]]   현지의 _개요 = {}   _개요.만들다 = 기능.()       현지의 args = .args       -- 이름 있는 파라미터       현지의 학급 = args.학급     현지의 스타일. = args.스타일.     현지의 세프 = args.분리기     현지의 주문 = args.주문     현지의 기술하다 = args.내림차순 또는 ""     현지의 노드 = args.숫자 또는 ""     현지의 숨겨져 있다 = args.숨겨져 있다 또는 ""     현지의 머리글자 = args.머리글자     현지의 바닥글 = args.바닥글     현지의 콜스타일 = args.콜스타일     현지의 노젓는 사람 = args.노젓는 사람 또는 ""     현지의 표제 = args.표제       -- 자주 사용하는 기능       현지의 strIndexOf = .스트링.발견하다     현지의 스플릿 = .본문.분열되다     현지의 strSub = .스트링.후보선수     현지의 스트림 = .본문.다듬다       현지의 켜다 = #세프     현지의 nsort 룩업, desc 룩업, 숨김 검색, 행헤딩 = {}, {}, {}, {}       -- 테이블을 만듭니다.       현지의 html = .html.만들다()     현지의 테이블 = html:태그('테이블')     한다면 학급 그리고나서 테이블:특성('클래스, 학급) 끝.     한다면 스타일. 그리고나서 테이블:특성('스타일', 스타일.) 끝.     한다면 표제 그리고나서      현지의 기능 = 테이블:태그('실패')      기능:위키텍스트(표제)     끝.      -- 행 문자열을 해석합니다.'key' 매개 변수는 동일한 행에 정렬 오류가 발생하지 않도록 결과에 고유한 키를 할당하는 데 사용됩니다.     현지의 해석 = 기능.(s, 열쇠)         현지의 css         현지의 첫 번째 셉 = strIndexOf(s, 세프, 1, 진실의)         한다면 첫 번째 셉 == 1 그리고나서  -- CSS 없음             css = 제로             s = strSub(s, 켜다 + 1, -1)         또 다른   -- 첫 번째 구분자 앞의 CSS             css = strSub(s, 1, 첫 번째 셉 - 1)             s = strSub(s, 첫 번째 셉 + 켜다, -1)         끝.         돌아가다 {열쇠 = 열쇠, css = css, 데이터. = 스플릿(s, 세프, 진실의)}     끝.       --[[ 테이블에 행을 씁니다. css: 행에 적용할 CSS 데이터:행의 데이터(셀) _type: 'header', 'footer' 또는 0일 수 있습니다. ]]     현지의 writeHtml = 기능.(css, 데이터., _타입)         현지의 배를 젓다 = 테이블:태그('tr')         한다면 css 그리고나서 배를 젓다:특성('스타일', 스트림(css)) 끝.           위해서 i, v 에서 아이페어(데이터.) 하다             한다면 것은 아니다. 숨김 검색[i] 그리고나서                 현지의 감방                 한다면 _타입 == '실패' 그리고나서                     -- 헤더: scope="col"과 함께 'th' 태그를 사용합니다.                     감방 = 배를 젓다:태그('th')                     감방:특성('실패', 'col')                 그렇지 않으면 _타입 == '실패' 그리고나서                     -- 바닥글: 테이블을 사용자가 정렬할 수 있도록 정렬하지 않도록 '아래'로 표시합니다.                     -- 「불가능한 정렬 가능」클래스와 함께                     감방 = 배를 젓다:태그('실패')                     감방:특성('클래스, '밑바닥')                 또 다른                  한다면 행헤딩[i] 그리고나서                   -- 셀은 행 제목입니다.                      감방 = 배를 젓다:태그('th')                      감방:특성('실패', )                     또 다른                      -- 일반 셀                      감방 = 배를 젓다:태그('실패')                     끝.                     현지의 셀 CSS = 콜스타일 그리고. 콜스타일[i]                     한다면 셀 CSS 그리고나서 감방:특성('스타일', 스트림(셀 CSS)) 끝.   -- 필요에 따라 컬럼 스타일링을 적용합니다.                 끝.                 감방:위키텍스트(스트림(v))             끝.         끝.         돌아가다 배를 젓다     끝.       -- 컬럼 스타일을 해석합니다.     한다면 콜스타일 그리고나서 콜스타일 = 해석(콜스타일, -1).데이터. 끝.       -- 헤더를 먼저 씁니다.     한다면 머리글자 그리고나서         현지의 헤더 데이터 = 해석(머리글자)         writeHtml(헤더 데이터.css, 헤더 데이터.데이터., '실패')     끝.       -- 데이터 해석     현지의 데이터. = {}     위해서 i, v 에서 아이페어(.args) 하다 데이터.[i] = 해석(v, i) 끝.       주문 = 스플릿(주문, '%s*,%s*')     노드 = 스플릿(노드, '%s*,%s*')     기술하다 = 스플릿(기술하다, '%s*,%s*')     숨겨져 있다 = 스플릿(숨겨져 있다, '%s*,%s*')     노젓는 사람 = 스플릿(노젓는 사람, '%s*,%s*')      위해서 i, v 에서 아이페어(주문) 하다 주문[i] = 톤수(v) 끝.     위해서 i, v 에서 아이페어(노드) 하다 nsort 룩업[톤수(v) 또는 -1] = 진실의 끝.     위해서 i, v 에서 아이페어(기술하다) 하다 desc 룩업[톤수(v) 또는 -1] = 진실의 끝.     위해서 i, v 에서 아이페어(숨겨져 있다) 하다 숨김 검색[톤수(v) 또는 -1] = 진실의 끝.     위해서 i, v 에서 아이페어(노젓는 사람) 하다 행헤딩[톤수(v) 또는 -1] = 진실의 끝.      --비교기 함수 정렬.     현지의 정렬 펑크 = 기능.(a, b)         현지의 광고, bd = a.데이터., b.데이터.         위해서 i = 1, #주문 하다             현지의 색인 = 주문[i]             현지의 ai, 바이 = 광고[색인], bd[색인]             한다면 nsort 룩업[색인] 그리고나서                 -- 숫자 정렬.첫 번째 번호를 찾아서 사용합니다.소수점이 허용됩니다.과학적 표기법이 지원되지 않습니다.                 ai = 톤수( (ai:발견하다('.', 1, 진실의) 그리고. ai:경기('[+-]%d*%'%d+') 또는 ai:경기('[+-]- %d+')) 또는 0 )                 바이 = 톤수( (바이:발견하다('.', 1, 진실의) 그리고. 바이:경기('[+-]%d*%'%d+') 또는 바이:경기('[+-]- %d+')) 또는 0 )             끝.             한다면 ai ~= 바이 그리고나서                 한다면 desc 룩업[색인] 그리고나서 돌아가다 ai > 바이 또 다른 돌아가다 ai < > 바이 끝.             끝.         끝.         돌아가다 a.열쇠 < > b.열쇠     끝.     table.displaces(데이터., 정렬 펑크)       -- HTML 출력에 정렬된 데이터를 씁니다.     위해서 i, v 에서 아이페어(데이터.) 하다 writeHtml(v.css, v.데이터., 제로) 끝.       -- 바닥글을 씁니다.     한다면 바닥글 그리고나서         현지의 바닥글 데이터 = 해석(바닥글)         writeHtml(바닥글 데이터.css, 바닥글 데이터.데이터., '실패')     끝.      돌아가다 스트링(html) 끝.  돌아가다 _개요