최근 바뀜
도구
업로드
도움말
길라잡이
위키 문법
특수 문서
문의·신고
디스코드
IP 사용자
216.73.216.135
로그인
모듈:Style 문서 원본 보기
←
모듈:Style
편집
토론
역사
새로고침
주시
역링크
정보
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
-- Module:스타일 local p = {} local function convertValue(val) if not val then return val end if mw.ustring.sub(val, 1, 1) == "$" then val = "var(--" .. mw.ustring.sub(val, 2) .. ")" end return val end -- 단일 속성 매핑 local mapSingle = { c = "color", bg = "background", bgc = "background-color", fs = "font-size", fw = "font-weight", ff = "font-family", lh = "line-height", ls = "letter-spacing", ta = "text-align", w = "width", h = "height", maxw = "max-width", minw = "min-width", p = "padding", pt = "padding-top", pr = "padding-right", pb = "padding-bottom", pl = "padding-left", m = "margin", mt = "margin-top", mr = "margin-right", mb = "margin-bottom", ml = "margin-left", ovf = "overflow", ovfx = "overflow-x", ovfy = "overflow-y", dsp = "display", pos = "position", zi = "z-index", } -- border 방향 매핑 local borderMap = { bd = "border", bdt = "border-top", bdr = "border-right", bdb = "border-bottom", bdl = "border-left", } -- border 스타일 축약 변환 local borderTypeMap = { sld = "solid", dsh = "dashed", dot = "dotted", db = "double", grv = "groove", rdg = "ridge", ins = "inset", ous = "outset", } local function addStyle(list, name, value) if not name or name == "" then return end if not value or value == "" then return end table.insert(list, name .. ":" .. value .. ";") end local function buildBorder(token, cssName, styles) -- token 예: "bd-1px-sld-#000" local parts = mw.text.split(token, "-") -- parts[1] = "bd" 혹은 "bdt" 등. 이미 처리됨. table.remove(parts, 1) local result = {} for _, part in ipairs(parts) do if borderTypeMap[part] then table.insert(result, borderTypeMap[part]) else table.insert(result, part) end end addStyle(styles, cssName, table.concat(result, " ")) end function p.build(frame) local args = frame.args if frame:getParent() then for k, v in pairs(frame:getParent().args) do if (args[k] == nil or args[k] == "") then args[k] = v end end end local spec = args[1] or "" spec = mw.text.trim(spec) if spec == "" then return "" end local styles = {} for _, token in ipairs(mw.text.split(spec, "%s+")) do token = mw.text.trim(token) if token ~= "" then local dashPos = token:find("-") if dashPos then local key = token:sub(1, dashPos - 1) local val = token:sub(dashPos + 1) -- padding/margin 축약(px, py, mx, my) if key == "px" then addStyle(styles, "padding-left", val) addStyle(styles, "padding-right", val) elseif key == "py" then addStyle(styles, "padding-top", val) addStyle(styles, "padding-bottom", val) elseif key == "mx" then addStyle(styles, "margin-left", val) addStyle(styles, "margin-right", val) elseif key == "my" then addStyle(styles, "margin-top", val) addStyle(styles, "margin-bottom", val) -- border 처리 elseif borderMap[key] then buildBorder(token, borderMap[key], styles) else -- 일반 단일 속성 매핑 local cssName = mapSingle[key] if cssName then addStyle(styles, cssName, val) end end end end end return table.concat(styles, " ") end return p
이 문서에 포함된 문서:
모듈:Style/설명문서
(
원본 보기
)
모듈:Style
문서로 돌아갑니다.