모듈 : Main

위키百科, 우리 모두의 百科事典.

--[[

-- This module produces a link to a main article or articles. It implements the

-- template {{main}}.

-- 

-- If the module is used in category or category talk space, it produces "The

-- main article for this category is xxx". Otherwise, it produces

-- "Main article: xxx".

--]]


local
 mHatnote
 =
 require
(
'Module:Hatnote'
)

local
 mHatlist
 =
 require
(
'Module:Hatnote list'
)

local
 mArguments
 -- lazily initialise

local
 p
 =
 {}


function
 p
.
main
(
frame
)

	mArguments
 =
 require
(
'Module:Arguments'
)

	local
 args
 =
 mArguments
.
getArgs
(
frame
,
 {
parentOnly
 =
 true
})

	local
 pages
 =
 {}

	for
 k
,
 v
 in
 pairs
(
args
)
 do

		if
 type
(
k
)
 ==
 'number'
 then

			local
 display
 =
 args
[
'label '
 ..
 k
]
 or
 args
[
'l'
 ..
 k
]

			local
 page
 =
 display
 and

				string.format
(
'%s|%s'
,
 string.gsub
(
v
,
 '|.*$'
,
 ''
),
 display
)
 or
 v

			pages
[
#
pages
 +
 1
]
 =
 page

		end

	end

	if
 #
pages
 ==
 0
 and
 mw
.
title
.
getCurrentTitle
().
namespace
 ==
 0
 then

		return
 mHatnote
.
makeWikitextError
(

			'文書 이름이 指定되지 않았음'
,

			'틀:本文#誤謬'
,

			args
.
category

		)

	end

	local
 options
 =
 {

		selfref
 =
 args
.
selfref

	}

	return
 p
.
_main
(
pages
,
 options
)

end


function
 p
.
_main
(
args
,
 options
)

	-- Get the list of pages. If no first page was specified we use the current

	-- page name.

	local
 currentTitle
 =
 mw
.
title
.
getCurrentTitle
()

	if
 #
args
 ==
 0
 then
 args
 =
 {
currentTitle
.
text
}
 end

	local
 firstPage
 =
 string.gsub
(
args
[
1
],
 '|.*$'
,
 ''
)

	-- Make the formatted link text

	list
 =
 mHatlist
.
andList
(
args
,
 true
)

	-- Build the text.

	local
 mainForm

	local
 curNs
 =
 currentTitle
.
namespace

	if
 (
curNs
 ==
 14
)
 or
 (
curNs
 ==
 15
)
 then
 --category/talk namespaces

		mainForm
 =
 '이 [[위키百科:分類|分類]]의 本文은 %s입니다.'

	else

		mainForm
 =
 '이 部分의 本文은 %s입니다.'

	end

	mainForm
 =
 "[[파일:Icons8 flat search.svg|18px|링크=|<nowiki />]]&nbsp;"
 ..
 mainForm

	local
 text
 =
 string.format
(
mainForm
,
 list
)

	-- Process the options and pass the text to the _rellink function in

	-- [[Module:Hatnote]].

	options
 =
 options
 or
 {}

	local
 hnOptions
 =
 {

		selfref
 =
 options
.
selfref

	}

	return
 mHatnote
.
_hatnote
(
text
,
 hnOptions
)

end


return
 p