본문으로 이동

모듈:category tree/modules

위키낱말사전, 말과 글의 누리

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

local labels = {}
local raw_categories = {}
local raw_handlers = {}

local insert = table.insert
local pattern_escape = require("Module:string utilities").pattern_escape

-----------------------------------------------------------------------------
--                                                                         --
--                                  레이블                                 --
--                                                                         --
-----------------------------------------------------------------------------


labels["모듈"] = {
	description = "항목을 생성하고 관리하기 위한 Lua 코드를 포함하는 {{{langname}}} [[위키낱말사전:모듈|모듈]].",
	umbrella = {
		parents = {{name = "모듈", sort = " "}},
		breadcrumb = "언어별",
	},
	parents = {{name = "{{{langcat}}}", raw = true}},
}

labels["데이터 모듈"] = {
	description = "다른 모듈에서 사용하는 데이터를 포함하는 {{{langname}}} [[위키낱말사전:모듈|모듈]].",
	umbrella = {
		parents = {{name = "데이터 모듈", sort = " "}},
		breadcrumb = "언어별",
	},
	breadcrumb = "데이터",
	parents = {"모듈"},
}

labels["dialect synonyms data modules"] = {
	description = "{{틀|dialect synonyms}}에서 사용하는 데이터를 포함하는 {{{langname}}} [[위키낱말사전:모듈|모듈]].",
	umbrella = {
		parents = {{name = "방언 동의어 데이터 모듈", sort = " "}},
		breadcrumb = "언어별",
	},
	breadcrumb = "방언 동의어",
	parents = {"data modules"},
}

labels["inflection modules"] = {
	description = "활용 및 곡용 변화표 생성을 위한 Lua 코드를 포함하는 {{{langname}}} [[굴절]] [[위키낱말사전:모듈|모듈]].",
	umbrella = {
		parents = {{name = "활용 모듈", sort = " "}},
		breadcrumb = "언어별",
	},
	breadcrumb = "활용",
	parents = {"모듈", {name = "inflection-table templates", sort = " "}},
}

labels["testcase modules"] = {
	description = "다른 모듈을 테스트하기 위한 Lua 코드를 포함하는 {{{langname}}} [[테스트케이스]] [[위키낱말사전:모듈|모듈]].",
	umbrella = {
		parents = {{name = "테스트케이스 모듈", sort = " "}},
		breadcrumb = "언어별",
	},
	breadcrumb = "테스트케이스",
	parents = {"모듈"},
}



-----------------------------------------------------------------------------
--                                                                         --
--                              원시(RAW) 분류                             --
--                                                                         --
-----------------------------------------------------------------------------

--[=[
새 모듈 유형을 올바르게 정의하는 방법:
1. 이동 경로는 일반적으로 부모나 조상으로부터 접미사를 잘라내어 스마트하게 생성되므로 지정할 필요가 없습니다.
2. 모듈 유형은 다른 모듈 유형 아래에 중첩될 수 있지만, 특정 모듈 유형을 쉽게 찾을 수 있도록 '모듈' 바로 아래에 2차 부모로도 나열합니다.
   (이는 분류 중복 금지 원칙에 위배되지만, 편의성을 높입니다.)
]=]

raw_categories["모듈"] = {
	description = "모듈들을 위한 일반적인 최상위 분류입니다.",
	additional = "모듈이 무엇이고 어떻게 작동하는지에 대한 자세한 내용은 [[위키낱말사전:스크립토]]를 참고하십시오. 모든 모듈의 전체 목록은 [[특수:PrefixIndex/모듈:|여기]]에서 볼 수 있습니다.",
	parents = {"분류:위키낱말사전"},
}

raw_categories["미분류 모듈"] = {
	description = "분류되지 않은 모듈.",
	additional = "모듈들은 특정 상황에서 [[모듈:documentation]]에 의해 여기에 분류됩니다. 자세한 내용은 해당 모듈의 설명 문서를 참고하십시오.",
	parents = { {name = "모듈", sort = " "} },
}

