--[[
-- 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 />]] "
..
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