Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Paste
P2580
Mobile Module:Shortcut
Active
Public
Actions
Authored by
Florian
on Feb 9 2016, 5:11 PM.
Edit Paste
Archive Paste
View Raw File
Subscribe
Mute Notifications
Award Token
Flag For Later
Tags
None
Referenced Files
F3327600: Mobile Module:Shortcut
Feb 24 2016, 5:27 AM
2016-02-24 05:27:50 (UTC+0)
Subscribers
None
--
This
module
implements
{{
shortcut
}}
.
--
Set
constants
local
CONFIG_MODULE
=
'Module:Shortcut/config'
--
Load
required
modules
local
checkType
=
require
(
'libraryUtil'
)
.
checkType
local
yesno
=
require
(
'Module:Yesno'
)
local
p
=
{}
local
function
message
(
msg
,
...
)
return
mw
.
message
.
newRawMessage
(
msg
,
...
):
plain
()
end
local
function
makeCategoryLink
(
cat
)
return
string
.
format
(
'[[
%s
:
%s
]]'
,
mw
.
site
.
namespaces
[
14
]
.
name
,
cat
)
end
function
p
.
_main
(
shortcuts
,
options
,
frame
,
cfg
)
checkType
(
'_main'
,
1
,
shortcuts
,
'table'
)
checkType
(
'_main'
,
2
,
options
,
'table'
,
true
)
options
=
options
or
{}
frame
=
frame
or
mw
.
getCurrentFrame
()
cfg
=
cfg
or
mw
.
loadData
(
CONFIG_MODULE
)
local
isCategorized
=
yesno
(
options
.
category
)
~=
false
--
Validate
shortcuts
for
i
,
shortcut
in
ipairs
(
shortcuts
)
do
if
type
(
shortcut
)
~=
'string'
or
#shortcut < 1 then
error
(
message
(
cfg
[
'invalid-shortcut-error'
],
i
),
2
)
end
end
--
Make
the
list
items
.
These
are
the
shortcuts
plus
any
extra
lines
such
--
as
options
.
msg
.
local
listItems
=
{}
for
i
,
shortcut
in
ipairs
(
shortcuts
)
do
listItems
[
i
]
=
string
.
format
(
'[[
%s
]]'
,
shortcut
)
end
table
.
insert
(
listItems
,
options
.
msg
)
--
Return
an
error
if
we
have
nothing
to
display
if
#listItems < 1 then
local
msg
=
cfg
[
'no-content-error'
]
msg
=
string
.
format
(
'<strong class="error">
%s
</strong>'
,
msg
)
if
isCategorized
and
cfg
[
'no-content-error-category'
]
then
msg
=
msg
..
makeCategoryLink
(
cfg
[
'no-content-error-category'
])
end
return
msg
end
local
root
=
mw
.
html
.
create
()
--
Anchors
local
anchorDiv
=
root
:
tag
(
'div'
)
:
css
(
'position'
,
'relative'
)
:
css
(
'top'
,
'-3em'
)
for
i
,
shortcut
in
ipairs
(
shortcuts
)
do
local
anchor
=
mw
.
uri
.
anchorEncode
(
shortcut
)
anchorDiv
:
tag
(
'span'
):
attr
(
'id'
,
anchor
)
end
root
:
newline
()
--
To
match
the
old
[[
Template
:
Shortcut
]]
--
Shortcut
heading
local
shortcutHeading
do
local
nShortcuts
=
#shortcuts
if
nShortcuts
>
0
then
shortcutHeading
=
message
(
cfg
[
'shortcut-heading'
],
nShortcuts
)
shortcutHeading
=
frame
:
preprocess
(
shortcutHeading
)
shortcutHeading
=
shortcutHeading
..
'
\n
'
end
end
--
Shortcut
box
local
shortcutList
=
root
:
tag
(
'table'
)
:
addClass
(
'shortcutbox noprint'
)
:
css
(
'float'
,
'right'
)
:
css
(
'border'
,
'1px solid #aaa'
)
:
css
(
'background'
,
'#fff'
)
:
css
(
'margin'
,
'.3em .3em .3em 1em'
)
:
css
(
'padding'
,
'3px'
)
:
css
(
'text-align'
,
'center'
)
:
tag
(
'tr'
)
:
tag
(
'th'
)
:
addClass
(
'plainlist'
)
:
css
(
'border'
,
'none'
)
:
css
(
'background'
,
'transparent'
)
:
tag
(
'small'
)
:
wikitext
(
shortcutHeading
)
:
tag
(
'ul'
)
for
i
,
item
in
ipairs
(
listItems
)
do
shortcutList
:
tag
(
'li'
):
wikitext
(
item
)
end
--
Output
an
error
category
if
the
first
shortcut
doesn
't exist
if
isCategorized
and
shortcuts
[
1
]
and
cfg
[
'first-parameter-error-category'
]
then
local
title
=
mw
.
title
.
new
(
shortcuts
[
1
])
if
not
title
or
not
title
.
exists
then
root
:
wikitext
(
makeCategoryLink
(
cfg
[
'first-parameter-error-category'
]))
end
end
return
tostring
(
root
)
end
function
p
.
main
(
frame
)
local
args
=
require
(
'Module:Arguments'
)
.
getArgs
(
frame
,
{
wrappers
=
'Template:Shortcut'
})
--
Separate
shortcuts
from
options
local
shortcuts
,
options
=
{},
{}
for
k
,
v
in
pairs
(
args
)
do
if
type
(
k
)
==
'number'
then
shortcuts
[
k
]
=
v
else
options
[
k
]
=
v
end
end
--
Compress
the
shortcut
array
,
which
may
contain
nils
.
local
function
compressArray
(
t
)
local
nums
,
ret
=
{},
{}
for
k
in
pairs
(
t
)
do
nums
[
#nums + 1] = k
end
table
.
sort
(
nums
)
for
i
,
num
in
ipairs
(
nums
)
do
ret
[
i
]
=
t
[
num
]
end
return
ret
end
shortcuts
=
compressArray
(
shortcuts
)
return
p
.
_main
(
shortcuts
,
options
,
frame
)
end
return
p
Event Timeline
Florian
changed the title of this paste from untitled to
Mobile Module:Shortcut
.
Feb 9 2016, 5:11 PM
2016-02-09 17:11:08 (UTC+0)
Florian
edited the content of this paste.
(Show Details)
Florian
updated the paste's language from
autodetect
to
python
.
Florian
mentioned this in
T122471: Mobile edit icon does not always point to correct section id
.
Tagishsimon
mentioned this in
T193214: Property value requires trailing space; UI prevents values with trailing space being entered
.
Apr 27 2018, 1:52 AM
2018-04-27 01:52:02 (UTC+0)
Log In to Comment