raw_categories["부록 모듈"] = {
	preceding = "{{참고|:분류:부록 틀}}",
	description = "부록 이름공간의 문서 내용을 생성하거나 정보를 추출하는 함수를 가진 모듈.",
	parents = { "모듈" },
}

raw_categories["봇 지원 모듈"] = {
	description = "개별 봇 계정을 지원하기 위한 모듈.",
	parents = { "모듈" },
}

raw_categories["분류 모듈"] = {
	preceding = "{{참고|:분류:분류 틀|:분류:분류 틀}}",
	description = "문서에 분류를 추가하거나 분류 문서의 설명과 하위 분류를 생성하는 모듈.",
	parents = { "모듈" },
}

raw_categories["문자 정보 모듈"] = {
	preceding = "{{참고|:분류:문자 정보 틀}}",
	description = "개별 문자에 대한 정보를 포함하거나, 그러한 정보를 생성하는 함수를 가진 모듈.",
	parents = { "모듈" },
}

raw_categories["문자 입력 모듈"] = {
	preceding = "{{참고|:분류:문자 입력 틀}}",
	description = "대부분의 키보드 자판에 없는 문자를 더 쉽게 입력하는 방법을 제공하는 틀을 구현하는 모듈.",
	parents = { "문서 생성 모듈", "모듈" },
}

raw_categories["컬렉션 모듈"] = {
	description = "컬렉션(배열, 맵 등)을 구현하는 데 사용되는 함수를 포함하는 모듈.",
	parents = { "유틸리티 모듈", "모듈" },
}

raw_categories["데이터 모듈"] = {
	description = "함수를 포함하지 않고, 다른 모듈에서 사용되는 데이터 테이블만 내보내는(export) 모듈.",
	additional = "이 분류에 속한 모듈은 <code>require</code> 대신 <code>mw.loadData</code>를 사용하여 가져와야 합니다.",
	parents = { "모듈" },
}

raw_categories["분류 트리 데이터 모듈"] = {
	preceding = "{{참고|:분류:언어별 분류 트리 데이터 모듈|:분류:주제별 분류 트리 데이터 모듈}}",
	description = "분류의 설명을 구성하기 위해 분류 트리 시스템에서 사용하는 데이터와 코드를 포함하는 [[위키낱말사전:모듈|모듈]].",
	parents = { "데이터 모듈", "분류 모듈" },
}

raw_categories["언어별 분류 트리 데이터 모듈"] = {
	preceding = "{{참고|:분류:분류 트리 데이터 모듈|:분류:주제별 분류 트리 데이터 모듈}}",
	description = "언어별 분류의 설명을 구성하기 위해 분류 트리 시스템에서 사용하는 데이터와 코드를 포함하는 [[위키낱말사전:모듈|모듈]].",
	breadcrumb = "언어",
	parents = { {name = "분류 트리 데이터 모듈", sort = "언어"} },
}

raw_categories["주제별 분류 트리 데이터 모듈"] = {
	preceding = "{{참고|:분류:분류 트리 데이터 모듈|:분류:언어별 분류 트리 데이터 모듈}}",
	description = "주제 분류의 설명을 구성하기 위해 분류 트리 시스템에서 사용하는 데이터와 코드를 포함하는 [[위키낱말사전:모듈|모듈]].",
	breadcrumb = "주제",
	parents = { {name = "분류 트리 데이터 모듈", sort = "주제"} },
}

raw_categories["문자 입력 데이터 모듈"] = {
	preceding = "{{참고|:분류:문자 입력 틀}}",
	description = "{{틀|chars}}에서 사용하기 위한 데이터를 포함하는 모듈.",
	parents = { "데이터 모듈", "문자 입력 모듈" },
}

raw_categories["방언 동의어 데이터 모듈"] = {
	preceding = "{{참고|:분류:문자 입력 틀}}",
	description = "{{틀|dialect synonyms}}에서 사용하기 위한 데이터를 포함하는 모듈.",
	parents = { "데이터 모듈" },
}

