모듈:WingdingEncoding: 두 판 사이의 차이

편집 요약 없음
편집 요약 없음
 
6번째 줄: 6번째 줄:
-- 변환 테이블 정의
-- 변환 테이블 정의
local conversionTable = {
local conversionTable = {
     ["A"] = "✌",
     ["a"] = "✌",
     ["B"] = "👌",
     ["b"] = "👌",
     ["C"] = "👍",
     ["c"] = "👍",
     ["D"] = "👎",
     ["d"] = "👎",
     ["E"] = "☜",
     ["e"] = "☜",
     ["F"] = "☞",
     ["f"] = "☞",
     ["G"] = "☝",
     ["g"] = "☝",
     ["H"] = "☟",
     ["h"] = "☟",
     ["I"] = "✋",
     ["i"] = "✋",
     ["J"] = "☺",
     ["j"] = "☺",
     ["K"] = "😐",
     ["k"] = "😐",
     ["L"] = "☹",
     ["l"] = "☹",
     ["M"] = "💣",
     ["m"] = "💣",
     ["N"] = "☠",
     ["n"] = "☠",
     ["O"] = "⚐",
     ["o"] = "⚐",
     ["P"] = "🏱",
     ["p"] = "🏱",
     ["Q"] = "✈",
     ["q"] = "✈",
     ["R"] = "☼",
     ["r"] = "☼",
     ["S"] = "💧",
     ["s"] = "💧",
     ["T"] = "❄",
     ["t"] = "❄",
     ["U"] = "🕆",
     ["u"] = "🕆",
     ["V"] = "✞",
     ["v"] = "✞",
     ["W"] = "🕈",
     ["w"] = "🕈",
     ["X"] = "✠",
     ["x"] = "✠",
     ["Y"] = "✡",
     ["y"] = "✡",
     ["Z"] = "☪",
     ["z"] = "☪",
     ["."] = "📬",
     ["."] = "📬",
     [","] = "📪",
     [","] = "📪",
57번째 줄: 57번째 줄:
     for char in input:gmatch(utf8_charpattern) do
     for char in input:gmatch(utf8_charpattern) do
         local lowerChar = char:lower()  -- 대소문자 구분 없이 소문자로 변환
         local lowerChar = char:lower()  -- 대소문자 구분 없이 소문자로 변환
         result = result .. (conversionTable[lowerChar] or char)
          
        -- 변환 테이블에 존재하면 변환, 없으면 원본 문자 그대로 유지
        if conversionTable[lowerChar] then
            result = result .. conversionTable[lowerChar]
        else
            -- 알파벳인 경우는 그대로 두지 않고 변환된 값 추가
            -- 소문자 알파벳 대응 값 없으면 원본 문자 출력
            if char:match("%a") then
                result = result .. conversionTable[lowerChar] or char
            else
                result = result .. char
            end
        end
     end
     end



2025년 4월 21일 (월) 01:48 기준 최신판

이 모듈에 대한 설명문서는 모듈:WingdingEncoding/설명문서에서 만들 수 있습니다

local p = {}

-- UTF-8 문자 패턴 정의 (Lua 5.1 호환)
local utf8_charpattern = "[%z\1-\127\194-\244][\128-\191]*"

-- 변환 테이블 정의
local conversionTable = {
    ["a"] = "✌",
    ["b"] = "👌",
    ["c"] = "👍",
    ["d"] = "👎",
    ["e"] = "☜",
    ["f"] = "☞",
    ["g"] = "☝",
    ["h"] = "☟",
    ["i"] = "✋",
    ["j"] = "☺",
    ["k"] = "😐",
    ["l"] = "☹",
    ["m"] = "💣",
    ["n"] = "☠",
    ["o"] = "⚐",
    ["p"] = "🏱",
    ["q"] = "✈",
    ["r"] = "☼",
    ["s"] = "💧",
    ["t"] = "❄",
    ["u"] = "🕆",
    ["v"] = "✞",
    ["w"] = "🕈",
    ["x"] = "✠",
    ["y"] = "✡",
    ["z"] = "☪",
    ["."] = "📬",
    [","] = "📪",
    ["?"] = "✍",
    ["!"] = "✏",
    ["("] = "☎",
    [")"] = "✆",
    ["'"] = "🕯",
    ["\""] = "✂",
    ["~"] = "❞"
}

-- 변환 함수
function p.convert(frame)
    -- 입력값 확인: input= 키와 첫 번째 위치값 처리
    local input = frame.args[1] or frame.args.input or ""
    
    -- 입력값이 비었을 경우 에러 반환
    if input == "" then
        return "Error: No input provided."
    end

    -- 변환 작업
    local result = ""
    for char in input:gmatch(utf8_charpattern) do
        local lowerChar = char:lower()  -- 대소문자 구분 없이 소문자로 변환
        
        -- 변환 테이블에 존재하면 변환, 없으면 원본 문자 그대로 유지
        if conversionTable[lowerChar] then
            result = result .. conversionTable[lowerChar]
        else
            -- 알파벳인 경우는 그대로 두지 않고 변환된 값 추가
            -- 소문자 알파벳 대응 값 없으면 원본 문자 출력
            if char:match("%a") then
                result = result .. conversionTable[lowerChar] or char
            else
                result = result .. char
            end
        end
    end

    return result
end

return p