Модуль : Navbar

≪Википеди≫ ир?кл? энциклопединчи материал

Для документации этого модуля может быть создана страница Модуль:Navbar/doc

local
 p
 =
 {}


local
 getArgs


function
 p
.
_navbar
(
args
)

	local
 titleArg
 =
 1


	if
 args
.
collapsible
 then

		titleArg
 =
 2

		if
 not
 args
.
plain
 then

			args
.
mini
 =
 1

		end

		if
 args
.
fontcolor
 then

			args
.
fontstyle
 =
 'color:'
 ..
 args
.
fontcolor
 ..
 ';'

		end

		args
.
style
 =
 'float:left; text-align:left; width:6em;'

	end


	local
 titleText
 =
 args
[
titleArg
]
 or
 (
':'
 ..
 mw
.
getCurrentFrame
():
getParent
():
getTitle
())

	local
 title
 =
 mw
.
title
.
new
(
mw
.
text
.
trim
(
titleText
),
 'Шаблон'
);


	if
 not
 title
 then

		error
(
'Invalid title '
 ..
 titleText
)

	end


	local
 talkpage
 =
 title
.
talkPageTitle
 and
 title
.
talkPageTitle
.
fullText
 or
 ''
;


	local
 div
 =
 mw
.
html
.
create
():
tag
(
'div'
)

	div

		:
addClass
(
'plainlinks'
)

		:
addClass
(
'hlist'
)

		:
addClass
(
'navbar'
)

		:
cssText
(
args
.
style
)


	if
 args
.
mini
 then
 div
:
addClass
(
'mini'
)
 end


	if
 not
 (
args
.
mini
 or
 args
.
plain
)
 then

		div

			:
tag
(
'span'
)

				:
css
(
'word-spacing'
,
 0
)

				:
cssText
(
args
.
fontstyle
)

				:
wikitext
(
args
.
text
 or
 ''
)

				:
wikitext
(
' '
)

	end


	if
 args
.
brackets
 then

		div

			:
tag
(
'span'
)

				:
css
(
'margin-right'
,
 '-0.125em'
)

				:
cssText
(
args
.
fontstyle
)

				:
wikitext
(
'['
)

				:
newline
();

	end


	local
 ul
 =
 div
:
tag
(
'ul'
);


	ul

		:
tag
(
'li'
)

			:
addClass
(
'nv-view'
)

			:
wikitext
(
'[['
 ..
 title
.
fullText
 ..
 '|'
)

			:
tag
(
args
.
mini
 and
 'abbr'
 or
 'span'
)

				:
attr
(
'title'
,
 'Шаблоне п?х'
)

				:
cssText
(
args
.
fontstyle
)

				:
wikitext
(
args
.
mini
 and
 'п'
 or
 'п?х'
)

				:
done
()

			:
wikitext
(
']]'
)

			:
done
()

		:
tag
(
'li'
)

			:
addClass
(
'nv-talk'
)

			:
wikitext
(
'[['
 ..
 talkpage
 ..
 '|'
)

			:
tag
(
args
.
mini
 and
 'abbr'
 or
 'span'
)

				:
attr
(
'title'
,
 'Шаблоне с?тсе яв'
)

				:
cssText
(
args
.
fontstyle
)

				:
wikitext
(
args
.
mini
 and
 'с'
 or
 'с?тсе яв'
)

				:
done
()

			:
wikitext
(
']]'
);


	if
 not
 args
.
noedit
 then

		ul

			:
tag
(
'li'
)

				:
addClass
(
'nv-edit'
)

				:
wikitext
(
'['
 ..
 title
:
fullUrl
(
'action=edit'
)
 ..
 ' '
)

				:
tag
(
args
.
mini
 and
 'abbr'
 or
 'span'
)

					:
attr
(
'title'
,
 'Шаблоне т?рлет'
)

					:
cssText
(
args
.
fontstyle
)

					:
wikitext
(
args
.
mini
 and
 'т'
 or
 'т?рлет'
)

					:
done
()

				:
wikitext
(
']'
);

	end


	if
 args
.
brackets
 then

		div

			:
tag
(
'span'
)

				:
css
(
'margin-left'
,
 '-0.125em'
)

				:
cssText
(
args
.
fontstyle
)

				:
wikitext
(
']'
)

				:
newline
();

	end


	if
 args
.
collapsible
 then

		div

			:
done
()

		:
tag
(
'span'
)

			:
css
(
'font-size'
,
 '110%'
)

			:
cssText
(
args
.
fontstyle
)

			:
wikitext
(
args
[
1
])

	end


	return
 tostring
(
div
:
done
())

end


function
 p
.
navbar
(
frame
)

	if
 not
 getArgs
 then

		getArgs
 =
 require
(
'Module:Arguments'
).
getArgs

	end

	return
 p
.
_navbar
(
getArgs
(
frame
))

end


return
 p