raw_categories["날짜 모듈"] = {
	description = "다양한 달력 체계의 날짜를 변환하거나 조작하는 기능을 구현하는 모듈.",
	parents = { "유틸리티 모듈", "모듈" },
}

raw_categories["디버깅 모듈"] = {
	description = "디버깅에 사용되는 모듈.",
	additional = "일부는 샌드박스 모듈에서만 사용하거나, 모듈 및 틀 편집 화면의 " ..
	"[[mw:Extension:TemplateSandbox|{{MediaWiki:Templatesandbox-editform-legend}}]] 버튼을 사용할 때만 사용해야 합니다.",
	parents = { "모듈" },
}

raw_categories["정의 모듈"] = {
	preceding = "{{참고|:분류:정의 틀}}",
	description = "항목의 [[위키낱말사전:용어 사전#정의줄|정의줄]]에 사용되는 틀을 구현하는 모듈.",
	parents = { "문서 생성 모듈", "모듈" },
}

raw_categories["사용되지 않는 모듈"] = {
	description = "새로운 모듈이 그 기능을 수행하므로 더 이상 사용해서는 안 되는 모듈.",
	parents = { "모듈", "분류:위키낱말사전 관리" },
}

raw_categories["토론 모듈"] = {
	preceding = "{{참고|:분류:토론 틀}}",
	description = "토론 문서와 관련된 모듈.",
	parents = { "모듈" },
}

raw_categories["표시 텍스트 생성 모듈"] = {
	description = "표시 텍스트를 생성하는 데 사용되는 모듈.",
	additional = "표시 텍스트는 독자에게 보이는 것을 결정합니다. 일부 언어에서는 혼동 가능한 문자로 인한 일반적인 오류 때문에, 또는 일관된 표시 형식을 보장하기 위해 정규화되어야 합니다.",
	parents = { "모듈" },
}

raw_categories["설명문서 모듈"] = {
	preceding = "{{참고|:분류:설명문서 틀}}",
	description = "설명 문서를 생성하기 위한 모듈.",
	parents = { "모듈" },
}

raw_categories["인코딩 모듈"] = {
	description = "서로 다른 텍스트 인코딩 간의 변환을 위한 모듈.",
	parents = { "유틸리티 모듈", "모듈" },
}

raw_categories["항목 생성 모듈"] = {
	preceding = "{{참고|:분류:항목 틀}}",
	description = "새 항목을 생성하는 데 사용되는 함수를 가진 모듈.",
	parents = { "모듈" },
}

raw_categories["항목명 생성 모듈"] = {
	description = "링크나 표제어의 형태와 비교하여 특정 발음 구별 기호가 제거된 항목명을 생성하는 모듈.",
	parents = { "모듈" },
}

raw_categories["외부 링크 모듈"] = {
	preceding = "{{참고|:분류:외부 링크 틀}}",
	description = "[[:분류:외부 링크 틀|외부 링크 틀]]에서 사용되는 모듈, 즉 미디어위키 재단 외부의 웹사이트로 링크하는 모듈.",
	parents = { "문서 생성 모듈", "모듈" },
}

raw_categories["어원 모듈"] = {
	preceding = "{{참고|:분류:어원 틀}}",
	description = "항목의 어원을 정의하는 틀을 구현하는 모듈.",
	parents = { "문서 생성 모듈", "모듈" },
}

raw_categories["활용형 모듈"] = {
	preceding = "{{참고|:분류:활용형 틀}}",
	description = "동사 활용형이나 명사 격변화형과 같은 비표제어 형태의 정의줄을 생성하는 모듈.",
	parents = { "정의 모듈", "문서 생성 모듈", "모듈" },
}

raw_categories["표제어줄 모듈"] = {
	preceding = "{{참고|:분류:표제어줄 틀}}",
	description = "특정 언어의 [[:분류:언어별 표제어줄 틀|표제어줄 틀]]을 지원하는 모듈.",
	additional = "[[:분류:표제어줄 틀]]도 참고하십시오.",
	parents = { "문서 생성 모듈", "모듈" },
}

