. I DICTIOUS hittar du inte bara alla ordboksbetydelser av ordet
, utan du får också veta mer om dess etymologi, dess egenskaper och hur man säger
i singular och plural. Allt du behöver veta om ordet
finns här. Definitionen av ordet
hjälper dig att vara mer exakt och korrekt när du talar eller skriver dina texter. Genom att känna till definitionen av
och andra ord berikar du ditt ordförråd och får tillgång till fler och bättre språkliga resurser.
Dokumentation för denna modul finns på /dok (redigera), /test
Syfte
Kan användas av moduler eller mallar för att länka en textsträng om det är möjligt, annars lämna den olänkad, samt svara på om en textsträng över huvud taget kan länkas. Hanterar specialfall som "", "-" och "?". Används typiskt av grammmatikmoduler men används med fördel av alla typer av mallar och moduler där motsvarande funktionalitet är väntad.
Användning
Från modul:
local lk = require("Modul:link")
local can_create_page = lk.isValidLinkTarget("sidnamn") -- true
local cannot_create_page = lk.isValidLinkTarget("]") -- false
local modified_string = lk.link("sidnamn") -- ]
local unmodified_string = lk.link("]") -- ]
local special_case_1 = lk.link("") --  
local special_case_2 = lk.link("-") -- –
local special_case_3 = lk.link("?") -- ?
local anchor = lk.link("]", sv) -- ]
local anchor_other_text_1 = lk.link("]et", sv) -- ]et
local anchor_other_text_2 = lk.link("]", sv) -- ]
Från mall:
{{#invoke:link|isValidLinkTarget|sidnamn}} -- true
{{#invoke:link|isValidLinkTarget|]}} -- false
{{#invoke:link|link|sidnamn}} -- ]
{{#invoke:link|link|]}} -- ]
{{#invoke:link|link|}} --  
{{#invoke:link|link|-}} -- –
{{#invoke:link|link|?}} -- ?
{{#invoke:link|link|]|sv}} -- ]
{{#invoke:link|link|]et|sv}} -- ]et
{{#invoke:link|link|]|sv}} -- ]
Tester
All tests passed. (refresh)
|
Text |
Expected |
Actual
|
test01_basic:
|
mut.link("ord") |
[] |
[]
|
|
Text |
Expected |
Actual
|
test02_special_cases:
|
mut.link("-") |
– |
–
|
|
mut.link("?") |
? |
?
|
|
mut.link("") |
|
|
|
Text |
Expected |
Actual
|
test03_namespaces:
|
mut.link(":Kategori:Index") |
[[:Kategori:Index]] |
[[:Kategori:Index]]
|
|
mut.link("w:Portal:Huvudsida") |
[[w:Portal:Huvudsida]] |
[[w:Portal:Huvudsida]]
|
|
mut.link(":en:Wiktionary:Main Page") |
[[:en:Wiktionary:Main Page]] |
[[:en:Wiktionary:Main Page]]
|
|
Text |
Expected |
Actual
|
test04_links_with_special_chars:
|
mut.link("abc#åäö") |
[[abc#åäö]] |
[[abc#åäö]]
|
|
mut.link("...") |
[[...]] |
[[...]]
|
|
mut.link("(") |
[[(]] |
[[(]]
|
|
mut.link("\"") |
[["]] |
[["]]
|
|
Text |
Expected |
Actual
|
test05_phrases:
|
mut.link("compound word") |
[[compound word]] |
[[compound word]]
|
|
mut.link("]") |
[[Surt, sa räven]] |
[[Surt, sa räven]]
|
|
mut.link("]") |
[[Surt, sa räven om rönnbären.]] |
[[Surt, sa räven om rönnbären.]]
|
|
mut.link("]") |
[[veni, vidi, vici]] |
[[veni, vidi, vici]]
|
|
Text |
Expected |
Actual
|
test06_multiword:
|
mut.link("ord1, ord2") |
[], [] |
[], []
|
|
mut.link("], ord2") |
[], [] |
[], []
|
|
mut.link("], ord1, ]") |
[[frasord1, frasord2]], [], [] |
[[frasord1, frasord2]], [], []
|
|
Text |
Expected |
Actual
|
test07_already_linked_should_not_double_link:
|
mut.link("]") |
[] |
[]
|
|
mut.link("]") |
[[ord|text]] |
[[ord|text]]
|
|
mut.link("]<sup>1</sup>") |
[]<sup>1</sup> |
[]<sup>1</sup>
|
|
Text |
Expected |
Actual
|
test08_invalid_titles:
|
mut.link(".") |
. |
.
|
|
mut.link("..") |
.. |
..
|
|
mut.link(":") |
: |
:
|
|
mut.link("> abc") |
> abc |
> abc
|
|
Text |
Expected |
Actual
|
test09_anchors:
|
mut.link("]", "en") |
[[ord#Engelska|ord]] |
[[ord#Engelska|ord]]
|
|
mut.link("ord", "en") |
[[ord#Engelska|ord]] |
[[ord#Engelska|ord]]
|
|
mut.link("], ord2", "en") |
[[ord1#Engelska|ord1]], [[ord2#Engelska|ord2]] |
[[ord1#Engelska|ord1]], [[ord2#Engelska|ord2]]
|
|
mut.link("]", "en") |
[[w:ord]] |
[[w:ord]]
|
|
mut.link("]", "en") |
[[Wiktionary:ord]] |
[[Wiktionary:ord]]
|
|
mut.link("]", "en") |
[[mumsa i#Engelska|mumsa i sig]] |
[[mumsa i#Engelska|mumsa i sig]]
|
|
mut.link("]s", "sv") |
[[Sverige#Svenska|Sverige]]s |
[[Sverige#Svenska|Sverige]]s
|
|
mut.link("]", "no") |
[[skratte#Bokmål|skratte]] |
[[skratte#Bokmål|skratte]]
|
|
mut.link("]") |
[[Surt, sa räven|Nåt helt annat]] |
[[Surt, sa räven|Nåt helt annat]]
|
|
mut.link("]") |
[[veni, vidi, vici|nåt helt annat]] |
[[veni, vidi, vici|nåt helt annat]]
|
|
mut.link("]", "en") |
[[Surt, sa räven#Engelska|Nåt helt annat]] |
[[Surt, sa räven#Engelska|Nåt helt annat]]
|
|
mut.link("]", "en") |
[[veni, vidi, vici#Engelska|nåt helt annat]] |
[[veni, vidi, vici#Engelska|nåt helt annat]]
|
|
mut.link("]", "en") |
[[abc▶#Engelska|abc▶]] |
[[abc▶#Engelska|abc▶]]
|
|
mut.link("]", "en") |
[[abc▶#Engelska|abc▶]] |
[[abc▶#Engelska|abc▶]]
|
|
Text |
Expected |
Actual
|
test10_do_add_anchor_even_if_pagename_equals_word:
|
mut.link("link", "en") |
[[link#Engelska|link]] |
[[link#Engelska|link]]
|
|
mut.link("]", "en") |
[[link#Engelska|link]] |
[[link#Engelska|link]]
|
|
mut.link("link, ]", "en") |
[[link#Engelska|link]], [[link#Engelska|link]] |
[[link#Engelska|link]], [[link#Engelska|link]]
|
|
Text |
Expected |
Actual
|
test11_entry_name_should_be_used:
|
mut.link("abdērītānus", "la") |
[[abderitanus#Latin|abdērītānus]] |
[[abderitanus#Latin|abdērītānus]]
|
|
mut.link("]", "la") |
[[abderitanus#Latin|abdērītānus]] |
[[abderitanus#Latin|abdērītānus]]
|
|
mut.link("]", "la") |
[[abderitanus#Latin|madeup]] |
[[abderitanus#Latin|madeup]]
|
|
Text |
Expected |
Actual
|
test12_multiword_with_anchors:
|
mut.link("] ]s", "en") |
[[multiple#Engelska|multiple]] [[word#Engelska|word]]s |
[[multiple#Engelska|multiple]] [[word#Engelska|word]]s
|
|
mut.link("] ]", "la") |
[[abderitanus1#Latin|abdērītānus1]] [[abderitanus2#Latin|abdērītānus2]] |
[[abderitanus1#Latin|abdērītānus1]] [[abderitanus2#Latin|abdērītānus2]]
|
|
mut.link("] ]", "la") |
[[abderitanus1#Latin|madeup1]] [[abderitanus2#Latin|madeup2]] |
[[abderitanus1#Latin|madeup1]] [[abderitanus2#Latin|madeup2]]
|
local lang = require("Modul:lang")
local export = {}
function export.isValidLinkTarget(arg)
local str
if arg == mw.getCurrentFrame() then
local frame = arg
str = frame.args
else
str = arg
end
local success, res = pcall(mw.title.new, str)
return not not res
end
function export.link(arg1, arg2)
local str
local lang_code
if arg1 == mw.getCurrentFrame() then
local frame = arg1
str = frame.args or ""
lang_code = frame.args or ""
else
str = arg1 or ""
lang_code = arg2 or ""
end
local language = lang.hasLanguage(lang_code) and lang.getLanguageUCFirst(lang_code)
while mw.ustring.find(str, "%]*,]*%]%]") do
str = mw.ustring.gsub(str, "(%]*),(]*%]%])", "%1ESCAPE-COMA-EPACSE%2")
end
str = mw.ustring.gsub(str, "%&%#", "ESCAPE-AMPERSAND-HASH-EPACSE");
local strs = mw.text.split(str,"%s*,%s*")
local new_str = ""
for i,s in ipairs(strs) do
local is_special_string = s == "" or s == "-" or s == "?"
s = s == "-" and "–" or s
s = s == "" and " " or s
local should_add_brackets = not is_special_string and export.isValidLinkTarget(s)
local should_add_anchor = not not language
if should_add_brackets then
if should_add_anchor then
s = "]"
else
s = "]"
end
else
if should_add_anchor then
local matches1 = mw.ustring.gmatch(s, "%:%|%#]+)#:%|]+%|:%|]+%]%]")
local matches2 = mw.ustring.gmatch(s, "%:%|%#]+)%|:%|]+%]%]")
local matches3 = mw.ustring.gmatch(s, "%:%|%#]+)%]%]")
for match in matches1 do
local entry_name = lang.getEntryName(lang_code, match)
s = mw.ustring.gsub( s, "%:%|%#]+)#:%|]+(%|:%|]+)%]%]", ("]"),1)
end
for match in matches2 do
local entry_name = lang.getEntryName(lang_code, match)
s = mw.ustring.gsub( s, "%:%|%#]+)(%|:%|]+)%]%]", ("]"),1)
end
for match in matches3 do
local entry_name = lang.getEntryName(lang_code, match)
s = mw.ustring.gsub( s, "%:%|%#]+)%]%]", ("]"),1)
end
end
end
new_str = new_str .. s
if i ~= #strs then
new_str = new_str .. ", "
end
end
new_str = mw.ustring.gsub(new_str, "ESCAPE%-AMPERSAND%-HASH%-EPACSE", "&#");
new_str = mw.ustring.gsub(new_str, "ESCAPE%-HASH%-EPACSE", "#");
new_str = mw.ustring.gsub(new_str, "ESCAPE%-COMA%-EPACSE", ",")
return new_str
end
return export