raw_categories["활용 모듈"] = {
	description = "특정 언어의 [[:분류:언어별 활용표 틀|활용 틀]]을 지원하는 데 사용되는 모듈.",
	parents = { "문서 생성 모듈", "모듈" },
}

raw_categories["내부 링크 모듈"] = {
	preceding = "{{참고|:분류:내부 링크 틀}}",
	description = "[[:분류:내부 링크 틀|내부 링크 틀]], 즉 위키낱말사전 항목 간을 연결하는 틀에서 사용되는 모듈.",
	parents = { "문서 생성 모듈", "모듈" },
}

raw_categories["인터위키 모듈"] = {
	preceding = "{{참고|:분류:인터위키 틀}}",
	description = "[[:분류:인터위키 틀|인터위키 틀]], 즉 다른 미디어위키 프로젝트로 링크하는 틀에서 사용되는 모듈.",
	parents = { "문서 생성 모듈", "모듈" },
}

raw_categories["JSON 생성 모듈"] = {
	description = "JSON 형식으로 데이터를 생성하는 함수를 가진 모듈.",
	parents = { "모듈" },
}

raw_categories["언어 및 문자 체계 모듈"] = {
	description = "언어 및 문자 체계 코드를 처리하고 관련 데이터를 반환하는 모듈.",
	parents = { "모듈" },
}

raw_categories["목록 모듈"] = {
	preceding = "{{참고|:분류:목록 틀}}",
	description = "항목 목록이나 다른 구조화된 데이터의 목록, 표, 트리 다이어그램을 생성하는 모듈.",
	parents = { "문서 생성 모듈", "모듈" },
}

raw_categories["관리 모듈"] = {
	preceding = "{{참고|:분류:관리 틀}}",
	description = "항목 관리에 사용되는 틀을 구현하는 모듈.",
	additional = "예시로는 {{틀|주의}}, {{틀|삭제 요청}}, {{틀|검증 요청}}과 같은 정리 틀이 있습니다.",
	parents = { "모듈" },
}

raw_categories["숫자 모듈"] = {
	preceding = "{{참고|:분류:숫자 틀}}",
	description = "다양한 표현 방식의 숫자 및 수사 변환 및/또는 서식 지정을 처리하는 모듈.",
	parents = { "유틸리티 모듈", "모듈" },
}

raw_categories["문서 생성 모듈"] = {
	description = "주 이름공간 문서의 일부(예: 표제어줄, 정의, 활용, 링크 등)를 생성하는 모듈.",
	parents = { "모듈" },
}

raw_categories["매개변수 파싱 모듈"] = {
	description = "틀 매개변수를 파싱하는 데 사용되는 함수를 포함하는 모듈.",
	parents = { "유틸리티 모듈", "모듈" },
}

raw_categories["발음 모듈"] = {
	preceding = "{{참고|:분류:발음 틀}}",
	description = "항목의 언어별 발음을 만드는 데 사용되는 틀을 구현하는 모듈.",
	parents = { "문서 생성 모듈", "모듈" },
}

raw_categories["발음 테스트케이스 모듈"] = {
	description = "다른 발음 모듈을 테스트하는 데 사용되는 모듈.",
	parents = { "테스트케이스 모듈", {name = "발음 모듈", sort = "테스트케이스"} },
}

raw_categories["인용 및 용례 모듈"] = {
	description = "인용 및 용례 서식을 지정하는 데 사용되는 틀을 구현하는 모듈.",
	parents = { "정의 모듈", "문서 생성 모듈", "모듈" },
}

raw_categories["참고 문헌 모듈"] = {
	preceding = "{{참고|:분류:참고 문헌 틀}}",
	description = "[[:분류:참고 문헌 틀|참고 문헌 틀]]에 사용되는 모듈.",
	parents = { "문서 생성 모듈", "모듈" },
}

raw_categories["연습장 모듈"] = {
	description = "운영용 모듈의 테스트 버전.",
	parents = { "모듈" },
}

raw_categories["의미 관계 모듈"] = {
	preceding = "{{참고|:분류:의미 관계 틀}}",
	description = "특정 의미와 의미적으로 관련된 다른 낱말(예: [[동의어]] 또는 [[반의어]])을 나타내는 데 사용되는 틀을 구현하는 모듈.",
	parents = { "문서 생성 모듈", "모듈" },
}

raw_categories["수어 모듈"] = {
	description = "수어에 사용되는 모듈.",
	parents = { "모듈" },
}

raw_categories["정렬 키 생성 모듈"] = {
	description = "분류에서 항목 이름의 순서를 결정하는 정렬 키를 생성하는 모듈.",
	parents = { "모듈" },
}

raw_categories["문자열 모듈"] = {
	description = "문자열을 조작하는 데 사용되는 함수를 포함하는 모듈.",
	parents = { "유틸리티 모듈", "모듈" },
}

raw_categories["스와데시 목록 모듈"] = {
	description = "[[스와데시 목록]]을 포함하는 모듈.",
	parents = { "모듈" },
}

raw_categories["틀 인터페이스 모듈"] = {
	description = "틀과 모듈의 함수 간의 인터페이스를 제공하는 목적의 모듈.",
	additional = "이름은 보통 <code>.../templates</code>로 끝나며, 내부에 있는 함수는 보통 \"frame\" 매개변수만 가집니다.",
	parents = { "모듈" },
}

raw_categories["테스트케이스 모듈"] = {
	description = "다른 모듈을 테스트하는 데 사용되는 모듈.",
	parents = { "모듈" },
}

raw_categories["실패한 테스트케이스 모듈"] = {
	description = "단위 테스트에 실패한 항목을 포함하는 모듈.",
	additional = "테스트 케이스가 실패하면 [[모듈:UnitTests]]에 의해 이 분류가 자동으로 추가됩니다.",
	parents = { "테스트케이스 모듈" },
}

raw_categories["추적 모듈"] = {
	description = "추적 틀을 추가하는 모듈.",
	parents = { "디버깅 모듈", "모듈" },
}

raw_categories["음역 모듈"] = {
	description = "한 문자 체계의 텍스트를 다른 문자 체계로 자동 변환하는 모듈.",
	additional = "대부분은 비라틴 문자를 라틴 문자로 변환(로마자 표기법)하며, 특정 언어로 태그된 텍스트의 음역을 생성하기 위해 틀이나 모듈에서 사용됩니다. 각 언어의 음역 모듈은 해당 데이터 테이블에 지정됩니다 (관련 분류는 {{catlink|언어 데이터 모듈}} 참고).",
	parents = { "모듈" },
}

raw_categories["음역 테스트케이스 모듈"] = {
	description = "다른 음역 모듈을 테스트하는 데 사용되는 모듈.",
	parents = { "테스트케이스 모듈", {name = "음역 모듈", sort = "테스트케이스"} },
}

raw_categories["사용되지 않는 모듈"] = {
	description = "사용되지 않는 모듈.",
	parents = { "모듈" },
}

raw_categories["사용자 샌드박스 모듈"] = {
	description = "개별 편집자의 개인적인 사용 및 테스트를 위한 모듈.",
	additional = "이들은 모두 <code>사용자:</code>와 사용자 이름으로 시작해야 합니다. 단일 사용자가 여러 샌드박스 모듈을 필요로 하는 경우 하위 문서를 만들 수 있습니다. 이러한 모듈은 실제 위키낱말사전 콘텐츠 문서에서 사용되어서는 안 됩니다.",
	parents = { "샌드박스 모듈", "모듈" },
}

raw_categories["유틸리티 모듈"] = {
	description = "다양한 항목에서 일종의 유틸리티 목적으로 사용되는 모듈.",
	additional = "이 분류에 직접 분류하지 말고, 더 구체적이고 의미적으로 잘 정의된 모듈 분류 중 하나를 사용하십시오. 또한 여러 언어에서 사용되는 모듈은 필요한 경우 이 분류에 직접 포함되어야 하며, 한 언어에서만 사용되는 모듈은 [[:분류:특정 언어용 유틸리티 모듈]]에 있어야 합니다.",
	parents = { "모듈" },
}

raw_categories["특정 언어용 유틸리티 모듈"] = {
	description = "특정 언어에 필요한 여러 유틸리티를 다루는 모듈.",
	additional = "보통 이름이 {{cd|-utilities}} 또는 {{cd|-common}}으로 끝나지만(언어 코드가 앞에 붙음), 한 언어가 사용하는 더 구체적인 유틸리티 모듈도 여기에 있을 수 있습니다. 여러 언어에서 사용되는 유틸리티는 [[:분류:유틸리티 모듈]]에 있어야 합니다.",
	parents = {{name = "유틸리티 모듈", sort = " "}},
}

raw_categories["투표 모듈"] = {
	description = "위키낱말사전 투표를 관리하는 데 사용되는 모듈.",
	parents = { "모듈" },
}

raw_categories["위키텍스트 파싱 모듈"] = {
	description = "문서의 위키텍스트를 가져와 문자열 작업을 수행하여 정보를 얻는 함수를 포함하는 모듈.",
	parents = { "모듈" },
}

-- 처리 중에 `raw_categories`를 수정하면 일부 항목을 건너뛸 수 있으므로, 새 분류를 임시 테이블에 저장.
local new_cats = {}
for raw_cat, obj in pairs(raw_categories) do
	local by_script = raw_cat .. " (스크립트별)"
	if raw_cat ~= "모듈" and raw_cat ~= "데이터 모듈" and not raw_categories[by_script] then
		new_cats[by_script] = {
			description = raw_cat .. ", 작동 대상 또는 함께 사용되는 스크립트별로 분류됨.",
			additional = raw_cat .. "은(는) " .. mw.getContentLanguage():lcfirst(obj.description),
			breadcrumb = "스크립트별",
			parents = {{name = raw_cat, sort = " "}},
		}
	end
end
for new_cat, obj in pairs(new_cats) do
	raw_categories[new_cat] = obj
end


-----------------------------------------------------------------------------
--                                                                         --
--                              원시(RAW) 핸들러                           --
--                                                                         --
-----------------------------------------------------------------------------


for _, mod_type_ko in ipairs {"항목명 생성", "정렬 키 생성", "음역"} do
	local mod_type_en
	if mod_type_ko == "항목명 생성" then mod_type_en = "Entry name-generating"
	elseif mod_type_ko == "정렬 키 생성" then mod_type_en = "Sortkey-generating"
	else mod_type_en = "Transliteration" end
	
	insert(raw_handlers, function(data)
		local n, suffix_s = data.category:match(("^([0-9]+)개 언어에서 사용하는 %s 모듈$"):format(mod_type_ko))
		if not n then return end
		
		local suffix = (n == "1" and "" or "s")
		return {
			breadcrumb = ("%d개 언어에서 사용"):format(n),
			description = data.category .. ".",
			can_be_empty = true,
			parents = {
				{name = ("%s modules"):format(mod_type_en), sort = require("Module:category tree").numeral_sortkey(n)},
			},
		}
	end)
end


-- 부모(또는 부모의 부모 등)를 레이블 끝에서 잘라내어 이동 경로를 자동으로 생성.
for key, data in pairs(raw_categories) do
	if not data.breadcrumb then
		local parent = data.parents[1]
		while true do
			if type(parent) == "string" then
				local parent_re = " " .. pattern_escape(mw.getContentLanguage():lcfirst(parent)) .. "$"
				if key:find(parent_re) then
					data.breadcrumb = key:gsub(parent_re, "")
					break
				end
				if raw_categories[parent] then
					parent = raw_categories[parent].parents[1]
				else
					break
				end
			else
				break
			end
		end
	end
end


return {LABELS = labels, RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers}